Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
16fe6b1
fix(lib): detect Graphite from repo metadata, not gt on PATH
lettertwo Jul 29, 2026
770d387
feat(review): scaffold git-workon-review lib+bin crate
lettertwo Jul 5, 2026
e79a549
docs: record review crate workspace placement in ADR-027
lettertwo Jul 5, 2026
1e8d9e4
docs(review): add stale-metadata-head trap to RFC corpus
lettertwo Jul 5, 2026
cdc8b8b
feat(review): build diff model from git2 diffs
lettertwo Jul 6, 2026
ddad3f9
feat(review): synthesize whole-hunk patches from the model
lettertwo Jul 6, 2026
6836ba6
feat(review): add patch applier over git2 and git CLI
lettertwo Jul 6, 2026
eb248b4
fix(review): preserve real file mode when synthesizing patches
lettertwo Jul 6, 2026
e95bea7
feat(review): line-precise patch synthesis with direction rules
lettertwo Jul 6, 2026
884f04d
fix(review): splice EOFNL del-to-context lines in partial patches
lettertwo Jul 6, 2026
9c815d6
fix(review): splice kept-deletion EOFNL and thread patch mode
lettertwo Jul 6, 2026
f4cbaf0
feat(review): route whole-file ops for added and deleted files
lettertwo Jul 6, 2026
ba0e121
feat(review): add FIFO staging queue with live-index direction
lettertwo Jul 6, 2026
a066f8e
feat(review): add refresh coordinator with generation supersede
lettertwo Jul 6, 2026
7ca78e6
fix(review): fix staging pathspec glob and retry error swallow
lettertwo Jul 6, 2026
e913524
test(review): round-trip corpus across git2 and CLI appliers
lettertwo Jul 6, 2026
e5154f7
docs(rfc): record git2-vs-CLI verdict and write-path decision
lettertwo Jul 6, 2026
02fa991
fix(review): downcast corpus panics and pin exec-bit scenario
lettertwo Jul 6, 2026
9a4abbd
docs(rfc): record review-found exec-bit and EOFNL divergences
lettertwo Jul 6, 2026
82ce450
feat(review): add combined diff and rename detection to acquire
lettertwo Jul 6, 2026
27ba5eb
feat(review): port SBS row alignment with collapsed context gaps
lettertwo Jul 6, 2026
a8dbb27
feat(review): port word-diff spans and tree-sitter highlighting
lettertwo Jul 6, 2026
81312cf
feat(review): render side-by-side diff frames with highlights
lettertwo Jul 6, 2026
1593bf7
feat(review): wire uncommitted-source TUI with event loop and nav
lettertwo Jul 6, 2026
64b9bb9
feat(review): add inline layout with runtime toggle
lettertwo Jul 6, 2026
a92560a
docs(rfc): mark M3 renderer milestone done
lettertwo Jul 6, 2026
cce9916
docs(rfc): lock M4 staging and zoom design
lettertwo Jul 7, 2026
54106e3
feat(review): make cursor drive navigation and scroll
lettertwo Jul 7, 2026
9d1c50a
feat(review): add zoom states with gate matrix and split panes
lettertwo Jul 7, 2026
cc52519
feat(review): color combined view by staged-ness attribution
lettertwo Jul 7, 2026
9fcb978
feat(review): add transient footer notice line
lettertwo Jul 7, 2026
e9ab749
feat(review): rebuild diff state in place on manual refresh
lettertwo Jul 7, 2026
454d522
feat(review): stage and discard hunks and files via the queue
lettertwo Jul 7, 2026
c283edd
feat(review): stage and discard line selections
lettertwo Jul 7, 2026
9138c23
feat(review): refresh on external index changes via tick poll
lettertwo Jul 7, 2026
4a3749e
docs(rfc): mark M4 staging and zoom milestone done
lettertwo Jul 7, 2026
df9b40c
feat(review): source review from the changeset stack
lettertwo Jul 7, 2026
4aa27c8
feat(review): navigate changesets and mark committed ones
lettertwo Jul 7, 2026
b994971
feat(review): add outline pane with flat and stack modes
lettertwo Jul 7, 2026
6e00631
feat(review): add outline tree and stack-tree modes
lettertwo Jul 7, 2026
86353cf
docs(rfc): mark M5 stack sources and outline done
lettertwo Jul 7, 2026
f50b4fd
docs(rfc): reorder and split remaining milestones into M6-M9
lettertwo Jul 7, 2026
6ab670c
feat(review): respond to COMPLETE dynamic-completion protocol
lettertwo Jul 7, 2026
056fff8
docs(rfc): mark M6 done, unify MCP as git workon mcp
lettertwo Jul 7, 2026
f54364e
fix(review): render TUI to /dev/tty so stdout capture doesn't hang
lettertwo Jul 7, 2026
6f88f16
docs(review): lock M6.5 usability design (ADR-028/029)
lettertwo Jul 8, 2026
6fe1efe
feat(review): add ReviewConfig git-native config reader
lettertwo Jul 8, 2026
72253ee
feat(review): make keybindings git-config configurable
lettertwo Jul 8, 2026
2b5a1d4
feat(review): add help footer and ? overlay
lettertwo Jul 8, 2026
050db43
feat(review): configure outline width/mode and diff layout/zoom
lettertwo Jul 8, 2026
b84ad10
fix(review): read committed changeset new side from head tree
lettertwo Jul 8, 2026
87b75d8
docs(review): reprioritize roadmap — daily-driver first, M7 review-an…
lettertwo Jul 8, 2026
4dc9aed
refactor(review): base16 Theme with render-time color resolution
lettertwo Jul 8, 2026
8580413
feat(review): add light theme and theme selection
lettertwo Jul 8, 2026
c43413f
feat(review): derive theme from terminal for theme=auto
lettertwo Jul 8, 2026
85dfef3
fix(review): paint themed canvas so light/dark control bg and fg
lettertwo Jul 8, 2026
7dc0632
fix(review): wait out zero-byte tty reads in theme=auto probe
lettertwo Jul 9, 2026
66b018c
test(review): PTY smoke for theme=auto probe responsiveness
lettertwo Jul 9, 2026
84238e6
docs(review): lock M7 review-any-source design (ADR-030 + plan)
lettertwo Jul 9, 2026
dcd6b75
refactor(lib): rename ChangesetSource to ChangesetSpan
lettertwo Jul 9, 2026
6885d4b
feat(review): source arg with stack and uncommitted keywords
lettertwo Jul 9, 2026
6df9841
fix(review): show nothing-to-review for empty stack resolution
lettertwo Jul 9, 2026
395d351
fix(review): refresh re-resolves the launched review source
lettertwo Jul 9, 2026
f5b0efa
feat(review): resolve ref and range review sources
lettertwo Jul 9, 2026
2ff8746
refactor(review): dedupe source error mapping and committed diffs
lettertwo Jul 9, 2026
72cc478
feat(review): resolve PR references as review sources
lettertwo Jul 9, 2026
4f00d4d
fix(pr): fetch PR head and base fresh for review sources
lettertwo Jul 9, 2026
7e07679
refactor(review): reuse fork dispatch and PR error closure
lettertwo Jul 9, 2026
9a60614
fix(review): refresh no-ops for a PR review source
lettertwo Jul 9, 2026
fc88b0a
feat(completions): review source completion and delegation
lettertwo Jul 9, 2026
4f1dabf
fix(completions): gate delegation to known responders, null stdin
lettertwo Jul 9, 2026
f42de99
perf(review): coalesce buffered nav input in the event loop
lettertwo Jul 9, 2026
e1acb77
fix(review): land diff on last crossed file for header landings
lettertwo Jul 9, 2026
8426933
refactor(review): collapse duplicated nav-coalescing arms
lettertwo Jul 9, 2026
ec9b689
perf(review): parallelize changeset diff acquisition
lettertwo Jul 9, 2026
6dd3e53
perf(review): defer file loads to an input-idle window
lettertwo Jul 9, 2026
49cf4ee
fix(review): reopen cached files eagerly in defer mode
lettertwo Jul 9, 2026
eb9f640
feat(review): show launch splash before changeset acquisition
lettertwo Jul 9, 2026
c50562e
fix(review): keep terminal free during PR source resolution
lettertwo Jul 9, 2026
a4182e4
fix(review): probe theme and resolve sources before terminal takeover
lettertwo Jul 9, 2026
51174f4
test(review): PTY responsiveness harness for launch and nav burst
lettertwo Jul 9, 2026
e8d387d
refactor(review): share the PTY spawn helper across test suites
lettertwo Jul 9, 2026
7cb4cd0
docs(review): ADR-031 progressive pipeline design
lettertwo Jul 10, 2026
865a574
feat(review): per-changeset Pending/Ready/Failed slots
lettertwo Jul 10, 2026
75cd1b5
feat(review): route input through a dedicated thread and mpsc inbox
lettertwo Jul 10, 2026
e92b6d5
test(review): drop dead MouseButton import in event-mapping test
lettertwo Jul 10, 2026
96fad92
feat(review): loader thread with generation-tagged file loads
lettertwo Jul 10, 2026
a694f3f
fix(review): make load-spec building total for fileless changesets
lettertwo Jul 10, 2026
769cf06
fix(review): re-dispatch a deferred open when zoom outran its load
lettertwo Jul 10, 2026
441585e
feat(review): stream startup changeset diffs behind a live outline
lettertwo Jul 10, 2026
5958fb2
fix(review): keep outline cursor anchored as streamed diffs land
lettertwo Jul 10, 2026
83d4615
refactor(review): hoist the shared app-seating tail out of the launch…
lettertwo Jul 10, 2026
3e58f1b
feat(review): stream refresh diffs with span-keyed slot reuse
lettertwo Jul 10, 2026
b98b5f4
fix(review): clear stale deferred-open flags on non-deferred opens
lettertwo Jul 10, 2026
5036ca3
test(review): fileless open pins cleared flags after flag hygiene
lettertwo Jul 10, 2026
9d7bf69
test(review): real-thread pipeline smoke and streamed-launch oracle
lettertwo Jul 10, 2026
3d6d0d7
test(review): pin per-changeset spans in the streamed-startup fixture
lettertwo Jul 10, 2026
f682185
perf(review): cache silent-terminal probe verdicts for theme auto
lettertwo Jul 10, 2026
7161f5e
feat(review): rework outline focus into home-base model with h/l
lettertwo Jul 10, 2026
05364c0
fix(review): renumber resolve_key doc to the six-case Esc cascade
lettertwo Jul 11, 2026
164d06d
fix(review): delegate toggle_outline opening arm to focus_outline
lettertwo Jul 11, 2026
bd595b3
feat(review): give the outline a scrolloff viewport and g/G jumps
lettertwo Jul 10, 2026
787a34c
fix(review): pass row count into derive_outline_scroll
lettertwo Jul 11, 2026
4155a4f
feat(review): order outline head-first with dirs before files
lettertwo Jul 10, 2026
ee1c80d
fix(review): extract shared scan_order for stack display order
lettertwo Jul 11, 2026
b930adf
feat(review): summary panel for outline header and dir rows
lettertwo Jul 10, 2026
2de9ce2
fix(review): extract shared push_summary_body from summary builders
lettertwo Jul 11, 2026
d0ca649
fix(review): build summaries from borrows, no FileChange clones
lettertwo Jul 11, 2026
67c3f3e
feat(review): file status letters and opt-in nerd icons in outline
lettertwo Jul 10, 2026
24894ff
fix(review): name the outline file target struct FileOccurrence
lettertwo Jul 11, 2026
c051483
feat(review): preserve diff position across staging operations
lettertwo Jul 10, 2026
4b74146
fix(review): search cursor restore in a single lineno frame
lettertwo Jul 11, 2026
205bc93
feat(review): stage, unstage, and discard from outline rows
lettertwo Jul 11, 2026
cbd16cd
fix(review): re-resolve outline discard targets at confirm time
lettertwo Jul 11, 2026
0ead53b
fix(review): adopt FileOccurrence and scroll arity from downstack
lettertwo Jul 11, 2026
c3674fb
feat(review): expand collapsed context gaps progressively
lettertwo Jul 11, 2026
545a3f7
fix(review): cancel the line selection when a gap expansion reshapes …
lettertwo Jul 11, 2026
60783e3
fix(review): gate test-only collapse_gaps_with behind cfg(test)
lettertwo Jul 11, 2026
becd630
feat(review): reveal gaps to the enclosing tree-sitter scope
lettertwo Jul 11, 2026
4d1eb11
fix(review): drop unreachable empty-range guard in scope reveal
lettertwo Jul 11, 2026
c081e87
feat(review): devicons-backed icon table with brand colors
lettertwo Jul 11, 2026
c82e558
feat(review): promote semantic fg colors to palette knobs
lettertwo Jul 11, 2026
d08d5d6
feat(review): nerd-mode status and header/summary iconography
lettertwo Jul 11, 2026
8e6e67e
style(review): tree guides, gap label, and winbar restyle
lettertwo Jul 11, 2026
0c5c152
refactor(review): promote icons config to workon.review.icons
lettertwo Jul 12, 2026
49e8dc1
feat(review): mouse support with click-to-focus and wheel scroll
lettertwo Jul 11, 2026
d606117
fix(review): compare AppEvent::Mouse structurally in PartialEq
lettertwo Jul 11, 2026
b381d76
fix(review): pass row count to derive_outline_scroll in mouse tests
lettertwo Jul 11, 2026
12fd8bd
fix(review): mouse wheel scrolls the viewport and leaves the cursor
lettertwo Jul 11, 2026
4a58f4a
feat(review): horizontal scroll for long diff lines
lettertwo Jul 12, 2026
cfc3715
feat(review): mouse h-wheel panning and outline hscroll
lettertwo Jul 12, 2026
7bdd1ac
feat(review): distinguish outline changeset headers with counter and …
lettertwo Jul 13, 2026
8bca446
feat(review): smart path render and tighter tree indent
lettertwo Jul 13, 2026
037d9aa
feat(review): git-style XY status matrix for outline files
lettertwo Jul 13, 2026
509c04f
feat(review): reorder outline cycle and show next mode in footer
lettertwo Jul 13, 2026
174cb33
feat(review): collapse and expand outline headers and directories
lettertwo Jul 13, 2026
9e34d06
fix(review): outline header label, indent, and marker polish
lettertwo Jul 15, 2026
4e6c826
feat(review): outline changeset nav and fold-all keybindings
lettertwo Jul 15, 2026
f3b99ea
fix(review): key changeset identity by name plus span kind
lettertwo Jul 17, 2026
d941ccc
test: merge per-file integration tests into one harness per crate
lettertwo Jul 13, 2026
f70a7b5
fix(review): clear clippy lint debt blocking the scoped stop gate
lettertwo Jul 14, 2026
21a0005
feat(review): diff gap fold-all keys and n/p hunk navigation
lettertwo Jul 15, 2026
3e560d6
feat(review): warn at startup when a bare key shadows under a chord p…
lettertwo Jul 16, 2026
364fb6e
refactor(review): share the strict-prefix test with key dispatch
lettertwo Jul 16, 2026
8e6e8d6
fix(review): refusal notice shows the resolved cycle-zoom key
lettertwo Jul 16, 2026
a93ba1e
refactor(review): reuse primary_key for the zoom refusal label
lettertwo Jul 16, 2026
a421bdf
feat(review): base16 slot and tint override keys under workon.review.…
lettertwo Jul 15, 2026
60a9ddd
feat(review): render monochrome when NO_COLOR is set
lettertwo Jul 15, 2026
7e754ba
fix(review): collapse nerd icon colors to foreground under NO_COLOR
lettertwo Jul 15, 2026
0822697
feat(review): per-pane headers replace the global winbar row
lettertwo Jul 16, 2026
ccd925c
refactor(review): single-source the pane-header diffstat spans
lettertwo Jul 16, 2026
ba7beff
feat(review): light the focused pane's header label
lettertwo Jul 16, 2026
0cf9802
feat(review): dim the cursorline wash in unfocused panes
lettertwo Jul 16, 2026
83a4e88
feat(review): dim header counters with their pane's focus
lettertwo Jul 17, 2026
caf6105
feat(review): run split caption rules full width as pane divider
lettertwo Jul 17, 2026
390a290
fix(review): dedupe caption_row helper across split-caption tests
lettertwo Jul 23, 2026
fd74ab6
fix(review): render one-sided patch headers git apply accepts
lettertwo Jul 17, 2026
e3f996a
feat(review): line stage and discard on untracked and added files
lettertwo Jul 17, 2026
647c4d4
fix(review): extract shared git_apply_cached test helper
lettertwo Jul 23, 2026
ba7d2c9
test(review): pin canvas paint under split-view content rows
lettertwo Jul 20, 2026
3643d38
fix(review): key silent-probe cache to the concrete tty device
lettertwo Jul 20, 2026
4b36c97
feat(review): derive auto diff washes from probed terminal accents
lettertwo Jul 20, 2026
fda3c2d
feat(review): render comment captures in italics
lettertwo Jul 20, 2026
d9f6b39
feat(review): screen the filler hatch back to its own base01 fg
lettertwo Jul 20, 2026
0c689e2
refactor(review): unify startup config resolution into resolve_runtime
lettertwo Jul 22, 2026
84535b2
feat(review): add reload-config command for live theme/keymap reload
lettertwo Jul 22, 2026
2cfb2fc
fix(review): re-plumb the zoom key hint on config reload
lettertwo Jul 22, 2026
c72dad2
fix(review): share seat-time zoom hint and warning plumbing with reload
lettertwo Jul 23, 2026
525151a
fix(review): fold the theme fallback ladder into one shared path
lettertwo Jul 23, 2026
5397efd
docs(review): record the diff line/edit fg-bg split decision
lettertwo Jul 22, 2026
4bd0efa
feat(review): split diff wash fg from bg, rename line/edit
lettertwo Jul 22, 2026
5611036
style(review): bind dark() staged-fg washes and fix a test init
lettertwo Jul 22, 2026
a3c5f1d
feat(review): add workon.review.diff.text foreground modes
lettertwo Jul 22, 2026
db65470
refactor(review): resolve syntax fg and italic from one lookup
lettertwo Jul 22, 2026
219710a
fix(review): share the staged-ness attribution cascade
lettertwo Jul 23, 2026
e34511c
fix(review): bundle diff text-mode params into one struct
lettertwo Jul 23, 2026
05bdcb6
docs(review): record the config validation completeness decision
lettertwo Jul 23, 2026
04ce4bf
feat(review): warn on unknown workon.review.* config keys
lettertwo Jul 23, 2026
53da9b8
test(review): import width bounds into the app test module
lettertwo Jul 23, 2026
6c541bf
feat(review): name the expected format in invalid color warnings
lettertwo Jul 23, 2026
6df3e86
fix(review): use fixture layers in the dedup warning test
lettertwo Jul 23, 2026
d415ce7
fix(review): share the parse-warn-default shape across view settings
lettertwo Jul 23, 2026
a82d84f
feat(review): add one-line prompt input primitive
lettertwo Jul 23, 2026
ae6cdad
feat(review): add fuzzy filter to the outline pane
lettertwo Jul 23, 2026
2462084
fix(review): clear the outline filter on Esc before quitting
lettertwo Jul 24, 2026
edc9106
fix(review): signal filter input capture with cursor and prefix color
lettertwo Jul 24, 2026
cae42e0
fix(review): keep outline structure when filtering
lettertwo Jul 24, 2026
f006ba1
feat(review): add search within the current diff file
lettertwo Jul 23, 2026
43d7cfa
fix(review): match inline paired rows by search side for jump and tint
lettertwo Jul 25, 2026
61dfe67
fix(review): only tint search matches in the focused pane
lettertwo Jul 25, 2026
ff9821f
fix(review): recompute search when split focus toggles
lettertwo Jul 25, 2026
13c9574
fix(review): order search accept by aligned row not lineno
lettertwo Jul 25, 2026
6ac0488
refactor(review): share context-run measurement in align
lettertwo Jul 25, 2026
596245c
refactor(review): share prompt key decoding between filter and search
lettertwo Jul 25, 2026
dfe5819
fix(review): bound search-jump gap reveal and keep current match
lettertwo Jul 27, 2026
7e93ac7
feat(review): copy path:line to clipboard via OSC 52
lettertwo Jul 27, 2026
46c3e5b
fix(review): tolerate and self-heal a stale-diff align race
lettertwo Jul 27, 2026
5ea0a11
docs(review): log cursor-side, zoom-cycle, and deferred-load gaps
lettertwo Jul 27, 2026
af30ca6
docs(review): log combined-view exemptions as zoom evidence
lettertwo Jul 27, 2026
5d0693f
feat(review): split yank into range-aware copy-lines and copy-location
lettertwo Jul 27, 2026
fdfa8bb
fix(review): keep selection when the clipboard write fails
lettertwo Jul 27, 2026
f5d9e50
style(review): use matches! for search-side render filter
lettertwo Jul 27, 2026
69a1e9a
docs(review): drop stale detect_gt note from pty bound
lettertwo Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Workspace Structure

This is a Cargo workspace with three crates:
This is a Cargo workspace with four crates:

- **git-workon** (git-workon/): The CLI binary that provides the user-facing commands
- **git-workon-lib** (git-workon-lib/): Core library (published as `workon`) containing the git worktree manipulation logic
- **git-workon-fixture** (git-workon-fixture/): Testing utilities that provide fixture builders and custom predicates for git repository tests
- **git-workon-review** (git-workon-review/): Lib+bin crate for the review TUI domain — diff parsing, staging, changeset views; the binary is the TUI

## File Location Quick Reference

Expand All @@ -32,6 +33,9 @@ This is a Cargo workspace with three crates:
- Add integration tests → `git-workon-lib/tests/` or `git-workon/tests/`
- Find workon root logic → `git-workon-lib/src/workon_root.rs`
- Smart routing logic → `git-workon/src/main.rs` (lines 20-38)
- Add review domain logic → `git-workon-review/src/`
- Add review CLI entry → `git-workon-review/src/main.rs`
- Add review error types → `git-workon-review/src/error.rs` (ADR-008 pattern: concrete enums with `#[derive(Error, Diagnostic)]`)

## Key Architecture Concepts

Expand Down Expand Up @@ -73,7 +77,7 @@ Inline test/clippy runs go through `cargo-gate test`/`clippy` (a raw `cargo test

**Valid types**: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`

**Scopes** (optional): `cli`, `lib`, `fixture`, `config`, `worktree`, `hooks`, `copy`, `pr`, `completions`, `build`, `release`
**Scopes** (optional): `cli`, `lib`, `fixture`, `review`, `config`, `worktree`, `hooks`, `copy`, `pr`, `completions`, `build`, `release`

**Breaking changes**: append `!` — e.g. `feat(cli)!: change output format`

Expand Down
24 changes: 24 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,30 @@ Terms used throughout the `git-workon` codebase. Implementation details do not b

**Status filter** — a flag (`--dirty`, `--clean`, `--ahead`, `--behind`, `--gone`) that narrows a `list` or `find` result to worktrees in a specific state. Filters select **worktrees**: each check queries the working tree or branch-tracking state of a checked-out worktree. A metadata-only stack diff (`◯`) has no working tree and can never satisfy a status filter; it is excluded from any filtered result. See also: `StatusFilter`, `WorktreeDescriptor::is_dirty()`.

## Review

**Changeset** — one reviewable unit in the review TUI: a node in a stack, a single inferred commit, or the uncommitted layer. Ordered base → head when part of a stack. See also: `workon::Changeset`.

**Changeset span** — what a changeset covers: a resolved commit range (`base..head`) or the uncommitted working tree + index. _Avoid_: "changeset source" (renamed; "source" is the review-source concept below).

**Review source** — the user's answer to "review *what?*": auto-detect (no argument), the `stack` keyword, the `uncommitted` keyword, a ref, a range, or a PR reference. Exact bare keywords win over same-named refs; a qualified spelling (`refs/heads/stack`) escapes. See also: [ADR-030](docs/adr/030-review-source-grammar.md).

**Uncommitted layer** — the synthetic changeset spanning the dirty working tree + index. Appears in a review only when the review is focused where `HEAD` actually is, since uncommitted changes diff against `HEAD`.

## Review Theming

**Wash** — a background color painted behind diff text to signal that the text changed. Washes carry the diff signal; foreground carries syntax meaning unless a theme says otherwise. _Avoid_: "tint" for the background specifically (see below), "highlight".

**Line wash** — the wash covering an entire line that contains a change. Answers "something here changed". _Avoid_: "subtle" (renamed — it named intensity, not scope).

**Edit** — the exact text that changed. On a line paired with a counterpart, the word-diff ranges within it; on a line with no counterpart, the whole line. _Avoid_: "word" (true only for the paired case), "change" (reserved for a file's change kind).

**Edit wash** — the wash covering an edit. Answers "this precisely is the change". _Avoid_: "strong" (renamed — its intensity-flavored name is what let it drift into a foreground role).

**Tint foreground** — a text color that encodes added-ness or deleted-ness rather than syntax meaning. Distinct from a wash: same fact, opposite channel. _Avoid_: "diff color" (ambiguous between the two channels).

**Slot** — one of the sixteen base16 palette positions (`base00`–`base0f`) a theme assigns colors to. A slot has a *role* only when some part of the TUI reads it; the key space accepts all sixteen regardless.

## Prune Candidate Reasons

**BranchDeleted** — the local branch ref for the worktree no longer exists in the repository. Always a prune candidate regardless of flags.
Expand Down
Loading