feat(path-cli): native ratatui picker — Atuin-style selection, skim removed - #155
Open
od0 wants to merge 14 commits into
Open
feat(path-cli): native ratatui picker — Atuin-style selection, skim removed#155od0 wants to merge 14 commits into
od0 wants to merge 14 commits into
Conversation
…eview hygiene Adversarial-review findings: nucleo reports grapheme positions, so highlight spans now segment identically (unicode-segmentation); TermGuard::new undoes raw mode on partial failure; preview kill slot parks replace-and-kill keyed by spawn generation (no zombie or ABA reap); honest equal-score tiebreak test; style-level assertions on highlight spans; inline restore homes the cursor to the viewport origin; preview jobs pause while the pane is hidden.
|
🔍 Preview deployed: https://51d61dcc.toolpath.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the embedded skim backend with a first-party ratatui picker behind the existing
fuzzy::pickseam — all ~26 call sites (p import,share,resume) upgrade with zero call-site changes. UX inspired by Atuin. External fzf stays untouched as the escape hatch (--picker fzf).What's in the box
crates/path-cli/src/tui/—mod.rs(event loop, terminal lifecycle),state.rs(purehandle_event, event-vector testable),render.rs(layout ladder, match-highlight spans),matcher.rs(nucleo-matcher + a real parser for fzf--with-nthnotation),preview.rs(debounced async preview via std::thread + mpsc, per-row cache, kill-on-supersede).DEFAULT_LAYOUT, one-line constant): inline compact at the bottom of the terminal when no preview is configured (Atuin-style); fullscreen when a preview is configured — side-by-side ≥100 cols, stacked below.'exact,^prefix,!negate. Hidden columns (with_nth) are neither shown nor searchable, same as fzf.{exe} show --ansi …shell templates as before, 100 ms debounce, ANSI → ratatui via ansi-to-tui with plain-text fallback; loading/error states render in-pane and never kill the picker.skim_picker.rsdeleted;embedded-pickerfeature repointed toratatui/crossterm/nucleo-matcher/ansi-to-tui/unicode-segmentation— all already in the tree (skim 4.x was itself a ratatui app), and the lockfile sheds skim/tui-term/portable-pty/frizbee.--picker skimis a hidden alias fornativewith a one-time deprecation note.Verification
RUSTFLAGS="-D warnings";scripts/quality_gates.sh -site7/7 PASS.cargo test -p path-cli --test picker_pty -- --ignored): accept-first-row exits 0 with a cache id on stdout; Esc exits 130. Both pass locally.Rebase notes
path resume --remote <ssh-url>— resume a session on a remote host #145 and the sibling bare-resume PR also claim 0.17.0 — whichever lands second renumbers.cmd_resume.rs/cmd_share.rslogic; feat(resume):path resume --remote <ssh-url>— resume a session on a remote host #145/feat(resume): remote persistence & transport picker (--persist / --via) #146/Plugin /path:resume + /path:link-pr; fixes that make projected Claude sessions resumable #150 are untouched surface.Spec + plan:
docs/superpowers/{specs,plans}/2026-08-03-native-picker*.Sibling PR: bare
path resume(#110) adds a session picker above this same seam — independent; either merges first.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.