Add in-app text selection for TUI copy#1
Merged
Conversation
edwin-zvs
force-pushed
the
mouse-selection-toggle
branch
2 times, most recently
from
May 16, 2026 20:00
6154b0b to
f38692f
Compare
edwin-zvs
force-pushed
the
mouse-selection-toggle
branch
5 times, most recently
from
May 16, 2026 20:38
86cd630 to
90297a7
Compare
edwin-zvs
force-pushed
the
mouse-selection-toggle
branch
from
May 16, 2026 20:43
90297a7 to
0dd6934
Compare
This was referenced May 19, 2026
edwin-zvs
added a commit
that referenced
this pull request
Jun 23, 2026
…enabled mode 2004 (#457) Dragging an image into a Claude Code session running inside construct landed the image *path* as literal text instead of an `[image #N]` reference like the native Claude Code CLI produces. Root cause: the client received the drag correctly as a bracketed-paste event from the outer terminal, but forwarded it to the child PTY as raw bytes, dropping the `ESC[200~`/`ESC[201~` framing. Claude Code's drag-image detection (and its multiline-paste guard) only fire on a real bracketed paste, so the path was treated as typed keystrokes. The client already models each child's terminal via vt100, which tracks DEC mode 2004 (`screen.bracketed_paste()`) — it just never consulted it when forwarding a paste. Now `dispatch_paste_text` wraps the payload in the bracketed-paste markers a real terminal would send, but only when the target child currently has mode 2004 enabled (claude/codex/shell do; synth/smith sessions fall back to raw, preserving prior behavior). The closing marker is stripped from the payload first so an embedded `ESC[201~` can't end the paste early. Verified end-to-end against the real claude binary in a PTY: a bracketed-pasted image path renders as `[Image #1]`; the same path sent raw stays literal text. Adds spec 0034.
edwin-zvs
added a commit
that referenced
this pull request
Jun 29, 2026
…g (0053) (#576) Diagnosed from the 'construct improvements' session: after the planning pass declared the task pending, dispatching a subagent moved the task into the "In progress" section and appended a @{session} clip — which changes the block's text and therefore its id. The old id dropped from the pending set before the new id was declared, so the set transiently emptied; the daemon reaped the whole run on that empty, and the agent's follow-up re-declaration of the new id hit a removed run and was a silent no-op. All shimmer vanished. The agent's own narration: "the system won't re-light a settled/new block". Fix #1 — survive transient empty. narrow_program_run / set_program_run_pending no longer remove a run when its pending set empties; program_run_snapshot reports no active run on empty but KEEPS the record so a later declaration revives it. An empty run is reaped only on a terminal owning-session state, the owning session going idle with nothing pending, or the inactivity backstop (note_session_state handles the idle case). Fix #2 — atomic keep_pending. Re-introduce a per-edit ProgramEdit.keep_pending flag: an edit that changes a still-pending block re-adds the resulting block's new id in the SAME narrowing call (anchored on the edit's new_string), so a move/annotate never transiently empties the set and the agent needn't know the post-edit id. The call-level shimmer id-list still handles declaring arbitrary existing blocks (planning pass). Specs 0042 (stop lifecycle: transient empty is not a stop), 0048 (contract: use keep_pending when editing an in-flight block), 0053 (both mechanisms + transient-empty survival). Three new daemon tests; #567/#569 tests unaffected.
4 tasks
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
Test