Repository navigation
Show the Code tab's lines side by side behind a split view row - #77
Conversation
`◫ Split diff view` sits between the fold row and the wrap row, as the desktop's toolbar orders its toggles, and reads `⊟ Stacked diff view` once the lines show side by side. Side by side, each line in context shows on both sides with its number on each, and each run of lines removed and added pairs them by position, as @pierre/diffs 1.5.2 pairs them. The shorter side stays blank, and a row is as tall as its taller side. A file added or deleted keeps one column. The note that a line has no end goes under the hunk's last row on its own side. Review threads show across both sides under the row with their line, the left side's first. Unwrapped, both sides' text scrolls by the same columns, each cut at the end of its side, and the widest row counts the side whose text runs on furthest. Below 5 columns the lines stack. The choice stays through a read again and another diff picked. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
On the fixture's diff, the right side's two-digit numbers touched the bar, while the left side's stand a space from the details' edge. The bar and a space now take two columns, so the lines stack below 6 columns rather than 5. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s that can't fail The note after a line in context shows on both sides and after a line added on the right, and at an odd width the right side takes the spare column. Slides keep their halves once per file, since every run in a file shares them, and the left side's number filter and the wrap guard on its padding go, as neither changed a row. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Lines shown around a hunk count on the left from where they were before the change. Five lines removed at the top put new line 5 at old line 10, so the left side's numbers need two columns where the hunks need one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The new test counts rows from the one after the file's header, which sits a row lower here under the tree's row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fter a theme change Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cipe Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… toolbar rows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd the fixes and recipes under it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… recipe Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The recipe now counts four toolbar rows, drives the split view at 100x30 (pairs, blank sides, both sides scrolling sideways, an added file in one column) and checks the choice through a read again, a commit picked and another link. The viewed-marks steps press r at the end of the files, since a read of the first slice drops the later ones and Home after r is too far from the end once the layout row pushes the files down. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t at the highest line number Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e boundary unfold test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ore the whitespace steps Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The trip that reads no marks has to come back within 15 s of their first read. The whitespace steps sat inside that span, and on a macOS runner on CI the trip came back after 19 s, so t3term read the marks again and the recipe failed at its check on #76, #77 and #79. The trip now comes right after the second slice, as on #73 and #74, and a gotcha keeps later steps out of the span. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ile the file's text is read, tests that no hunk is read once the whitespace steps run out and brings #68's fix that lays review threads out again when the theme changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… out again when the theme changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
PASS+NOTES for head
Regression sweep: 13 of 13 own-checkout recipes pass on each side. Base evidence Rules: doctor and check pass in the focused drives and before and after stop in the sweeps. Matched steps send the same CI: all four checks pass on this exact head, including macOS and E2E smoke. Greptile: 2 threads, both resolved; the feature map and expanded old-number finding are addressed; no new unanswered finding. The head updates Binary provenance: base Notes: master's current sweep is 11 of 13 on both sides, at The declared pairing limit is confirmed at No new blocking findings. Evidence stays under the paths above. All owned runs were stopped and checked; no branch or PR code was changed. |
Adds a row to the Code tab that sets the lines before the change beside those after it, as the desktop's split view does.
◫ Split diff viewsits between the fold row and the wrap row once the tab has files. Enter or a click sets the lines before the change on the left and those after it on the right, and the row then reads⊟ Stacked diff view. A read again and another diff picked from the commits keep the choice. The status line saysEnter show split diff vieworEnter show stacked diff view.No newline at end of filegoes under the hunk's last row on its own side.ris too far from the end to read them again, so the viewed-marks steps pressrat the end of the files.Stacked on #76.
All four come from the fixture server at 120x48, where the details show as a dialog 54 columns wide inside.
Decision log
What I noticed. docs/pull-request-panel.md listed the desktop's split view among what the Code tab lacked. t3term always stacked the lines, so a reader couldn't set a line removed beside the line that replaced it.
How I confirmed it. In the pinned T3 source (f570bd2):
diffLayoutis a client setting that defaults tostacked(packages/contracts/src/settings.ts:53-55 and 378). The toolbar's toggle group hasStacked diff viewandSplit diff view(apps/web/src/components/pullRequest/PullRequestCodeTab.tsx:1259-1278), and sets @pierre/diffs'diffStyletounifiedorsplit(872).overflow: scrollthey scroll together (dist/managers/ScrollSyncManager.js:47 and 56).Options.
What review changed.
SIDEspans now happens whether the lines wrap or not. The right side no longer drops the number before the change, whichline_rowsnever shows where a line has a number after it.fbaad0f and 2403b06 merge #76 at a634a86 and ef9e2ca, which bring #66's fix for a hunk that removes nothing at the highest line number (8073497) and its test, with the same patch.
3064610 merges #76 at bc9fb2d, which returns from the Timeline before #75's whitespace steps (d9fd767), with the same patch.
50e1660 and f78d5f7 merge #76 at b916980 and 044993f, which bring #72's fix that counts each Enter on a run while the file's text is read, #75's test that no hunk is read once the whitespace steps run out, and the fixes that lay a thread's comments and its loaded pages out again when the theme changes (#68's ad1590c and #69's 942dad5).
Known limits.
diffLayoutsetting isn't read, so the lines always start stacked, and the choice isn't saved. The desktop saves it to the client settings.Tests
◫ Split diff viewrow. 3064610 changes only the Code recipe, which passes with it on 2403b06's build.🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; no actionable new issues remain.Summary
Adds a Code-tab row for switching between stacked and split diffs.
Reviewed the full PR because the previous and current heads have different merge bases with the supplied target. No runtime tests or terminal captures were run.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD Toggle[Choose split or stacked] --> Clear[Clear cached file rows] Clear --> Layout{File layout} Layout -->|Added or deleted file| One[One column] Layout -->|Split with enough room| Pair[Pair old and new lines] Layout -->|Stacked or too narrow| Stack[Stack lines] Pair --> Threads[Place threads below their rows] One --> Threads Stack --> Threads Threads --> Page[Draw visible rows] Page --> Scroll[Scroll both sides together]Reviews (8) · Last reviewed commit: "Merge the wrap branch at 044993f, which ..." · Reviewed by Greptile