Repository navigation
Pick a commit on the Code tab to read its own diff - #70
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> # Conflicts: # docs/pull-request-panel.md
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The details want only the answer to their newest diff ask, so a pick of another commit made the read before it download a patch t3term then dropped. The app's reader now aborts the read before each new one. The docs note that an empty diff shows no review thread, as the desktop's does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…anch Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…47e50cd Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tab again after a theme change Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the page recipe Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ments in the Code recipe Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The commits row now sits above the count, so the recipe takes one more Down to reach a file and checks the deleted file from the end of the files. It opens the list, checks its order, picks each commit by key and by click and checks each read's commit, and goes back to All commits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…red past u64::MAX and reads the Code's diff again each time it shows a minute after it came Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f043b63, the environment switcher Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second read of #70's marks answered 1 s after it was asked, about when the recipe touched viewed-fail, so the reopen showed either the first-read failure or the stale note. Touching viewed-fail with diff-fail means the details never hold marks for #70. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The row under the count pushes each file down one row and adds a stop for ↓, so the recipe counts the toolbar's rows in TB. The new section folds and unfolds every file with Enter and with a click, keeps a file folded after through a refresh, has the second slice follow the row, and checks that a picked commit starts folded. It also takes #70's viewed-fail race fix from the viewed-files branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ds fail from its first open in the Code recipe The fold-all branch already held the same change, so the tree stays as it was. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Changes to whitespace start hidden, so the recipe checks reader.rs at +5 -3 with its reindented and repeated lines unchanged, shows them with the row and checks that nothing is read, then runs the rest with them shown. #70's Code starts hidden again. TB counts the second toolbar row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The recipe unwraps reader.rs's long line, scrolls it with L, H and the shifted arrows to its end and back, and checks that Esc with Alt+B and a refresh keep the scroll while the details opened again from the list start at the left. A picked commit keeps the lines unwrapped and #70 starts wrapped. TB counts the third toolbar row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d-line count at the highest line number Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
PASS for head
Regression sweep: 13/13 own recipes on base and head. Master's 12/12 recipes pass on both. The head's Code recipe passes; the same recipe fails on the parent at its first new control. No regression outside the change. Matched 84 capture pairs from the own sweeps and 70 from master's sweeps, with expected Code changes and transient loading, reconnect, clock, spinner and local-address differences accounted for. Settled stack and reviewer captures match. Rules: every completed run passes Tests: local CI: all four checks completed successfully on this exact head, including macOS and E2E smoke. Greptile: two threads, both resolved and answered. No new unanswered finding. The feature file is updated. Compared the implementation with the cited desktop Code tab at f570bd2; the documented departures are intentional. Binary identities, LC_UUID from
Evidence: Notes: no product finding. No pull request or branch was changed. |
…hat lays review threads out again when the theme changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…of comments out again when the theme changes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
PASS+NOTES for head
Regression sweep: all 13 checkout recipes pass on 942dad5 and 4eb3fbe after the timed refresh rerun. Every current-master recipe was attempted on both binaries; 11 of 13 pass after that rerun, with the two shared baseline limits below. Every unchanged feature has matching settled Rules: doctor passed. Successful drives and recipes passed Evidence: Binaries driven, recorded LC_UUID values:
All newly built binaries showed Notes, shared baseline limits:
The first timed refresh attempts crossed a wall-clock gap from 13:34 UTC to 17:10 UTC and timed out on all builds. Fresh runs with idle sleep prevented pass the unchanged recipe. The original failures and successful reruns are retained. Screens differ only in fixture ports, ages, elapsed times, spinner frames and intermediate network/read states outside the intended change. Settled Summary and reviewer captures at 200x69 and 80x24 match, and settled requests match. |
Adds the desktop's commit picker to the Code tab. A row above the files says which diff shows,
All commitsor a commit's headline, and opens the pull request's commits, newest first. Picking one reads that commit's own diff.› All commitssits above the file count. Enter or a click opens the list under it:✓ All commits, then each commit's headline cut to its row with the first seven characters of its id at the end, thenShow more (13 left)while more than 10 are left. ↑ and ↓ choose an entry.› Reuse the parsed config on reload · 9dc565a, andThis commit has no file changes.shows for an empty commit.pull_request::difftakes an optionalcommitand sends it inPullRequestDiffInput.Stacked on #69.
All three come from the fixture server, with two invented commits on #7's invented diff at 120x40. The fixture now answers a diff read that names a commit with that commit's own patch.
Decision log
What I noticed. The Code tab showed only the whole change's diff. Plan item 7 in docs/pull-request-panel.md named the commit picker as next, and a Timeline commit couldn't open anything because the tab had no way to show one commit.
How I confirmed it. In the pinned T3 source (f570bd2):
All commitson the button, a radio group withAll commitsand each commit's headline andoid.slice(0, 7), 10 at a time withShow more (N left). No menu shows without commits (1067-1069).Date.parse(committedDate).commit, and 268-277 resets the draft, the folds, the list's length and the list off the diff when the scope changes.All commitswhen the commits no longer list the one picked./api/pull-requests/difftakescommit(packages/contracts/src/pullRequest.ts:950-963). GitHub's provider reads a commit's files from the files API and needs a SHA (GitHubPullRequestCli.ts:2216-2230). PullRequestService.ts keeps a commit's slices for 10 minutes under the commit (165-166, 3189, 3195-3201).Options.
Fix testsrepeat and the row has room. The desktop's button shows the headline alone.Untitled commit, as the Timeline already says. The desktop's menu shows it empty.NaNfor such a date, which leaves its place to the sort.Show morelists the last commits, the first one it listed takes the choice.What review changed.
Enterdid nothing until an arrow key chose it again. The pick now survives a first slice when it is on the commit list, and the panel test checks it.This commit has no file changes.before that list too (PullRequestCodeTab.tsx:1366-1376), so it stays, and the doc's Empty row says so.b7d2adc merges #69 at 1f268d5, which brings #66's fix for a hunk that removes nothing at the highest line number (8073497) and its test. On this branch
actalso takes the pull request's commits, so cebb4a4 gives that test's call an empty list.f14b610 and 4eb3fbe merge #69 at 25d975e and 942dad5, which bring the fixes that lay a thread's comments and its loaded pages out again when the theme changes. f14b610 gives the new theme test's
actandlay_outcalls an empty list of commits, as for the other tests.Known limits.
Tests
Loadingand a failure, threads go off a commit's diff, files fold, an empty commit says so, and a failure goes with its diff. 23 commits page 10 at a time and reset to 10 on a pick, a rebase goes back to All commits, and no commits means no row. A hostile headline and id are cleaned at every width from 1 to 80, the raw id is sent, and the id shows beside at least four columns of headline.cursorandcommitto a fake T3, and its next read stopping the one under way.scopethat a later step repeats: the withheld counts and laid-out files go when the first slice comes, andduegives way toagain.› All commits.🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; no new blocking issue was found.Summary
Adds a commit picker above the Code tab’s files.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR A[Pick a commit or All commits] --> B[Clear the previous diff and folds] B --> C[Request the first slice with commit scope] C --> D[Cancel the previous read] D --> E[Accept only the current ticket] E --> F[Show the selected diff]Reviews (9) · Last reviewed commit: "Merge the thread-comments branch at 942d..." · Reviewed by Greptile