mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 00:02:31 +00:00
* fix(terminal): clear leaked mouse-reporting modes on pane reattach A TUI that enables mouse tracking (?1000/1002/1003 + SGR 1006/1016) and dies uncleanly never emits the disable sequence, so the daemon's snapshot records the mode and buildRehydrateSequences re-arms it on every reattach. POST_REPLAY_REATTACH_RESET cleared cursor/focus/kitty state but not mouse modes, so a plain shell in the reattached pane echoed every pointer-motion report (`<35;col;rowM`) as literal text. Add RESET_MOUSE_REPORTING (?9l ?1000l ?1002l ?1003l ?1006l ?1016l) to both POST_REPLAY_REATTACH_RESET and POST_REPLAY_MODE_RESET. Live agent panes keep mouse modes via POST_REPLAY_LIVE_AGENT_REATTACH_RESET, so agent scroll is unaffected. Verified against the real daemon serializer + real xterm: the old reset leaves mouseTrackingMode armed, the new reset returns it to 'none'. * test: add regression tests for terminal mouse mode leak on reattach - Add an E2E test to verify that a warm reattach disarms mouse modes left armed by an uncleanly exited TUI. - Add a test fixture that writes the mouse tracking enable sequence without a matching disable sequence. - Ensure the reattached pane disarms mouse tracking and that actual mouse movement produces no reports. * Add types to isMouseReport in terminal reattach leak test Explicitly annotate parameter and return types for the isMouseReport helper function inside the page.evaluate block. * Refactor mouse-mode leak E2E test to use shell printf and live pane Eliminate the external Node.js fixture file and streamline the E2E test by using a POSIX printf shell builtin to arm the mouse tracking modes. Additionally, verify the leak precondition by inspecting the active pane's live terminal state (mouseTrackingMode) rather than querying internal daemon buffer snapshots via window.api.pty.getMainBufferSnapshot.