Merge branch 'main' of https://github.com/manaflow-ai/cmux into issue-2401-vscode-web-local-folders
This commit is contained in:
commit
a1352e0bfb
11 changed files with 60 additions and 1028 deletions
|
|
@ -61,7 +61,6 @@ _CMUX_ASYNC_JOB_TIMEOUT="${_CMUX_ASYNC_JOB_TIMEOUT:-20}"
|
|||
|
||||
_CMUX_PORTS_LAST_RUN="${_CMUX_PORTS_LAST_RUN:-0}"
|
||||
_CMUX_SHELL_ACTIVITY_LAST="${_CMUX_SHELL_ACTIVITY_LAST:-}"
|
||||
_CMUX_TMUX_STATE_SIGNATURE_LAST="${_CMUX_TMUX_STATE_SIGNATURE_LAST:-}"
|
||||
_CMUX_TTY_NAME="${_CMUX_TTY_NAME:-}"
|
||||
_CMUX_TTY_REPORTED="${_CMUX_TTY_REPORTED:-0}"
|
||||
_CMUX_TMUX_PUSH_SIGNATURE="${_CMUX_TMUX_PUSH_SIGNATURE:-}"
|
||||
|
|
@ -265,47 +264,6 @@ _cmux_report_shell_activity_state() {
|
|||
} >/dev/null 2>&1 & disown
|
||||
}
|
||||
|
||||
_cmux_report_tmux_state_payload() {
|
||||
[[ -n "$CMUX_TAB_ID" ]] || return 0
|
||||
|
||||
local state="outside"
|
||||
[[ -n "$TMUX" ]] && state="inside"
|
||||
|
||||
local payload="report_tmux_state $state --tab=$CMUX_TAB_ID"
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
[[ -n "$_CMUX_TTY_NAME" ]] && payload+=" --tty=$_CMUX_TTY_NAME"
|
||||
else
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
payload+=" --panel=$CMUX_PANEL_ID"
|
||||
fi
|
||||
|
||||
printf '%s\n' "$payload"
|
||||
}
|
||||
|
||||
_cmux_tmux_state_report_signature() {
|
||||
local payload="$1"
|
||||
[[ -n "$payload" ]] || return 0
|
||||
[[ -n "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
printf '%s\037%s\n' "$CMUX_SOCKET_PATH" "$payload"
|
||||
}
|
||||
|
||||
_cmux_report_tmux_state() {
|
||||
[[ -S "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
|
||||
local payload=""
|
||||
payload="$(_cmux_report_tmux_state_payload)"
|
||||
[[ -n "$payload" ]] || return 0
|
||||
|
||||
local signature=""
|
||||
signature="$(_cmux_tmux_state_report_signature "$payload")"
|
||||
[[ -n "$signature" ]] || return 0
|
||||
[[ "$_CMUX_TMUX_STATE_SIGNATURE_LAST" == "$signature" ]] && return 0
|
||||
_CMUX_TMUX_STATE_SIGNATURE_LAST="$signature"
|
||||
{
|
||||
_cmux_send "$payload"
|
||||
} >/dev/null 2>&1 & disown
|
||||
}
|
||||
|
||||
_cmux_ports_kick() {
|
||||
# Lightweight: just tell the app to run a batched scan for this panel.
|
||||
# The app coalesces kicks across all panels and runs a single ps+lsof.
|
||||
|
|
@ -543,6 +501,7 @@ _cmux_preexec_command() {
|
|||
|
||||
[[ -S "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
[[ -n "$CMUX_TAB_ID" ]] || return 0
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
|
||||
if [[ -z "$_CMUX_TTY_NAME" ]]; then
|
||||
local t
|
||||
|
|
@ -551,12 +510,8 @@ _cmux_preexec_command() {
|
|||
[[ -n "$t" && "$t" != "not a tty" ]] && _CMUX_TTY_NAME="$t"
|
||||
fi
|
||||
|
||||
if [[ -n "$CMUX_PANEL_ID" ]]; then
|
||||
_cmux_report_shell_activity_state running
|
||||
fi
|
||||
_cmux_report_tmux_state
|
||||
_cmux_report_shell_activity_state running
|
||||
_cmux_report_tty_once
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
_cmux_ports_kick
|
||||
_cmux_stop_pr_poll_loop
|
||||
}
|
||||
|
|
@ -570,21 +525,8 @@ _cmux_prompt_command() {
|
|||
|
||||
[[ -S "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
[[ -n "$CMUX_TAB_ID" ]] || return 0
|
||||
|
||||
if [[ -z "$_CMUX_TTY_NAME" ]]; then
|
||||
local t
|
||||
t="$(tty 2>/dev/null || true)"
|
||||
t="${t##*/}"
|
||||
[[ "$t" != "not a tty" ]] && _CMUX_TTY_NAME="$t"
|
||||
fi
|
||||
|
||||
if [[ -n "$CMUX_PANEL_ID" ]]; then
|
||||
_cmux_report_shell_activity_state prompt
|
||||
fi
|
||||
_cmux_report_tmux_state
|
||||
_cmux_report_tty_once
|
||||
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
_cmux_report_shell_activity_state prompt
|
||||
|
||||
local now=$SECONDS
|
||||
local pwd="$PWD"
|
||||
|
|
@ -601,6 +543,16 @@ _cmux_prompt_command() {
|
|||
fi
|
||||
fi
|
||||
|
||||
# Resolve TTY name once.
|
||||
if [[ -z "$_CMUX_TTY_NAME" ]]; then
|
||||
local t
|
||||
t="$(tty 2>/dev/null || true)"
|
||||
t="${t##*/}"
|
||||
[[ "$t" != "not a tty" ]] && _CMUX_TTY_NAME="$t"
|
||||
fi
|
||||
|
||||
_cmux_report_tty_once
|
||||
|
||||
# CWD: keep the app in sync with the actual shell directory.
|
||||
if [[ "$pwd" != "$_CMUX_PWD_LAST_PWD" ]]; then
|
||||
_CMUX_PWD_LAST_PWD="$pwd"
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ typeset -g _CMUX_ASYNC_JOB_TIMEOUT=20
|
|||
typeset -g _CMUX_PORTS_LAST_RUN=0
|
||||
typeset -g _CMUX_CMD_START=0
|
||||
typeset -g _CMUX_SHELL_ACTIVITY_LAST=""
|
||||
typeset -g _CMUX_TMUX_STATE_SIGNATURE_LAST=""
|
||||
typeset -g _CMUX_TTY_NAME=""
|
||||
typeset -g _CMUX_TTY_REPORTED=0
|
||||
typeset -g _CMUX_GHOSTTY_SEMANTIC_PATCHED=0
|
||||
|
|
@ -370,45 +369,6 @@ _cmux_report_shell_activity_state() {
|
|||
_cmux_send_bg "report_shell_state $state --tab=$CMUX_TAB_ID --panel=$CMUX_PANEL_ID"
|
||||
}
|
||||
|
||||
_cmux_report_tmux_state_payload() {
|
||||
[[ -n "$CMUX_TAB_ID" ]] || return 0
|
||||
|
||||
local state="outside"
|
||||
[[ -n "$TMUX" ]] && state="inside"
|
||||
|
||||
local payload="report_tmux_state $state --tab=$CMUX_TAB_ID"
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
[[ -n "$_CMUX_TTY_NAME" ]] && payload+=" --tty=$_CMUX_TTY_NAME"
|
||||
else
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
payload+=" --panel=$CMUX_PANEL_ID"
|
||||
fi
|
||||
|
||||
print -r -- "$payload"
|
||||
}
|
||||
|
||||
_cmux_tmux_state_report_signature() {
|
||||
local payload="$1"
|
||||
[[ -n "$payload" ]] || return 0
|
||||
[[ -n "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
print -r -- "${CMUX_SOCKET_PATH}"$'\x1f'"${payload}"
|
||||
}
|
||||
|
||||
_cmux_report_tmux_state() {
|
||||
[[ -S "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
|
||||
local payload=""
|
||||
payload="$(_cmux_report_tmux_state_payload)"
|
||||
[[ -n "$payload" ]] || return 0
|
||||
|
||||
local signature=""
|
||||
signature="$(_cmux_tmux_state_report_signature "$payload")"
|
||||
[[ -n "$signature" ]] || return 0
|
||||
[[ "$_CMUX_TMUX_STATE_SIGNATURE_LAST" == "$signature" ]] && return 0
|
||||
_CMUX_TMUX_STATE_SIGNATURE_LAST="$signature"
|
||||
_cmux_send_bg "$payload"
|
||||
}
|
||||
|
||||
_cmux_ports_kick() {
|
||||
# Lightweight: just tell the app to run a batched scan for this panel.
|
||||
# The app coalesces kicks across all panels and runs a single ps+lsof.
|
||||
|
|
@ -708,7 +668,6 @@ _cmux_preexec() {
|
|||
|
||||
_CMUX_CMD_START=$EPOCHSECONDS
|
||||
_cmux_report_shell_activity_state running
|
||||
_cmux_report_tmux_state
|
||||
|
||||
# Heuristic: commands that may change git branch/dirty state without changing $PWD.
|
||||
local cmd="${1## }"
|
||||
|
|
@ -732,6 +691,8 @@ _cmux_precmd() {
|
|||
# Skip if socket doesn't exist yet
|
||||
[[ -S "$CMUX_SOCKET_PATH" ]] || return 0
|
||||
[[ -n "$CMUX_TAB_ID" ]] || return 0
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
_cmux_report_shell_activity_state prompt
|
||||
|
||||
# Handle cases where Ghostty integration initializes after this file.
|
||||
(( _CMUX_GHOSTTY_SEMANTIC_PATCHED )) || _cmux_patch_ghostty_semantic_redraw
|
||||
|
|
@ -743,14 +704,8 @@ _cmux_precmd() {
|
|||
[[ -n "$t" && "$t" != "not a tty" ]] && _CMUX_TTY_NAME="$t"
|
||||
fi
|
||||
|
||||
if [[ -n "$CMUX_PANEL_ID" ]]; then
|
||||
_cmux_report_shell_activity_state prompt
|
||||
fi
|
||||
_cmux_report_tmux_state
|
||||
_cmux_report_tty_once
|
||||
|
||||
[[ -n "$CMUX_PANEL_ID" ]] || return 0
|
||||
|
||||
local now=$EPOCHSECONDS
|
||||
local pwd="$PWD"
|
||||
local cmd_start="$_CMUX_CMD_START"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue