Skip to content

[Feature] Add an All changes tab showing a worktree's diff as one view - #43

Open
KieranP wants to merge 1 commit into
mainfrom
unnified-diff
Open

KieranP wants to merge 1 commit into
mainfrom
unnified-diff

Conversation

@KieranP

@KieranP KieranP commented Nov 14, 2026

Copy link
Copy Markdown
Owner

Closes #42

Reviewing what an agent changed across twenty files meant opening twenty file tabs and stepping through them one by one. The All changes tab shows every file in the Changes list, in its order and Modified/Branch scope, as one scrolling diff with review comments on its lines. It follows the owner's picks from the mockups on the issue.

  • Opens from a button beside the Changes filter, or tabs open-all-changes; a Changes row click shows the tab at that file, and the file at the top lights its row
  • One text with a map back to each file, so find, copy, the step arrows, tabs step/find and the rotor work on it; headers, folds and notices sit in row gaps, hosted only near the screen
  • Review cards, the composer and Send are shared with file tabs; review add reaches the tab
  • Split shows an all-added or all-removed file full width across both columns
  • Design notes: Docs/design/files/all-changes-tab.md; status and owner feedback: PROGRESS.md

Memory, measured over 1,802 changed files plus 191 added: 191 MB against 78 MB with the tab shut (1.43 GB before hosting only what is near the screen).

Known limits, queued in PROGRESS.md: in Split, find, the arrows and the rotor skip the rows of added and removed files, and Split is two locked scroll views, to be reworked as one; every file's rows are still read and held, capped at 200,000.

Tests: make test, 2,999 passing; swift format lint --strict and swiftlint clean.

🤖 Generated with Claude Code

@KieranP KieranP self-assigned this Nov 14, 2026
@KieranP
KieranP force-pushed the unnified-diff branch 2 times, most recently from bea756f to d9871b5 Compare November 14, 2026 23:52
Reviewing what an agent changed across twenty files meant opening
twenty file tabs and stepping through them one by one. The All changes
tab shows every file in the Changes list, in its order and scope, as
one scrolling diff with review comments on its lines. It is a third
tab kind rather than a file tab holding many paths, so every switch on
the kind has to say what it does. Its rows are one text with a map back
to each file, so find, copy, the step arrows and the rotor see rows
only, and headers, folds and notices sit in row gaps, hosted only near
the screen: hosting all of them for 1,802 files took the app to 1.43 GB.

Unified and Split, in file tabs and this tab, now draw on one scroller
over a canvas holding each column's gutter and text and the views in
the gaps, so all of it scrolls natively. Split had been two scroll
views locked by offset, which pulled each other back as one clamped,
and every view laid over them was moved on each scroll.

- Open it beside the Changes filter or with tabs open-all-changes; a
  Changes row click shows the tab at that file
- Fold unchanged runs, collapse files, push a sticky header up as the
  next file's arrives, and highlight only the files near the screen
- Share review cards, the composer and Send with file tabs; review add
  quotes only through a file tab
- In Split, show a file all added or all removed full width
- Count each row's height with the gap under it, and start TextKit's
  container under the gap above the first row, so rows on screen are
  laid out however many headers stack above them
- Keep the scroller in a margin as wide as it grows under the pointer
- Send Cmd+Up and Cmd+Down to the document's top and end
- Ask git once a read for the merge base, HEAD, committed sizes,
  ignored files and the index, skip the diffs of untracked new files
  and keep a steady window of reads, so 300 files read in 0.4 s rather
  than 3.3 s

Closes #42

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

One diff of every change in a worktree, with review comments

1 participant