Repository navigation
Add literal desktop insertion with reserved clipboard ownership - #67
Merged
Merged
Conversation
This was referenced Oct 5, 2026
This was referenced Oct 5, 2026
iamnbutler
marked this pull request as ready for review
October 5, 2026 14:30
This was referenced Oct 5, 2026
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.
Adds
desktop_insertfor literal Unicode and multiline text at the observed caret or selection. One GUI-owned plain-text paste preserves the exact process/window/editor binding, native operation lane, snapshot lease, and shared clipboard gate. Newlines never become synthesized Enter keys, and input has no automatic retry or typing fallback.The GUI privately preserves bounded prior clipboard contents and restores them only when the paste key was never sent or the intended edit was observed. Uncertain delivery retains content-free ownership metadata in the existing gate so another automated paste cannot replace a pending payload. Exact receiver evidence or termination of its original process generation resolves ownership; GUI restart does not silently clear it. Delivery, consumption, clipboard cleanup, and ownership are reported separately.
Ace's rich-text composer also preserves plain-text line breaks as
hard_breaknodes, including blank and edge lines, instead of converting newline runs into paragraphs. Plain-text copying retains those breaks. Rich HTML and code-block paste retain their existing paths. This fixes the actual-composer mismatch without weakening native exact-text verification.Refs #65, #8, #76, and #78. Public clipboard tools remain separate in #75.
Validation
Final head
eff5e49d326264c8d9bf34f12e4378b8796f640f, integrated withfeat/github-cacheat68b4a3f:Other applications may transform pasted text; an unmatched edit remains unknown with ownership reserved. Direct native-client death, GUI crash/restart during pending input, new hosted insertion coverage, and another physical machine remain broader work in #78/#8. The direct two-client ownership check is not presented as a two-channel test.
Built in Ace
Git/GitHub, builds, checks, React Doctor, and diff review used Ace terminals and its changes/patch APIs. Codex inspected/edited source and prepared disposable validation helpers because native Codex integration (#9) and Ace's file editor (#22) remain open. Codex computer use launched/focused the isolated apps, prepared the synthetic draft, and performed explicit cleanup; the behavior under test ran through Ace's signed native bridge and real channel tools. Validation used real macOS receivers and provider credentials, with no mocks or repository test fixtures.