Commit Graph

204 Commits

Author SHA1 Message Date
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
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
hl-valdemar 4aff22377f fix: focus After when opening a diff file 2026-10-14 21:47:23 +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 dcfa50319c fix: preserve lazy snapshots for conflicted jj revisions
Conflicted revisions read every file through jj file show, which returns
empty output for symlinks and causes repository-wide subprocess fanout.
Keep ordinary Git blob sources and immutable identities; render only
selected conflicted paths through jj.

Verified all 905 tests and the original local bookmark comparison with
25 correct paths in 0.522s, plus actual terminal conflict viewing.
Strict Clippy is blocked by existing diagnostics outside this change.
2026-10-14 15:49:26 +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
Valdemar Lorenzen 77a9111f45 fix: align diff picker review checkmarks 2026-10-14 14:36:15 +02:00
Valdemar Lorenzen 6b27fab075 fix: read macOS clipboard without subprocess startup 2026-10-14 14:26:22 +02:00
Valdemar Lorenzen 0000089f42 feat: stream newest pull requests by category 2026-10-14 14:26:22 +02:00
Valdemar Lorenzen 5243de66fe fix: resolve SSH aliases for forge discovery 2026-10-14 13:51:49 +02:00
Valdemar Lorenzen af6496bd5a feat: browse GitHub GitLab and Gitea pull requests 2026-10-14 13:40:43 +02:00
Valdemar Lorenzen 15968a328c fix: preserve diff backgrounds and align file markers 2026-10-14 13:40:41 +02:00
Valdemar Lorenzen 8a1e98819c fix: support mutable language tab configuration 2026-10-14 13:13:01 +02:00
Valdemar Lorenzen c5f80f27a6 fix: replace selected ranges instead of ignoring visual paste 2026-10-14 13:13:01 +02:00
Valdemar Lorenzen 5580d6fbd4 refactor: share language IDs with indentation configuration 2026-10-14 13:12:50 +02:00
Valdemar Lorenzen 6a43fb9e0c feat: configure spaces on Tab per language 2026-10-14 13:12:46 +02:00
hl-valdemar a8428f9dde docs: investigate two-column diff hatching 2026-10-14 00:09:42 +02:00
hl-valdemar cd427f74dc fix: replace selected characters with visual r 2026-10-14 00:09:42 +02:00
hl-valdemar 11b31d2621 feat: dim whitespace markers and configure scope and newlines 2026-10-13 23:33:42 +02:00
hl-valdemar adcc4f2656 fix: preserve literal whitespace inside strings 2026-10-13 23:12:57 +02:00
hl-valdemar 2357b5be46 feat: add configurable whitespace markers 2026-10-13 22:58:18 +02:00
hl-valdemar e2f33519d1 feat: add opt-in trailing whitespace highlighting 2026-10-13 22:53:32 +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 142b00118a fix: prioritize diagnostics over repository number colors 2026-10-13 21:54:10 +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 e84d70463f feat: add counted word change actions
Add cw/cb and configurable core actions using the same line-local spans as dw/db. Enter Insert with grouped replacement undo and native dot repeat.
2026-10-13 17:43:13 +02:00
hl-valdemar 983f43e710 fix: keep counted word deletions within the current line
Word deletion reused cross-line word motion destinations. Constrain token traversal and boundary fallbacks to each caret’s current row while preserving cross-line navigation.
2026-10-13 17:35:09 +02:00
hl-valdemar 99fa5a2aff feat: track checkout identity for pinned diff editability 2026-10-13 17:28:59 +02:00
hl-valdemar e3e087f16f fix: use two columns between buffer IDs and filenames 2026-10-13 17:03:57 +02:00
hl-valdemar 33942b2671 fix: place current buffer marker before its ID 2026-10-13 16:38:14 +02:00
hl-valdemar 0eec3fc3b9 fix: refine buffer picker markers and paths 2026-10-13 16:31:53 +02:00