Add navigation shortcuts, clipboard copy, and go-to-path with tab completion#3
Merged
bluestreak01 merged 10 commits intomasterfrom Mar 23, 2026
Merged
Add navigation shortcuts, clipboard copy, and go-to-path with tab completion#3bluestreak01 merged 10 commits intomasterfrom
bluestreak01 merged 10 commits intomasterfrom
Conversation
…-path with tab completion, and editor text color fix - Shift+Tab cycles panels in reverse order - PageUp/PageDown/Home/End in CI panel for fast navigation - Ctrl+C copies filename, Ctrl+P copies full path to clipboard - Ctrl+G opens go-to-path input with tab-completion (directories, case-insensitive) - Editor default text color changed to white for readability - Go-to-path input text uses editor_text_fg for consistency Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…upport - Completions dropdown renders as overlay instead of pushing panel down - Go-to-path input and dropdown use dialog color scheme with border - Up/Down arrow keys cycle through completions alongside Tab/Shift+Tab Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d perf Terminal panel: - F12 spawns `claude` in a PTY in the opposite panel using portable-pty - vt100 crate parses terminal output into a cell grid rendered via ratatui - All keystrokes forwarded (arrows, Ctrl combos, function keys) - Tab/Shift+Tab switches focus, F12 closes, auto-closes on exit - Coalescing wakeup mechanism avoids redundant renders on output bursts - Efficient rendering: no per-cell String allocation, direct push into span accumulator Bug fixes: - Fix UTF-8 panic in completion apply: use char count instead of byte slicing - Fix UTF-8 panic in go-to-path scroll: use char_indices for valid boundaries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…w keybindings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rade, perf Terminal panel: - F5 scans terminal for file:line patterns and opens in editor at that line - Scrollback buffer (10K lines) with trackpad/mouse scroll support - Typing auto-scrolls to bottom - Upgrade vt100 0.15→0.16: cell.contents() returns &str (zero allocation) - Upgrade ratatui 0.29→0.30 (required by vt100 0.16 unicode-width dep) - Zero-alloc render loop: reuse text buffer and spans vec across rows - Skip contents() call for empty cells via has_contents() check - Combined modifier flags in single pass Bug fixes: - Preserve file selection across filesystem watcher reloads (fixes Linux inotify) - Preserve cursor position across reloads - Fix panic in parse_file_reference with multi-byte whitespace Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d PR state - Clicks inside terminal panel no longer pass through to file panel - F1 switches focus out of terminal (Tab forwarded to claude for autocomplete) - F12 shown in main panel footer - PR display: merged (● magenta), closed (✘ red), open (check status as before) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Ctrl+F opens fuzzy file finder in the active panel - Recursively walks directory tree (10K file cap, skips .git/node_modules/target) - Fuzzy matching: chars match in order, scored by consecutive/boundary/filename bonuses - Pre-computed lowercase chars and filename offsets — zero allocation per keystroke - Dialog-styled overlay dropdown with result count - Tab/Up/Down to cycle, Enter to open in editor, Esc to cancel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
16 tests covering: - Exact, prefix, substring, path, and case-insensitive matching - No-match cases (wrong order, missing chars, query too long) - Scoring quality: consecutive > spread, filename > deep path, short > long, word boundary bonus - Directory walker: skips .git, finds source files - FuzzySearchState integration: update_results filtering and ranking Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Clippy fixes: - Box large AppMode variants (Viewing, HexViewing, Editing) to reduce enum size - Rename UnsavedDialogField variants to drop redundant Button prefix - Add type aliases for complex CI panel types (ChecksReceiver, PendingStepFetch) - Refactor render_tree to use context struct (reduces arg count) - Use strip_prefix instead of manual prefix stripping - Use iter().flatten() instead of if-let inside for loop - Allow too_many_arguments on render_checkbox (many call sites) - Apply all auto-fixable clippy suggestions Tests (30 fuzzy + 14 go-to-path + 15 terminal = 59 new): - Fuzzy search: unicode, single-char, dotfiles, duplicate chars, deep paths, truncation, empty list, navigation wrapping, extension-only, query with slash - Go-to-path: tilde expansion, trailing slash, apply_completion, common prefix, populate_completions (real FS), case-insensitive, invalid dir - Terminal: parse_file_reference patterns, encode_key_event for all key types Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
claude(Claude Code):portable-pty+vt100crate&strcells, reused buffers)file:linereferences and opens in editor●in magenta, closed show✘in redTest plan
🤖 Generated with Claude Code