Add file and screenshot input for local agents - #39
Open
lvwerra wants to merge 4 commits into
Open
Conversation
lvwerra
marked this pull request as ready for review
August 6, 2026 22:06
lvwerra
pushed a commit
that referenced
this pull request
Aug 7, 2026
Six things from reading a real session in a real pane. **Zoom reaches the reader.** It covers a terminal whose font the zoom keys scale, so a reader that ignored them made the zoom control look broken. The conversation and the reply line scale; the toolbar and the path footer are chrome and stay put. **The prompt band spans the pane.** It reached into the left gutter but stopped at the text column on the right, which is what made it read as a card floating over the answer rather than as the head of it. Full bleed both sides, the meta row tight under the band it belongs to, and daylight between exchanges. **Everything opens on the newest turn.** Reader mode landed at the top of a 400-turn window — scroll through a month to reach the thing you flipped the switch to read. The trace viewer was worse: it opened on page 0. Both land on the last turn now; the viewer does it by the same two-step the prompt nav uses, because row heights start as estimates. **The bottom bar is one height.** The mode toggle was 19px next to 22px keys. **Nothing of the terminal's paints over the reader.** Its covers — `restoring last view…`, `starting claude…`, `stopped · output preserved` — are z-index 4 and the overlay was 3, so a reconnect drew the last terminal screen straight over the conversation, leaving a reader toolbar above a terminal. They are gated off while reading, and the overlay outranks anything the terminal can raise. Reported from dev-3; reproduced by injecting the real cover markup. **One composer, and it is honestly optimistic.** The card and the reader render the same `Composer` — duplicated markup is how one surface quietly gets a feature and the other does not. The seam for PR #39's screenshot input is `onPasteFiles` + `above`; until #39 lands neither surface accepts a pasted image, and wiring both is then one place. While extracting it: the echo was not actually optimistic — it waited for the POST, leaving a beat where the box was still full and nothing had happened. It now goes up first and is withdrawn, text restored, if the send fails.
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.
Summary
Remote agents remain explicitly disabled because they cannot read files stored on the Space.
Limits
Verification
npm testinservernode test/attachments.test.mjsinservernpm run typecheckinwebnpm run test:screenshotsinservernode terminal-ui.test.mjsinservergit diff --cached --checkDesign
The architecture, security model, failure behavior, limits, and manual PDF/DOCX test matrix are documented in
docs/screenshot-input.md.