diff --git a/.changeset/feat-loopback-links-web-tab.md b/.changeset/feat-loopback-links-web-tab.md deleted file mode 100644 index bb95f1219..000000000 --- a/.changeset/feat-loopback-links-web-tab.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"aicodeman": minor ---- - -feat(webview): open `localhost` links from the terminal and the Response Viewer through a proxied web tab - -An agent prints `http://localhost:5173/` and the user taps it on a phone: that address -only exists on the Codeman box, so the link was a guaranteed connection error from any -other device. A loopback link (`localhost`, 127/8, 0.0.0.0, ::1) clicked in -the terminal or in the Response Viewer now opens as a proxied web tab whenever the -Codeman page itself is not on that box — reusing a saved proxied dashboard on the same -origin (with the link's own path opened inside it) or saving one under its host:port. -LAN and tailnet addresses, which the device may reach directly, keep opening in a new -browser tab, and on the box itself every link opens directly. diff --git a/.changeset/fix-claude-viewer-brief-last-turn.md b/.changeset/fix-claude-viewer-brief-last-turn.md deleted file mode 100644 index ce38cec2b..000000000 --- a/.changeset/fix-claude-viewer-brief-last-turn.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"aicodeman": patch ---- - -fix(web): show the whole last turn in the Claude response viewer's brief view - -The eye button rendered `text`, which is one row — the last assistant row — while a -Claude answer is a median of 3 model messages (p90 11) split around tool calls, so the -brief view usually showed the tail of an answer ("Done.") and the substance only after -More. The brief view now asks `GET /api/sessions/:id/last-response?context=turn`, which -returns the assistant messages of the last answered turn, and renders them the way the -full view renders that turn: one badge, then continuation segments. `text` stays the last -assistant row in every mode (agent pollers hash it), a prompt queued after the answer does -not blank the view, and readers without turns (Codex, the pane parser, an older server) -keep their single card. diff --git a/CHANGELOG.md b/CHANGELOG.md index fe212e0e9..2f8f9d6ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # aicodeman +## 1.27.0 + +### Minor Changes + +- d9eeb03: feat(webview): open `localhost` links from the terminal and the Response Viewer through a proxied web tab + + An agent prints `http://localhost:5173/` and the user taps it on a phone: that address + only exists on the Codeman box, so the link was a guaranteed connection error from any + other device. A loopback link (`localhost`, 127/8, 0.0.0.0, ::1) clicked in + the terminal or in the Response Viewer now opens as a proxied web tab whenever the + Codeman page itself is not on that box — reusing a saved proxied dashboard on the same + origin (with the link's own path opened inside it) or saving one under its host:port. + LAN and tailnet addresses, which the device may reach directly, keep opening in a new + browser tab, and on the box itself every link opens directly. + +### Patch Changes + +- bd61735: fix(web): show the whole last turn in the Claude response viewer's brief view + + The eye button rendered `text`, which is one row — the last assistant row — while a + Claude answer is a median of 3 model messages (p90 11) split around tool calls, so the + brief view usually showed the tail of an answer ("Done.") and the substance only after + More. The brief view now asks `GET /api/sessions/:id/last-response?context=turn`, which + returns the assistant messages of the last answered turn, and renders them the way the + full view renders that turn: one badge, then continuation segments. `text` stays the last + assistant row in every mode (agent pollers hash it), a prompt queued after the answer does + not blank the view, and readers without turns (Codex, the pane parser, an older server) + keep their single card. + ## 1.26.2 ### Patch Changes diff --git a/package-lock.json b/package-lock.json index 913996ea9..c2cd85d6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aicodeman", - "version": "1.26.2", + "version": "1.27.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aicodeman", - "version": "1.26.2", + "version": "1.27.0", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index effa33ddf..19704dbd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aicodeman", - "version": "1.26.2", + "version": "1.27.0", "description": "Mission control for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence", "type": "module", "main": "dist/index.js",