Pi · change review

Exploring JJ through one review panel.

I have been exploring what a JJ-first review workflow could feel like inside Pi. Black Signal Review keeps the current change, local comments, GitHub state, and agent feedback in one terminal panel.

Source · dylanmccavitt/pi@9691711 plugin source Reviewed 22 Jul 2026
Representative Black Signal Review terminal panel with a changed-file list, colored unified diff, an anchored draft comment, JJ metadata, and GitHub pull request status.
The wide view keeps files and diff in one scanning plane, with change identity and PR state above and action gates below. Representative content is rendered by the production panel code.

I can explore the change before anything leaves the panel.

01
Navigate the change

Move across files and hunks, switch between the working change and parent, or load an open PR patch.

Read-only navigation
02
Draft against exact lines

Select a line or contiguous range, write comments, and mark files reviewed.

Stored locally
03
Assemble the review

Open a review document from current drafts, or preview a bounded feedback batch for the originating worker.

Visible confirmation
04
Cross the boundary

Submit a GitHub review, create a PR, merge, or deliver feedback only after the target is revalidated.

External mutation

Identity is the safety mechanism.

Local state is conservative

Drafts and reviewed marks are keyed by repository, JJ change, commit fingerprint, and file. A rewritten change hides stale drafts and invalidates reviewed marks rather than pretending they still apply.

Remote actions are rechecked

Feedback delivery revalidates the originating pane, session, repository, commit fingerprint, and idle worker. Merge uses head-commit protection and does not bypass branch rules.

v rangec commentx reviewedV review docs preview/sendM merge

The panel does not make irreversible work feel casual. Drafting is immediate and local; publishing, merging, and worker handoff remain explicit, reviewable transitions.

Evidence boundary: workflow, storage keys, controls, and confirmation behavior reflect the README and renderer at commit 969171167147528ea1d382e4fc2d3aaab6a11895. Screenshot content is representative, not a live repository or PR state.