Files
codewhale/crates
Hunter Bown 9d05e6c293 fix(tui): remove Shift-bypass-mouse-capture escape hatch (#376)
Users reported a "scroll demon" — visible thrash where the
display would flicker / scroll / redraw spuriously while moving
the mouse. Root cause: the #376 native-selection escape hatch
watched every mouse event for `KeyModifiers::SHIFT`, and on each
transition (Shift pressed → released, or vice versa) it:

  1. Toggled the alt-screen mouse-capture mode via crossterm
     execute!(DisableMouseCapture / EnableMouseCapture).
  2. Pushed a status toast ("Native selection — release Shift to
     return" / "Mouse capture restored").

On terminals that report mouse-event modifier state aggressively
(notably the modern xterm-modifyOtherKeys / Kitty keyboard
protocol family the v0.8.32 Windows fix in PR #1483 just turned
on more broadly), the bypass would flip on stray Shift state
changes during ordinary scrolling — producing a tight cycle of
mouse-capture toggles and toast renders that the user perceived
as the display going haywire.

The feature was never load-bearing for native text selection on
modern terminals: macOS Terminal and iTerm honor Option-drag
(macOS convention), most Linux terminals honor Shift-drag at the
terminal layer regardless of what the TUI does with mouse
events, and Windows Terminal exposes its own copy mode. The
in-TUI bypass was a workaround for a narrower set of terminals
that bowed out of relevance once we got mouse capture cleaner
elsewhere.

Removed:

- `let mut shift_bypass_active = false;` state on `ui::run_app`
- The mouse-event Shift-modifier branch that flipped capture
  modes and emitted toasts
- The 5-second redraw nudge that the toast cycle implied

Net delta: 23 lines deleted, 0 added. Mouse capture stays
on for the whole session (or off when `--no-mouse-capture` is
set at launch), and stray Shift events on mouse move are now
ordinary mouse events.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 02:38:37 -05:00
..
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00
2026-05-12 02:21:19 -05:00