Repository navigation
Semantic keymap: validated remapping, conflicts and host notes (#335) - #378
Closed
raiseCatError wants to merge 5 commits into
Closed
raiseCatError wants to merge 5 commits into
raiseCatError wants to merge 5 commits into
Conversation
#335, stacked on the workspace foundation. A keymap is declarative data (bind/unbind entries by key name, context and action), validated before use and never executed. - Only keys the input parser tells apart are bindable; others (Ctrl+B, Cmd+K, Alt+Left) are refused with the reason. - Job control, paste and pointer events are never bindable; in the composer neither are typing and Enter. - Every bindable key already means something in an empty composer (Left opens Sessions, Right accepts the inline suggestion...), recorded from the composer's dispatch; a composer binding needs "replaces": true, and an active draft still wins. - Conflicts keep the first binding; invalid entries are skipped and reported while the defaults stand; an action left with no key and no command, or a sidebar with no way back, is reported. - hostNotes: Terminal.app's own Page Up/Down and Home/End scrolling, F1 on macOS, a tmux root-table binding, tmux's escape-time. - describeKeymap lists the bindings in effect and the commands that always work.
…ot edit the same file
17 tasks
…Up key's shared meaning is noted - "unknown field" echoed the JSON key raw into /keys, so a field name with an OSC or CSI sequence reached the terminal. It goes through the workspace's resourceText now. - The keymap document records that the background task bar shares Up from an idle composer, for integration.
raiseCatError
added a commit
that referenced
this pull request
Oct 11, 2026
…sk quality and security pass New heads for #375-#378, #383 and #384; a prioritized findings table with the fixes and their commits; the investigated locations that are not vulnerabilities (the demo renderer, configAssist.ts:164, the session socket, Git in untrusted repositories, dependencies); what cannot be validated before integration; and the contract changes Codex needs at integration, including one precedence for Up from an idle composer.
This was referenced Oct 13, 2026
Owner
Author
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.
#335, stacked on the workspace foundation (#375). Standalone; independent of the sidebar (#376) and panel PRs.
A keymap is declarative data (
bind/unbindby key name, context and action), validated before use, never executed:Ctrl+B,Cmd+K,Alt+Leftand the like are refused with the reason (the terminal may send them as something else or not at all).TerminalApp.ts:2052—, Right accepts the inline suggestion, Up recalls history, Tab completes, Shift+Tab moves through blocks…); a composer binding needs"replaces": true, and an active draft still wins.hostNotes: Terminal.app's own Page Up/Down and Home/End scrolling, F1 on macOS, a tmux root-table (bind -n) binding, tmux'sescape-time. Notes, never delivery guarantees; slash commands remain the reliable path.describeKeymap: the bindings in effect plus the commands that always work.Integration (later, with the frontend):
keymap.jsonin the config directory,/keysand/keys reload.Tests:
tests/workspaceKeymap.test.ts. Design:docs/design/workspace-keymap.md. Physical checks of host delivery (Ghostty, Terminal.app, tmux) are listed, not performed.Update (55bf55c, 1dc8a24), quality pass: merges the foundation fixes. "unknown field" echoed the keymap file's JSON key raw into
/keys, so a field name carrying an OSC/CSI sequence reached the terminal; it is shown throughresourceTextnow (regression added). The doc records that the background task bar (#384) shares Up from an idle composer, soCOMPOSER_MEANINGS.upmust name it at integration. CI green on1dc8a24after one rerun: the first run failed onlytests/configuredCompletion.test.ts("startup timeout and cancellation…", a timing test outside this branch; passes locally).