feat(review): local review notes across app, CLI, and agents (#88)#105
feat(review): local review notes across app, CLI, and agents (#88)#105hewigovens wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ed4a2eb3b6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a0add07229
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
1ab07ae to
7741813
Compare
There was a problem hiding this comment.
💡 Codex Review
jayjay/shell/gpui/src/repo/window/review.rs
Lines 58 to 62 in 7741813
When another surface (the CLI or SwiftUI app) updates review_store.json while a GPUI window is open, this read path still answers from the process-global store snapshot; only GPUI mutations call refresh_from_disk(). That leaves file rows and hide-reviewed filtering stale, and if the user clicks a stale unchecked checkbox, toggle_reviewed refreshes first and then toggles the now-reviewed mark back off. Refresh the shared store before read-side review queries (or at the review-state refresh boundary) so the rendered state and the toggle base agree.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 601344bb48
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
jayjay/shell/gpui/src/repo/window/review.rs
Lines 58 to 61 in cced362
When the GPUI shell stays open while another process writes review_store.json (for example jayjay review resolve-note or the SwiftUI shell toggling a mark), this accessor reads the process-lifetime ReviewStore snapshot without refresh_from_disk(). I checked the GPUI consumers in shell/gpui/src/diff/file_column/flat.rs and shell/gpui/src/repo/window/render/layout.rs; both render badges/counts and hide-reviewed filtering through is_reviewed, so they stay stale until this GPUI window performs a mutation (the only path that refreshes) or restarts. Refresh on the read boundary or add an explicit store invalidation before rendering review marks.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
jayjay/shell/gpui/src/repo/window/review.rs
Lines 59 to 61 in 685a8d0
When another surface writes review_store.json while a GPUI window is open, the file-column render path still calls this read against the process-global store loaded at startup; only GPUI mutations go through mutate() and call refresh_from_disk(). In that scenario badges, reviewed counts, and hide-reviewed filtering stay stale until this GPUI window toggles a mark or restarts, so refresh on the read/render boundary or track the store mtime before answering is_reviewed.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Codex P2 (stale GPUI review reads) fixed in 25d2378: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e847507c01
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
213c8ef to
9681a0e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9681a0e92b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ce0f961712
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| grouping: reviewStore.listNotes(changeId: reviewChangeId) | ||
| .filter { visiblePaths.contains($0.path) }, |
There was a problem hiding this comment.
Exclude stale notes from active note counts
When a note's file still exists but the note becomes stale after that file is edited, listNotes still returns the unresolved note here and this filter only checks the path. That keeps the file-row badge and “show noted files only” filter active even though loadedReviewNoteSummaries() filters by the current review identity, so no gutter marker or inline note can appear and the stale-note banner is the only actionable surface. Fresh evidence: the fixed code still counts raw listNotes results rather than reconciled .current statuses; derive these counts from reviewNoteStatuses or also match the current hunk identity/status.
Useful? React with 👍 / 👎.
Closes #88
Adds persistent review notes anchored to diff change groups, shared by the SwiftUI shell, the
jayjayCLI, and agent workflows through one store.Core
jayjay-reviewcrate (marks, notes, reconciliation) andjayjay-primitives(jj-lib-free shared types).jayjay-coreprovider as the GUI, so rename detection, LFS placeholders, and group indices agree across surfaces. Statuses:current,stale,orphaned,resolved.CLI
jayjay review notes --repo . --format jsonandjayjay review resolve-note <id>, scoped to the working-copy change; documented in AGENTS.md for agent workflows.UI
.json.corruptpreservation).Also
agents/docs split per area (architecture, swiftui, gpui, review-state, website coverage in help-book).Repo/DAG,Repo/Bookmarks,Repo/StackedPr,Shared/CommandPalette,Detail/Evolog).Testing
just test(43 suites),just test-app(97),just test-gpui(12), JayJayDiffUI package (33), clippy-D warnings+ SwiftLint clean.just test-uineeds a local run (automation permission); ReviewNotesScene was updated for the gutter-marker flow.