Choose which clips are in play - #20
Merged
Merged
Conversation
A spool is not always wanted whole. Ticking clips narrows what the next serve delivers and what the whole-spool paste joins, using one working set for both, so Win+Alt+U, Win+Alt+V and the button cannot come to mean different things. An empty selection means every clip. Selecting nothing and meaning nothing is not a state worth having: it would make both hotkeys dead and the button a no-op with nothing to distinguish that from a bug. Clearing the selection and selecting everything are therefore the same act, and unticking the last box returns to all rather than to none. The selection is not stored. It describes what you are doing now, the way a text selection does, and one that survived a restart would be a rule the user does not remember making. It ends when the active spool changes or the spool is cleared, and drops any deleted clip, because a set still naming a clip that is gone makes the button promise more than it can deliver. Serving steps over what is not in play and wraps among the chosen clips. A cursor left on an excluded clip is not an error — it was put there before the choice was made — so the next serve walks forward to the first clip in play instead of refusing. The button names what it will take: "Put all 15 on the clipboard" becomes "Put 3 of 15", keeping the total visible so a selection reads as a narrowing rather than as the whole truth. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Ticking clips narrows what the next serve delivers and what the whole-spool paste joins — one working set for both, so
Win+Alt+U,Win+Alt+Vand the button can never come to mean different things.The rule that makes it safe
An empty selection means every clip. Selecting nothing and meaning nothing is not a state worth having: it would make both hotkeys dead and the button a no-op, with nothing to distinguish that from a bug. So clearing the selection and selecting everything are the same act — there is one command, not two that disagree at the edges — and unticking the last box returns to all rather than to none.
That is the behaviour requested, and the tests pin it from both directions: unticking the last clip, and a selection emptied by deleting the clip it named.
What it touches
Win+Alt+UWin+Alt+VPut all 15 on the clipboard→Put 3 of 15 on the clipboardThe total stays visible in the label so a selection reads as a narrowing rather than as the whole truth.
Deliberate decisions
The selection is not stored. It describes what you are doing now, the way a text selection does; one that survived a restart would be a rule the user does not remember making. It ends when the active spool changes, when the spool is cleared, and it drops any clip that is deleted — a set still naming a clip that is gone would make the button promise more than it can deliver.
A cursor on an excluded clip is not an error. It was put there before the choice was made, so the next serve walks forward to the first clip in play instead of refusing. Without that, choosing a clip below the cursor would silently kill unspooling.
Order is spool order, not tick order. Ticking
cthenajoinsathenc. The spool is the arrangement; the selection only says which parts of it count.Verification
384 tests, typecheck, lint, and the zero-network gate pass. Nineteen are new: seven on the pure selection rules, eleven through the session covering serve, wrap, join, the cursor-on-excluded case, and every path that empties the set.
Note
Branched off
repeat-unspool(#19), which is still open, so this includes that fix. Merge #19 first.🤖 Generated with Claude Code