Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ea4e27c
Add dead terminal input regression
austinywang May 13, 2026
9305c65
Discard input after terminal child exit
austinywang May 13, 2026
8a2ee18
Add stale keyboard garble regression
austinywang May 13, 2026
b5d3496
Reset terminal keyboard protocols at prompt
austinywang May 13, 2026
7f6476d
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
fadf469
Address terminal input review feedback
austinywang May 13, 2026
9fc629d
Address follow-up input review feedback
austinywang May 13, 2026
25dd3da
Address child exit input feedback
austinywang May 13, 2026
3bbf93b
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
153a8bf
Serialize terminal socket writes with child exit
austinywang May 13, 2026
149085f
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
c574fb3
Fix terminal input CI blockers
austinywang May 13, 2026
8cd9e2e
Unify terminal socket input routing
austinywang May 13, 2026
2108d8b
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
47562bd
Preserve queued terminal text semantics
austinywang May 13, 2026
366a49b
Report accepted terminal socket input
austinywang May 13, 2026
e623794
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
d903dbe
Fix dead terminal regression after input path merge
austinywang May 13, 2026
6c1eb23
Preserve first terminal teardown reason
austinywang May 13, 2026
69d214d
Preserve direct surface send readiness wait
austinywang May 13, 2026
3bae061
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
73eb451
Add dead PTY startup command regression
austinywang May 13, 2026
53a2e13
Disable wait-after-command for cmux terminals
austinywang May 13, 2026
9fbf89e
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 13, 2026
fefc529
Fix dead PTY test seam visibility
austinywang May 13, 2026
1c8a0cf
Remove duplicate keyboard reset helpers
austinywang May 13, 2026
96d6fba
Add dead terminal socket response regression
austinywang May 13, 2026
5bcda78
Report blocked terminal socket input
austinywang May 13, 2026
b1b3ea3
Address terminal input review feedback
austinywang May 13, 2026
abdde1f
Preserve dead terminal input contracts
austinywang May 14, 2026
82e0ddb
Avoid dead terminal surface send wait
austinywang May 15, 2026
e2eb23a
Avoid duplicate bash keyboard reset
austinywang May 15, 2026
caffcb7
merge: resolve conflicts with main
austinywang May 17, 2026
3666b34
Fix terminal socket input helper
austinywang May 18, 2026
dc76450
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 18, 2026
4702b00
Add remote split wait-after-command regression
austinywang May 18, 2026
6afd698
Fix remote startup wait-after-command override
austinywang May 18, 2026
3afa414
Address split terminal config feedback
austinywang May 18, 2026
fb29444
Merge branch 'main' of https://github.com/manaflow-ai/cmux into issue…
austinywang May 19, 2026
a5c9a38
fix: clarify pending terminal input synchronization
austinywang May 19, 2026
bfe100c
Merge branch 'main' of https://github.com/manaflow-ai/cmux into issue…
austinywang May 22, 2026
2cfbd16
fix: lock pending socket input startup check
austinywang May 22, 2026
53bb46d
Merge remote-tracking branch 'origin/main' into issue-3998-dead-pty-g…
austinywang May 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions Resources/shell-integration/cmux-bash-integration.bash
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,18 @@ _cmux_restore_scrollback_once() {
fi
}
_cmux_restore_scrollback_once

_cmux_reset_terminal_keyboard_protocols() {
[[ -t 1 || -n "${CMUX_TEST_FORCE_KEYBOARD_RESET:-}${CMUX_TEST_FORCE_KITTY_RESET:-}" ]] || return 0
# A crashed TUI may leave keyboard protocol state pushed. At a fresh shell
# prompt, return terminal input encoding to plain readline bytes.
printf '\033[>m\033[<8u'
}

_cmux_reset_kitty_keyboard_protocol() {
_cmux_reset_terminal_keyboard_protocols
}

_CMUX_CLAUDE_WRAPPER="${_CMUX_CLAUDE_WRAPPER:-}"
_CMUX_GROK_WRAPPER="${_CMUX_GROK_WRAPPER:-}"
_cmux_install_cli_wrapper() {
Expand Down Expand Up @@ -427,13 +439,6 @@ _cmux_report_shell_activity_state() {
} >/dev/null 2>&1 & disown
}

_cmux_reset_terminal_keyboard_protocols() {
[[ -t 1 || -n "${CMUX_TEST_FORCE_KEYBOARD_RESET:-}${CMUX_TEST_FORCE_KITTY_RESET:-}" ]] || return 0
# A crashed TUI may leave keyboard protocol state pushed. At a fresh shell
# prompt, return terminal input encoding to plain readline bytes.
printf '\033[>m\033[<8u'
}

_cmux_ports_kick() {
local reason="${1:-command}"
# Lightweight: just tell the app to run a batched scan for this panel.
Expand Down Expand Up @@ -1206,6 +1211,7 @@ _cmux_bash_preexec_hook() {
_cmux_prompt_command() {
local last_status=$?
_cmux_tmux_sync_cmux_environment
_cmux_reset_terminal_keyboard_protocols
Comment thread
cursor[bot] marked this conversation as resolved.

local cmux_has_unix_socket=0
_cmux_socket_is_unix && cmux_has_unix_socket=1
Expand All @@ -1220,7 +1226,6 @@ _cmux_prompt_command() {
fi

if [[ -n "$CMUX_PANEL_ID" ]]; then
_cmux_reset_terminal_keyboard_protocols
_cmux_report_shell_activity_state prompt
fi
_cmux_report_tty_once
Expand Down
20 changes: 12 additions & 8 deletions Resources/shell-integration/cmux-zsh-integration.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,17 @@ _cmux_restore_scrollback_once() {
}
_cmux_restore_scrollback_once

_cmux_reset_terminal_keyboard_protocols() {
[[ -t 1 || -n "${CMUX_TEST_FORCE_KEYBOARD_RESET:-}${CMUX_TEST_FORCE_KITTY_RESET:-}" ]] || return 0
# A crashed TUI may leave keyboard protocol state pushed. At a fresh shell
# prompt, return terminal input encoding to plain readline bytes.
printf '\033[>m\033[<8u'
}

_cmux_reset_kitty_keyboard_protocol() {
_cmux_reset_terminal_keyboard_protocols
}

_cmux_now() {
print -r -- "${EPOCHSECONDS:-$SECONDS}"
}
Expand Down Expand Up @@ -550,13 +561,6 @@ _cmux_report_shell_activity_state() {
_cmux_send_bg "report_shell_state $state --tab=$CMUX_TAB_ID --panel=$CMUX_PANEL_ID"
}

_cmux_reset_terminal_keyboard_protocols() {
[[ -t 1 || -n "${CMUX_TEST_FORCE_KEYBOARD_RESET:-}${CMUX_TEST_FORCE_KITTY_RESET:-}" ]] || return 0
# A crashed TUI may leave keyboard protocol state pushed. At a fresh shell
# prompt, return terminal input encoding to plain readline bytes.
printf '\033[>m\033[<8u'
}

_cmux_ports_kick() {
local reason="${1:-command}"
# Lightweight: just tell the app to run a batched scan for this panel.
Expand Down Expand Up @@ -1389,13 +1393,13 @@ _cmux_precmd() {
fi
_cmux_stop_git_head_watch
_cmux_tmux_sync_cmux_environment
_cmux_reset_terminal_keyboard_protocols
Comment thread
cursor[bot] marked this conversation as resolved.

local cmux_has_unix_socket=0
_cmux_socket_is_unix && cmux_has_unix_socket=1
(( cmux_has_unix_socket )) || _cmux_has_port_scan_transport || return 0
[[ -n "$CMUX_TAB_ID" ]] || return 0
if [[ -n "$CMUX_PANEL_ID" ]]; then
_cmux_reset_terminal_keyboard_protocols
_cmux_report_shell_activity_state prompt
fi

Expand Down
Loading
Loading