fix(tmux): set extended-keys per-session to avoid breaking dashboard Ctrl shortcuts#373
Closed
rhukster wants to merge 1 commit intoasheshgoplani:mainfrom
Closed
fix(tmux): set extended-keys per-session to avoid breaking dashboard Ctrl shortcuts#373rhukster wants to merge 1 commit intoasheshgoplani:mainfrom
rhukster wants to merge 1 commit intoasheshgoplani:mainfrom
Conversation
…key input The extended-keys option was set server-wide (`set -sq`), which caused tmux to activate xterm modifyOtherKeys mode on the outer terminal (iTerm2, etc.). This persisted even after the tmux option was turned off, causing Ctrl+R and other modified keys to be sent as escape sequences that Bubble Tea cannot parse — breaking the recent sessions picker and other Ctrl-key shortcuts in the dashboard. Two fixes: - tmux.go: changed `set -sq extended-keys on` to per-session `set-option -t <session> -q extended-keys on` at both call sites - keyboard_compat.go: also disable xterm modifyOtherKeys (ESC[>4;0m) on TUI startup alongside the existing Kitty protocol disable, as a defense-in-depth measure Fixes regression introduced in b427418 (asheshgoplani#342).
asheshgoplani
added a commit
that referenced
this pull request
Mar 18, 2026
…ing dashboard Ctrl shortcuts
Owner
|
Merged to main manually (rebased and conflict-resolved). The extended-keys option is now set per-session instead of server-wide. Thank you for the fix! |
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
set -sq extended-keys on(server-wide) toset-option -t <session> -q extended-keys on(per-session) at both call sites (Start()andEnableMouseMode())ESC[>4;0m) on TUI startup as defense-in-depth, alongside the existing Kitty protocol disableDisableKittyKeyboard/RestoreKittyKeyboardtests, added Ctrl+R recent picker testsProblem
The
extended-keys onoption introduced in b427418 (#342) was set with-s(server-wide), which caused tmux to activate xterm modifyOtherKeys mode on the outer terminal (iTerm2, etc.). This mode persists even after the tmux option is turned off, causing modified keys like Ctrl+R to be sent as escape sequences (\x1b[27;5;114~) instead of legacy bytes (0x12). Bubble Tea v1.3.10 cannot parse these sequences, breaking:Root Cause
set -sq extended-keys onis a server-level setting that affects all sessions on the tmux server, including the dashboard's terminal. When any child session starts, tmux negotiates modifyOtherKeys mode 2 with the outer terminal — and this terminal state persists independently of tmux's own setting.Fix
extended-keysper-session so only child sessions (where Shift+Enter is needed) get it, not the dashboard\x1b[>4;0mon TUI startup to reset the terminal in case it was previously poisonedTest plan
TestDisableKittyKeyboard/TestRestoreKittyKeyboardupdated and passTestNewDialog_CtrlR_OpensRecentPicker/TestNewDialog_CtrlR_HintHiddenWhenNoRecentspass