mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 10:39:32 +01:00
fix(pi): forward the wheel from cliMouseTracking so scrolling survives replay
pi 1.4.0 is an alt-screen TUI that enables mouse tracking once at start. Codeman's replay (tab switch, reload) drops that mode in xterm (mouseTrackingMode none, baseY 0), so the wheel hit an empty local buffer and stayed dead until a resize made pi redraw. Same shape as copilot: altScreen strip-mux-and-mouse (the server records the stripped DECSETs as cliMouseTracking, which survives the replay), wheelForward always, transcriptPageKeys (PageUp/PageDown fallback for a stale flag, measured on pi 1.4.0). _shouldForwardWheelToApp treats pi like copilot. Registry pins and docs updated. Tests: 2 new in terminal-scroll-routing (red before). Full run: 12989 passed, 5 red from the de_DE locale / XDG env (custom-model-run-menu-ui, git-worktrees, edit-history-sync), all green under LANG=C.UTF-8. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 53e4136d9f4401e9250ac6a122599ffcb2a57e8a)
This commit is contained in:
1 parent
46b85fa6d0
commit
58dae1e182
8 files changed
+52
-24
No files matched your search
@@ -6065,12 +6065,12 @@ Object.assign(CodemanApp.prototype, {
|
||||
if (mode && mode !== 'none') return false;
|
||||
const session = this.sessions?.get(target.sessionId || this.activeSessionId);
|
||||
const sessionMode = session?.mode || 'claude';
|
||||
// GitHub Copilot CLI scrolls its own transcript on SGR wheel reports (checked with xterm
|
||||
// GitHub Copilot CLI (and pi, same shape since 1.4.0) scrolls its own transcript on SGR wheel reports (checked with xterm
|
||||
// encoding them natively). Its mouse DECSETs are stripped server-side so a drag selects
|
||||
// locally (strip-mux-and-mouse), which also means xterm no longer encodes the wheel: send the
|
||||
// same reports by hand, but only while the CLI is actually tracking the mouse. Not gated on a
|
||||
// version; a stale-false flag falls through to the PageUp/PageDown fallback like claude's.
|
||||
if (sessionMode === 'copilot') return session?.cliMouseTracking === true;
|
||||
if (sessionMode === 'copilot' || sessionMode === 'pi') return session?.cliMouseTracking === true;
|
||||
if (sessionMode !== 'claude' && sessionMode !== 'codex') return false;
|
||||
if (sessionMode === 'claude' && !this._cliVersionAtLeast(session?.cliVersion, '2.1.187')) return false;
|
||||
// Only while Claude or Codex is actually listening for the mouse. Claude's
|
||||
|
||||
Reference in new issue
Block a user