SIGN IN SIGN UP

feat(review): Commits panel for jj sessions (#1604)

* feat(review): Commits panel for jj sessions

Bring the Tree | Commits rail to Jujutsu sessions (pure jj and colocated).
The rail walks first parents from the working copy (first_ancestors(@),
dropping a blank @), clicks open a new jj-commit:<commit id> diff type
(first-parent diff, hunk expansion, image previews, fingerprint, analysis
snapshot), and the detour contract (memo restore, snap-back on reload,
never persisted) is unchanged. Bun and Pi servers share the logic via
commit-history.ts / jj-core.ts.

* fix(review): jj Commits review follow-ups

- An opened jj revision no longer freezes when jj rewrites it: the jj-commit
  fingerprint is visibility-aware (visible / hidden / gone), so editing an
  opened @ raises "Diff out of date", and /api/diff/switch (both runtimes)
  canonicalizes a hidden id to its change's current version, so Refresh
  lands on the new @; the client adopts the returned diff type on an
  in-place refresh.
- A blank MERGE working copy stays on the rail (blank now requires one parent).
- jj < 0.33 detection matches the specific missing-function error.
- The feedback export labels a jj revision by its short change id.
M
Michael Ramos committed
f1935a5f34eaf9443fa999785125ff29c21eba0a
Parent: 9a31ae1
Committed by GitHub <noreply@github.com> on 9/24/2026, 6:56:22 PM