Commit Graph

73 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 b558f82094 feat: persist local reviews automatically in SQLite 2026-10-16 18:53:01 +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 4cc0453344 fix: retain selections and float local review editors 2026-10-16 18:52:58 +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 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 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 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 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 168e12160a refactor: route conflict resolution through the diff workspace
Use the active DiffState, native FilePicker and existing diff input,
layout, focus, source navigation and scrolling paths for Resolution.
Delete separate resolver filtering, file-list rendering and scroll APIs.
Keep projections, source choices, History and guarded jj saves distinct.

Verify native parity for picker remaps, current-file selection, excerpt
initialization, folded search, wheel focus, layouts, buffer transitions
and per-file viewports. All 932 tests pass; actual terminal smoke covers
Space-e explorer, Down/Enter file selection and guarded confirmed save.
Clippy completes with existing warnings only.

Size exception: 1197 implementation added/deleted lines excluding tests
and docs; input routing, native buffer lifecycle and rendering are kept
as one coherent cutover, without a parallel legacy resolver path.
2026-10-15 10:21:10 +02:00
Valdemar Lorenzen ef4c38d8a7 feat: resolve conflicts through focused two-way drafts
Replace the marker-filled three-pane resolver with a marker-free native
Draft versus frozen Alternative projected from current working text.
Preserve preexisting outside edits, native undo, dirty-save guards, all
sides/bases, and draft caret/viewports across separate History views.
Reuse DiffState alignment/highlighting/excerpts for Resolution and merge
its base-aligned rows for readonly three-way History. Hide explorer and
source-selector chrome by default.

Verified 926 tests plus actual terminal projection, History highlighting,
hunk choice, optional explorer, and guarded jj-confirmed save workflows.
Clippy completes with pre-existing warnings only. Smoke fixtures stay
unresolved in this ancestry; remove that ancestry before publication.

Size exception: approximately 1650 implementation added/deleted lines,
excluding tests/docs, kept coherent because native draft lifecycle and
aligned rendering must change together without parallel legacy modes.
2026-10-14 17:01:45 +02:00
Valdemar Lorenzen a3aef713e2 feat: resolve current jj working-copy conflicts
Add a dedicated native resolver workspace with all side/base inputs,
shared editable Results, region choices, retained per-file status,
responsive rendering, and explicit nontext file choices.

Guard writes with jj working-copy locking, frozen checkout identity,
exact disk baselines, native dirty-buffer protection, and asynchronous
jj snapshot/status confirmation. Historical comparisons remain readonly.

Verified all 916 tests and live isolated terminal workflows covering text
regions, narrow layouts, binary bytes and symlink targets/types.
Clippy completes with pre-existing warnings only.

Size exception: 2614 implementation additions/deletions excluding tests
and docs. Native workspace integration, explicit file choices and the
safe save/check operation are retained as one complete behavioral slice.
2026-10-14 16:04:15 +02:00
Valdemar Lorenzen f26237af78 perf: batch queued cursor navigation events 2026-10-14 15:32:52 +02:00
Valdemar Lorenzen 1cb9a0ddfc fix: retain repository status between picker openings 2026-10-14 14:56:55 +02:00
hl-valdemar b58fb085a3 feat: configure cursor distance from viewport edges 2026-10-13 22:42:23 +02:00
hl-valdemar 00628e0efd fix: stop hiding cached gutter markers while edits refresh 2026-10-13 22:10:03 +02:00
hl-valdemar 9526876b04 feat: show repository changes in normal file pickers 2026-10-13 21:46:53 +02:00
hl-valdemar e90d1c3945 fix: add spacing between line numbers and repository markers 2026-10-13 21:04:51 +02:00
hl-valdemar fd59c05f80 fix: separate gutter bars visually from line numbers 2026-10-13 20:50:50 +02:00
hl-valdemar 55cdee1a13 feat: add Git and Jujutsu gutter indicators 2026-10-13 20:46:44 +02:00
hl-valdemar 99fa5a2aff feat: track checkout identity for pinned diff editability 2026-10-13 17:28:59 +02:00
Valdemar Lorenzen e36c28c981 perf: cache file attribution for instant blame navigation 2026-10-13 12:41:46 +02:00
Valdemar Lorenzen 7a3c27c30e feat: show current-line git blame by default 2026-10-13 12:29:21 +02:00
Valdemar Lorenzen b94739183d perf: avoid JXA startup for macOS clipboard writes 2026-10-13 11:20:02 +02:00
hl-valdemar d1855dbdb7 feat: add configurable diff modes and split orientation 2026-10-13 08:45:43 +02:00
hl-valdemar c35abe0f03 fix: retain alternate screen across executable restart 2026-10-12 23:40:51 +02:00
hl-valdemar d85998e1cb feat: add guarded and forceful editor restart actions 2026-10-12 23:40:51 +02:00
hl-valdemar 298d586c3e feat: reload clean buffers and guard external-change writes 2026-10-12 23:40:50 +02:00
Valdemar Lorenzen 9f1ea04f4d style: move diff metadata into pane borders 2026-10-12 15:23:30 +02:00
Valdemar Lorenzen 054225686e fix: restore tab and diff context through jump history 2026-10-12 15:04:44 +02:00
Valdemar Lorenzen 1b8b669ca0 feat: preserve diff context during LSP navigation 2026-10-12 14:27:16 +02:00
Valdemar Lorenzen 6eb99a792a feat: configure command and search popup anchors 2026-10-12 14:02:04 +02:00
Valdemar Lorenzen 52915ffacf feat: redesign status chrome and floating prompts 2026-10-12 12:55:17 +02:00
Valdemar Lorenzen 8c6a050171 feat: show live battery charge by default 2026-10-12 12:11:19 +02:00
Valdemar Lorenzen 0d3fbc01f8 feat: configure interchangeable top and bottom bars 2026-10-12 11:59:59 +02:00
Valdemar Lorenzen 4cfd068f1c feat: configure chrome segments and anchor groups 2026-10-12 11:35:14 +02:00
Valdemar Lorenzen fc382529c5 feat: add editor tabs 2026-10-12 09:41:28 +02:00
hl-valdemar b41db31831 fix: refresh cached diff colors for external theme updates 2026-10-11 22:01:31 +02:00
hl-valdemar ffdd42fcce fix: refresh diff colors on terminal theme changes 2026-10-11 21:28:02 +02:00
hl-valdemar d6f6203fb6 fix: blend diff highlights with terminal theme colors 2026-10-11 21:05:21 +02:00
hl-valdemar a80f97309b feat: highlight character-level changes in diff panes 2026-10-11 20:14:17 +02:00
hl-valdemar 2756b79f89 feat: support configurable modified-key binding sequences 2026-10-11 19:20:51 +02:00