Skip to main content

Component · Data

Diff Review

File tree, decisions, summary strip over DiffView.

Kind
widget
Input
interactive
Canvas
120×40

Live preview

Loading terminal preview.

Static terminal poster. Choose Run live to start the Rust demo.

Ghosttydiff-review/hunks
Loading terminal poster…
○ loading posterNo input — rendered state only
Diff Review · exact mounted Rust story

01 · Purpose

What it is for

File tree, decisions, summary strip over DiffView.

Best fit: Data · data · widget

02 · Behavior

What the mounted story proves

  1. 01

    DiffReview

    Representative 120×40 terminal state.

  2. 02

    Passive paint

    No keyboard or pointer action is claimed by this representative story.

  3. 03

    Evidence stays explicit

    0 covered · 9 partial · 5 missing axes.

03 · Implement

Install, then start from exact code

Install

cargo add termrock --git https://github.com/tailrocks/termrock.git --rev 5283c2acf9154d0cfcd37b1ffe821c00faf90ea2

Add TermRock once. Keep domain effects in the host application.

Minimal implementation

Exact Rust setup used by diff-review/hunks.

Open to load code.

04 · Adapt

Variants and composition

Variants

Use the preview Variant menu when alternate registered stories exist. Each selection mounts a fresh configuration.

Composition

Data · data · widget

05 · Reference

API, tokens, accessibility

API

DiffReviewOpen source ↗

Tokens

DesignSystemInspect exact story code for roles and capability projection.

Accessibility

Input contract mountedNo input claim in the representative story.

Contract

Evidence in progress0/23 axes covered

06 · Go deeper

Advanced guidance

Authored implementation guidance

Interactive review on top of DiffView. TermRock owns selection, decisions, comments, focus regions, confirm banners, and undo for session review ops. You own git staging, plan apply, agent policy, and editor launch.

When to use / when not

Use DiffReviewPrefer
Git / PR / agent patch review—
Plan step accept/reject listPlanReview
Read-only viewing onlyDiffView

Ownership

ConcernOwner
Surface focusHost / scene
Scroll / mode / hunk cursorDiffReviewState.view (DiffViewState)
Selection · decisions · comments · undoDiffReviewState
VCS / apply / editor side effectsConsumer (outcomes only)

Outcomes (requests)

  • DecisionSet / ApproveRequested / RejectRequested / StageRequested / UnstageRequested / ApplyRequested
  • CommentAdded / CommentResolved / CommentRemoved / CommentDraftChanged
  • ExternalEditorRequested { path, line }
  • ConfirmRequired / ConfirmCancelled (safe verbs, no false VCS claims)
  • Undone / Redone
  • View-forwarded: Scrolled · HunkCursorMoved · HunkActivated · ToggleMode …

Safe destructive language

Bulk reject/apply shows a confirm strip: mark rejected 3 units? Enter=yes Esc=no. Verbs are mark approved / request stage of / request apply of — never “committed” or “pushed”.

Keys

KeyAction
TabFile tree · diff · comments · summary
SpaceSelect hunk
a r t T xApprove · reject · stage · unstage · apply
cComment · Enter commit
eExternal editor
uUndo review op
vView mode (split/unified)
Ownership boundary

TermRock owns reusable terminal rendering and interaction state. The host owns domain data, policy, persistence, authorization, and side effects.

Evidence status

0 covered, 9 partial, and 5 missing contract axes. Missing evidence is not a behavior claim.