mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-21 10:22:18 +00:00
fix(tui): disable fast-echo bypass inside tmux to prevent cursor drift
This commit is contained in:
parent
5378b94120
commit
ab8f063814
2 changed files with 27 additions and 0 deletions
|
|
@ -178,6 +178,26 @@ describe('supportsFastEchoTerminal', () => {
|
|||
expect(supportsFastEchoTerminal({ TERM_PROGRAM: 'Apple_Terminal' } as NodeJS.ProcessEnv)).toBe(false)
|
||||
})
|
||||
|
||||
it('disables fast-echo inside tmux', () => {
|
||||
expect(supportsFastEchoTerminal({ TMUX: '/tmp/tmux-1000/default,1234,0' } as NodeJS.ProcessEnv)).toBe(false)
|
||||
expect(supportsFastEchoTerminal({ TMUX: '/private/tmp/tmux-501/default' } as NodeJS.ProcessEnv)).toBe(false)
|
||||
})
|
||||
|
||||
it('tmux wins over Termux fast-echo opt-in', () => {
|
||||
expect(
|
||||
supportsFastEchoTerminal({
|
||||
TMUX: '/tmp/tmux-1000/default,1234,0',
|
||||
HERMES_TUI_TERMUX_FAST_ECHO: '1',
|
||||
TERMUX_VERSION: '0.118.0'
|
||||
} as NodeJS.ProcessEnv)
|
||||
).toBe(false)
|
||||
})
|
||||
|
||||
it('keeps fast-echo enabled when TMUX is empty or unset', () => {
|
||||
expect(supportsFastEchoTerminal({ TMUX: '' } as NodeJS.ProcessEnv)).toBe(true)
|
||||
expect(supportsFastEchoTerminal({ TERM_PROGRAM: 'vscode' } as NodeJS.ProcessEnv)).toBe(true)
|
||||
})
|
||||
|
||||
it('disables fast-echo by default in Termux mode', () => {
|
||||
expect(
|
||||
supportsFastEchoTerminal({ TERMUX_VERSION: '0.118.0', PREFIX: '/data/data/com.termux/files/usr' } as NodeJS.ProcessEnv)
|
||||
|
|
|
|||
|
|
@ -359,6 +359,13 @@ export function supportsFastEchoTerminal(env: NodeJS.ProcessEnv = process.env):
|
|||
return false
|
||||
}
|
||||
|
||||
// tmux adds a PTY multiplexing layer that desyncs stdout.write() cursor
|
||||
// advances from its internal cursor model, causing cursor drift and ghost
|
||||
// whitespace under the fast-echo bypass path.
|
||||
if ((env.TMUX ?? '').trim().length > 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Termux terminals are especially sensitive to bypass-path cursor drift and
|
||||
// stale paints at soft-wrap boundaries on tall/narrow viewports. Keep this
|
||||
// off by default in Termux mode; allow explicit opt-in for local debugging.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue