Repository navigation
fix(capture): Undo, marks and Copied only claim what really happened - #1669
Merged
Merged
Conversation
Export::png() refused to fall back silently: when the marks couldn't be drawn it now fails with MarksNotDrawn, and the editor keeps its error note in danger ink beside a Retry button until the next export. Nothing is copied, saved or sent.
Screenshot cards show their note after the clipboard write returns: "Copied" for a shot, "Movie copied" for a recording, or "Couldn't copy". The capsule's finished capture reads "Summary copied", since its clipboard carries the summary, and "Couldn't copy" with a warning when the write failed (SettledCapture.copy_error).
kitlangton
force-pushed
the
annotate-audit-fixes
branch
from
November 13, 2026 02:13
b1e9304 to
0be9834
Compare
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.
Captures no longer claim things that didn't happen: Undo can't outlive a rule's send, a shot's marks are never silently dropped, and "Copied" appears only once the clipboard has it.
Three small honesty fixes in the capture capsule and the screenshot editor. Routing, recording and transcription are unchanged.
❌ Before
✅ After
📊 Proof
Rule send, before and after (the ring now drains over 3 s):
Editor when marks can't be drawn (new state):
Capsule after a capture: before, after, and a failed copy:
New tests: a late rule answer holds its send from the answer, a shot whose marks can't be drawn isn't exported, a failed export stays until retried, and a failed copy never reads as copied (flow and feed). They weren't run against the old code.
👀 Read:
routing/preparation.rs, where the send's deadline is set when a rule's answer arrives. It used to be set at write time, so a slow answer ate into Undo. One known harmless race: an Undo pressed in the single frame between the post and the capsule seeing it becomes a withdraw. A guess's post-send withdraw keeps its own 5 s window on purpose. The rest is routine.🔍 Found in a UX audit of captures · no user reports · goldens: capsule ones regenerated on a Mac, the new editor one from the Linux check
Checks run
scripts/check capture_capsule routing(bug 1): 314 passedcargo nextest run capture_capsule screenshot_thumbnail capture_host i18n: 282 passed (plus one ignored routing benchmark that timed out, not part of this change)cargo clippy --all-targets -D warnings: cleanCheck Linux (full suite, goldens from its
golden-actual): test job passed. Its nix job fails only ononboarding_kit::stories::motion_gate::the_first_run_moves_cleanly, which fails the same way on other branches (scrub-fixtures), so this change didn't cause it