feat(remove): say what each worktree is before it is ticked - #40
Merged
Conversation
The picker offered a branch name and a path, and nothing else. Whether the work had landed, whether anything was uncommitted, how much the removal hands back — the three facts that decide it — were printed in the confirmation, which is after the choice. Picking meant guessing and then reading back what you had guessed at. The list is a table now: the merge verdict, the worktree's dirty count, the age of the last commit, the disk it frees, what Claude Code spent in it, then the path with its flags and whatever Xcode is holding. The words are lcc list's, because a status that reads one way there and another way here is two things to learn instead of one. It costs a slower first paint. The verdict per branch, a git status per worktree, one GitHub call for the branches nothing local vouches for, one du and one transcript scan now cover the whole repo rather than the selection; the verdicts and the status calls share an Io.Group so the wait is roughly the slowest of them rather than their sum, and --local still asks nothing over the network. Measuring only the ticked rows stays cheaper and puts the numbers back where they cannot be used. --merged already had most of the columns, so both modes build the same row and go through the same picker rather than two that drift apart. The column header is new to prompt.checkbox and has to be reserved for in pageSize: the frame is erased by walking the cursor up screen.lines, and a line the page size does not know about scrolls the terminal instead.
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.
lcc removeand--mergednow draw one table — MERGE, STATUS, AGE, FREES, SPENT — off the same row type and through the same picker, inlcc list's vocabulary.git statusper worktree, one GitHub call for the branches nothing local vouches for, oneduand one transcript scan now cover the whole repo instead of the selection. Those share anIo.Groupso the wait is roughly the slowest rather than the sum, and--localstill asks nothing over the network.prompt.checkboxand has to be reserved for inpageSize, or the erase walk eats scrollback on a short terminal. Driven end to end through a pty against a scratch repo — plain picker, selection, confirmation, and a real--merged -yremoval — on top of 292 unit tests (+3).