fix(tui): improve tool details and image paste - #378
Merged
Conversation
Signed-off-by: Hari Srinivasan <harisrini21@gmail.com>
Signed-off-by: Hari Srinivasan <harisrini21@gmail.com>
Haz3-jolt
marked this pull request as ready for review
September 5, 2026 14:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Make tool-heavy terminal sessions easier to follow and make image attachment workflows discoverable. This also adds the requested Pi-style clipboard-to-temp-file workflow and the initial
tips.jsoncatalog.Draft pending attached UI screenshots and remaining native-platform verification.
Fixes
Fixes #33
Fixes #35
Fixes #36
Issue #34 is deferred to #380. The scroll-specific changes and tests have been removed from this PR, with the findings and recovery patches retained locally.
Approach
/exportretaining access to complete canonical inputs./attach clearbeside pending attachments. Ctrl+V saves clipboard images to exclusively created, owner-only temporary files and inserts their paths into the draft. Referenced images upload through the existing SDK blob channel on submission; removing a path omits its image. Failed imports restore the draft.ObjC.importcalls are not mistaken for package imports. Existing dependency restrictions remain enforced.No wire or canonical-event schema changes. The daemon still owns session state and blob persistence. No sandbox access to host temporary files is granted to model-selected tools.
How was this tested?
Checks rerun after removing #34
node --test --test-timeout=30000 packages/sdk/test/projector.test.ts packages/tui/test/app.test.ts packages/tui/test/fullscreen.test.ts packages/tui/test/media.test.ts: 62 passed.pnpm check: passed formatting, lint, type checking, build, tests, package boundaries, and generated-file verification. 521 passed, 8 platform-gated skips.git diff --cached --check: passed.node scripts/check-dco.ts 88944a2ea3a557c5d3f5b4b74111eb18ae3138b1 HEAD: passed for both signed commits.uvx --from reuse==6.2.0 reuse lint: the working-directory run reported five pre-existing untracked scratch files without SPDX metadata. Those files were left untouched. The same command against an export of the exact staged Git tree passed with 312/312 files covered.The long-session benchmark was not rerun. Its earlier passing measurements depended on the now-deferred SDK history-copy optimization and are not claimed for this trimmed PR.
Live built Axl verification
The retained scope was retested through the built CLI in a real pseudo-terminal, using Azure
gpt-5.6-lunaand a Bubblewrap-enforced daemon on Linux with Node.js 24.19.0:node /tmp/axl-issue34-retained-live.mjs: passed attachment-removal hints and clearing, four real read calls, compact tool grouping, per-group click expansion/collapse, and Ctrl+O. All four calls had successful canonical results.node /tmp/axl-pi-parity-large-replay.mjs: passed a live replay of the earlier real canonical oversized call at 40 columns. Its 2,486-character input rendered in 47 tool rows with a preview/export hint, without changing canonical input.The unchanged clipboard workflow was previously verified with
node /tmp/axl-clipboard-live-smoke.mjs: a user-provided screenshot became a0600temp file and matching blob, and the real model repliedIMAGE_RECEIVEDwithout needing host/tmptool access. This private-clipboard test was not repeated for the scope reduction.Remaining gaps
No dependencies or lockfile entries changed, so the lockfile audit was not rerun.
Learning
Pi is a read-only behavioral reference, not a source dependency. The implementations are independent and retain Axl's daemon, SDK, sandbox, and canonical-log boundaries.
Checklist
REUSE.toml.Signed-off-bytrailer.CHANGELOG.md.AI assistance
gpt-6-astraviaazure-openai-responses.