Repository navigation
Conversation
Command mode dispatched each key on its own and let an unbound one fall through silently, so a word typed in the wrong mode taught the user nothing at its first letter and fired whatever verbs its later letters spelled: `ls -la` split at the `-`, `cd` minimized, `git` toggled TODO, `exit` opened the kill prompt, `sudo` ran Reopen. The command-mode chain now ends with a stray-key check: a printed character (Space included) or Backspace, unmodified but for Shift, that no binding claims raises an in-pane "That's not a shortcut" prompt shaped like the kill confirmation. A bound key whose verb is inert on the selection (`t` on a Door) is not a stray; a bare Wall's digits are. While the prompt shows it answers every key ahead of the dialog gate: Escape dismisses it, Enter dismisses it and then acts as usual, modifiers and host chords pass, and every other key is swallowed, so nothing reaches a verb or the Session. A mode or selection change, or a kill confirmation, takes it down. It lists the command-mode keys, a list a test pins against the real dispatch. Closes #68. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
09124f3
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://dd8f8f86.mouseterm.pages.dev |
| Branch Preview URL: | https://issue-68-stray-key-prompt.mouseterm.pages.dev |
dormouse-bot
left a comment
Collaborator
There was a problem hiding this comment.
Space as a stray preempts Space on a focused Wall control. Details are inline.
Tab is unbound in command mode, so it moves DOM focus onto pane-header controls, and Space is how those activate since Enter is a pane verb. The stray check claimed Space before they saw it: a focused header button stopped activating, and the browser URL span raised the prompt instead of opening its editor. A key the focused control uses (Space on a button-like control, any key in a text field or select) is no longer a stray. xterm's input proxy is excluded from that, so a key on it still raises the prompt and never reaches the PTY. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test drives the real command-mode chain, so `Enter`, `a`, and `t` reach `acknowledgeSession`, `dismissSessionAlert`, and `toggleSessionTodo`, which read the session activity store and threw "Platform not initialized" inside the keydown listener. Vitest counted those as unhandled errors and failed the Library Tests run though every assertion passed. Mock them as handle-pane-shortcuts.test.ts does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve scripts/spec-word-budgets.json by taking the larger budget per spec. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve scripts/spec-word-budgets.json by taking the larger budget per spec. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 31, 2026
Brings in #1487's story-clock fix for the access-log story, which is the one changed Argos snapshot every open PR showed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Command mode dispatched each key on its own and let an unbound one fall through silently, so a word typed in the wrong mode taught the user nothing at its first letter and fired whatever verbs its later letters spelled:
ls -lasplit at the-,cdminimized,gittoggled TODO,exitopened the kill prompt,sudoran Reopen.The command-mode chain now ends with a stray-key check: a printed character (Space included) or Backspace, unmodified but for Shift, that no binding claims raises an in-pane "That's not a shortcut" prompt shaped like the kill confirmation. A bound key whose verb is inert on the selection (
ton a Door) is not a stray, nor is a key the focused control uses (Space on a button-like control, any key in a text field or select); a bare Wall's digits are, and so is any key on xterm's input proxy. While the prompt shows it answers every key ahead of the dialog gate: Escape dismisses it, Enter dismisses it and then acts as usual, modifiers and host chords pass, and every other key is swallowed, so nothing reaches a verb or the Session. A mode or selection change, or a kill confirmation, takes it down. It lists the command-mode keys, a list a test pins against the real dispatch.Closes #68.
Design decisions from the maintainer: an in-pane prompt, not a window modal. Space, Backspace, and a bare Wall's digits count as strays.
uReopen stays instant. The prompt answers keys in the chain ahead of the dialog gate, as the kill confirmation does, rather than taking a dialog lease.Not verified in the live standalone app, VS Code, or the website playground (the playground and tutorial now show the prompt too). Known limit: a command whose first letter is bound (
make,docker) still fires that verb.🤖 Generated with Claude Code