Repository navigation
feat(explorer): common hotkeys in the Explorer and the project tree (#330) - #331
Merged
Merged
Conversation
…330) The owner, 2026-10-07: "add common hotkeys to the explorer and project so that for example ctrl + A selects all". One pure mapping (lib/listKeys.ts) for the Explorer's list and the project tree: - Ctrl+A selects all; Ctrl+Shift+A and Esc clear. - Shift+Up/Down/Home/End extend from the anchor (rangeSelect), quiet (#263). - Ctrl+Up/Down/Home/End move the keyboard's place without marking; Ctrl+Space marks or unmarks it. Not Ctrl+Left/Right (2026-09-01 rule). - Ctrl+Shift+N makes "New folder" ("(2)" and on, named in main, never in a zip) and starts its rename; undo kind mkdir bins it only while empty, and the rename that follows folds into it, so one Ctrl+Z takes it away. - Ctrl+D and Shift+Delete are Delete: the question, then the Recycle Bin. - Alt+Up is the tree's parent row; type-to-jump in the tree on a match only. - F3 opens the folder search / tree filter; the PDF yields a claimed F3. - Alt+Enter opens Properties; Ctrl+Shift+C copies the full paths; Ctrl+Enter opens a folder in a new Explorer tab. Every key is behind the typing guard and claimed: App leaves Shift/Ctrl arrows to the lists, the archive panel's and the tree's Ctrl+A step aside for the other surface, tree rows ignore chords. New e2e scenario `hotkeys`. Version 0.97.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
- Alt+Up in the tree no longer walks to the row above first: App leaves Alt+Up/Down to the lists, as it does Shift and Ctrl, so the row above is never opened or played on the way to the parent. - A folder row honours cursorMarks: after Ctrl+Up/Down, Esc or Ctrl+Space only the marks light it, as on a file row. - The marks decide what Delete, Ctrl+D and Shift+Delete take in the tree, the Explorer list's rule: a row the Ctrl keys or Esc left unlit is never binned. - Esc as "clear" yields to a nearer closer (lib/nearerEscape: anything with data-owns-escape, the sidebar peek), so the peek and the PDF find bar close. - Type-to-jump takes letters only: a digit is the player's seek and . , its frame step, and a jump opens what it lands on. - After a rename the keyboard follows the row to its new name, and Escape in the name keeps it on the row (Ctrl+Shift+N always ends in a rename). - A letter chord matches the physical key only when the layout's own key is not a Latin letter (AZERTY's Ctrl+Q is not Ctrl+A). - Shift+Delete is Delete from the viewer too (the tree's window listener and App's Explorer viewer). The hotkeys e2e now covers a paused film under every claimed chord, Ctrl and Shift+Home/End on both surfaces, Alt+Left/Right and a second Ctrl+Space in the tree, Ctrl+Shift+N from a file row, Ctrl+Enter on a file, the inert keys inside a zip, a letter the PDF would take, a digit that is not a jump, Esc yielding to the PDF find bar, Alt+Up past a row that is not the parent, and the bin keys off the marks. sidebarPeek: Esc on a row puts the peek away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t
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.
The owner, 2026-10-07: "add common hotkeys to the explorer and project so that for example ctrl + A selects all".
One pure mapping,
lib/listKeys.ts(unit-tested), for the Explorer's list and the project tree, so the same chord does the same thing on both. Every key is behind the typing guard, comes from the rows only, and is CLAIMED, because the player, the PDF and the archive panel listen on the window.Keys
Not mapped: Ctrl+Left/Right (Left and Right are not navigation keys, 2026-09-01). Inside a zip, Ctrl+D, Ctrl+Shift+N and Alt+Enter do nothing.
The four decisions (owner, in the session)
A rule change: new folder
CLAUDE.md said "new folder" was a fresh decision, not a natural next step. The owner said yes to Ctrl+Shift+N: main names it "New folder", "(2)" and on, checks the place, never inside a zip; the rename starts at once; undo kind
mkdirbins it only while it is still empty, and the rename that follows folds into it, so one Ctrl+Z takes it away.Review fixes (second commit)
data-owns-escape)..,are the player's.Rejected: an e2e for the archive panel's Ctrl+A stepping aside.
ArchiveViewrenders only on the phone page now (#300), where there is no tree or Explorer list, so the guard cannot be reached on the desktop; it stays as a defensive line.Tests
npm run typecheck,npm run lint(0 errors),npm test: 2604 passed.hotkeys(new; every key on both surfaces, a paused film under every claimed chord, a zip, the PDF, Esc yielding, the bin keys off the marks),sidebarPeek(Esc on a row puts the peek away), andtreeNav,selection,markTint,rightClickSelect,treeVerbs,deleteAgain,arrowKeys,deleteLast,searchNav: all passed.Version 0.97.0. Unsigned, as every release until the SignPath enrolment.
Closes #330
🤖 Generated with Claude Code
https://claude.ai/code/session_01FHHaWKR4M5QtW7Wecyuk4t