Commit Graph

242 Commits

Author SHA1 Message Date
Valdemar Lorenzen 66250d6c40 refactor: encapsulate diff document drawing on WheelPanels 2026-10-16 18:53:03 +02:00
Valdemar Lorenzen befa432095 refactor: encapsulate review identity changes 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen 8174e81c5c refactor: share successful review save acknowledgement 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen 4511bc2df9 refactor: hide logical comparison rows from painting 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen a1fdc1e1b0 refactor: deepen conflict History alignment ownership 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen 53c37e6209 docs: keep Rust tests under tests directory 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen 2772e6878a refactor: move embedded tests into dedicated test directory 2026-10-16 18:53:02 +02:00
Valdemar Lorenzen de6a57e67d feat: add configurable three-pane conflict views 2026-10-16 18:53:01 +02:00
Valdemar Lorenzen a6310594c5 feat: expose read-only local review CLI 2026-10-16 18:53:01 +02:00
Valdemar Lorenzen 6ae8bf06a8 feat: resolve local review comments manually 2026-10-16 18:53:01 +02:00
Valdemar Lorenzen b558f82094 feat: persist local reviews automatically in SQLite 2026-10-16 18:53:01 +02:00
Valdemar Lorenzen ef1c377167 feat: store local reviews transactionally in SQLite 2026-10-16 18:53:00 +02:00
Valdemar Lorenzen 0c7abc17fe docs: establish pre-alpha clean-cutover policy 2026-10-16 18:53:00 +02:00
Valdemar Lorenzen 5b8f8c3f07 refactor: remove legacy review JSON migration 2026-10-16 18:52:59 +02:00
Valdemar Lorenzen 2259d61633 feat: anchor review comments to precise text ranges 2026-10-16 18:52:59 +02:00
Valdemar Lorenzen 9a24302b4e docs: plan precise text-range review anchors 2026-10-16 18:52:59 +02:00
Valdemar Lorenzen 2376a37e5d docs: specify SQLite-backed local review persistence 2026-10-16 18:52:58 +02:00
Valdemar Lorenzen 4cc0453344 fix: retain selections and float local review editors 2026-10-16 18:52:58 +02:00
Valdemar Lorenzen d67b874b87 fix: preserve Visual selections through command entry 2026-10-16 18:52:57 +02:00
Valdemar Lorenzen 0446ec86c7 feat: add local diff review workflow 2026-10-16 18:52:57 +02:00
Valdemar Lorenzen 930735c537 fix: distinguish Ctrl+I from Tab in comparisons 2026-10-16 18:52:57 +02:00
Valdemar Lorenzen 92e1e6e8fd docs: split local review UX from GitHub publishing 2026-10-16 18:52:57 +02:00
Valdemar Lorenzen a664b807b3 feat: show line change counts in diff tabs 2026-10-16 18:52:56 +02:00
Valdemar Lorenzen c689d9e782 fix: retain numbered declarations in reserved sticky rows 2026-10-16 18:52:56 +02:00
Valdemar Lorenzen 7b950210b8 fix: preserve visible declaration names under scope overlays 2026-10-16 18:52:55 +02:00
Valdemar Lorenzen d654522ad4 fix: hide clipped scope labels at the pane top 2026-10-16 18:52:55 +02:00
Valdemar Lorenzen 682427324d fix: overlay clipped scope labels without reflow 2026-10-16 18:52:54 +02:00
Valdemar Lorenzen e37fa509c9 feat: reuse fuzzy search in the file picker 2026-10-16 18:52:53 +02:00
Valdemar Lorenzen d1048df345 refactor: name configurable viewport scroll steps accurately 2026-10-16 18:52:53 +02:00
Valdemar Lorenzen 284ddd3713 feat: configure half-page viewport scroll distance 2026-10-16 18:52:52 +02:00
Valdemar Lorenzen 5a8c37b2f2 fix: coalesce rapid viewport scrolling redraws 2026-10-16 18:52:51 +02:00
Valdemar Lorenzen 08fdf2bd0f feat: scroll viewport independently of the cursor 2026-10-16 18:52:50 +02:00
Valdemar Lorenzen 60a12110fa perf: bound diff label projection during caret scrolling
The label lag came from repeatedly projecting full viewports while walking backwards from the caret. Skip only candidates whose maximum possible source/wrap and label height cannot reach the target, then retain the original first-target search. Reuse already resolved scope contexts. The conservative bound preserves non-monotonic unified declaration visibility and independent sticky labels. Added regressions for split declaration-visibility ties and unified height changes; architecture updated. Verification: 10,176 differential projections matched; all 964 release tests pass; release binary built. Reduced repro p95: 3.9572ms -> 1.4467ms. Live 160x100 function-dense 360-key burst median catch-up: 22.895ms -> 9.611ms, with final cursor/viewport asserted. Full and no-dependency Clippy checks are blocked by existing repository warnings, including vendored Crossterm, blame, LSP, Markdown, syntax and existing TUI code. Temporary harnesses removed. No remote changes.
2026-10-16 18:52:50 +02:00
Valdemar Lorenzen 1df9e66cd5 fix: retain semantic colors across editable diff updates 2026-10-16 18:52:50 +02:00
Valdemar Lorenzen a3be494d57 fix: serialize absent jj bookmark targets as null 2026-10-16 18:52:49 +02:00
Valdemar Lorenzen c32d4a7590 feat: refresh diffs when selected jj bookmarks move 2026-10-16 18:52:49 +02:00
Valdemar Lorenzen 1a02502488 feat: mark fully checked collapsed diff folders 2026-10-16 18:52:48 +02:00
Valdemar Lorenzen a93afc7d16 fix: hide diff scope labels for visible declarations
The visible declaration already provides scope context. Cache the actual
identifier point separately from the declaration extent/decorators and hide
labels when it is visible in that side of the projected viewport.

Refill reclaimed rows and anchor carets against the resulting layout.
Retain sticky context when the symbol scrolls or wraps out of view.

Verified: 951 tests passed, cargo build, and real PTY smoke for declaration
visibility/scroll restoration, wrapping, horizontal clipping, unified view,
and short horizontal-pane caret reflow.
2026-10-16 18:52:48 +02:00
Valdemar Lorenzen 39fd3a669b fix: avoid repeated scope labels within diff excerpts
Compare each side with its preceding source row within the same excerpt,
not the adjacent aligned pair: alignment holes must not restart labels.
Retain sticky context independently on each side, including leading holes.

Regression: merged Python insert/delete hunks emitted five labels instead
of one. Verify deduplication, folded excerpt restart, and sticky-gap context.

Verified: cargo test (950 passed), cargo build, and real PTY smoke covering
split/unified, wrap, sticky gaps, and a short horizontal pane source caret.
2026-10-16 18:52:47 +02:00
Valdemar Lorenzen a43094dda3 feat: show diff hunk scope labels
Show per-side Tree-sitter scope paths inline and as sticky continuation labels.
Keep presentation rows out of source coordinates, selections, and edits.

Verified: cargo test (949 passed), cargo build, and real PTY smoke covering
split/unified, wrapping, both split axes, sticky scrolling, live rename and undo.

Size exception: 549 implementation lines added plus deleted, excluding tests
and docs. Keep syntax extraction and coordinate-safe rendering together as one
working behavior.
2026-10-16 18:52:46 +02:00
Valdemar Lorenzen 75dc31b66f fix: avoid indentation-only wrapped rows
The shared wrapper treated leading whitespace as a usable word boundary,
pushing a long first token onto a continuation and leaving a numbered blank row.
Only record boundaries after non-whitespace content on the current visual row.
Preserve source whitespace, tab stops, caret rows and paired diff alignment.

Verified: 945 tests, formatting, and live ordinary/split-diff fixture smoke,
including wrap off/on and aligned closing brackets.
2026-10-16 18:52:46 +02:00
Valdemar Lorenzen 16490942d6 fix: coalesce fragmented word-diff highlights 2026-10-16 18:52:45 +02:00
Valdemar Lorenzen 3a7e2074b4 fix: move word search activation onto its match 2026-10-16 18:52:45 +02:00
Valdemar Lorenzen f5c6d098f8 fix: retain current occurrence when submitting search 2026-10-16 18:52:44 +02:00
Valdemar Lorenzen adc44d22db fix: clear search highlighting on Normal escape 2026-10-16 18:52:44 +02:00
Valdemar Lorenzen de62467208 fix: highlight all search matches before word navigation 2026-10-15 12:16:14 +02:00
Valdemar Lorenzen 7b3b3866fd feat: add Vim-style word search 2026-10-15 12:12:11 +02:00
Valdemar Lorenzen 2fd240aca8 feat: add Zig syntax highlighting 2026-10-15 11:56:54 +02:00
Valdemar Lorenzen 08db1801eb fix: increase LSP hover window height 2026-10-15 11:53:07 +02:00
Valdemar Lorenzen 5396968b08 fix: clarify conflict pane roles and status indicators
Use Resolution and Other version borders, omit branch/path metadata,
and show unsaved output state only on the writable pane. Track native
explorer conflict C from authoritative jj state across draft/check/error
transitions and clear it only after confirmed resolution.

Focused resolver and save tests pass; live terminal labels and explorer
verified without saving the mock conflicts. Full library run: 795 pass,
one unrelated async plugin fixture_barrier startup failure.
2026-10-15 11:19:50 +02:00