mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-09-30 12:39:42 +02:00
#454: the behaviour the PR adds had no test, so a regression test drives runGrok() at tabCount 3 and asserts three quick-start POSTs with sequential w<n>-<case> names (verified to fail against master's session-ui.js). Each caller now reads the count BEFORE its opening banner and announces it there, the way runClaude() already did, so a launch no longer prints two headers and a launch with another session already active still says how many are starting. runClaude() calls the shared _readTabCount() instead of its own copy of the 1..20 clamp, and that helper optional-chains the element read, since hoisting it above each caller's try block would otherwise let a missing #tabCount throw where the launch-error path cannot report it. #435: sizeMovedUnderLoad derived from data.source alone. `mux-visible` is not sufficient: a failed display-message cursor query makes capturePaneBuffer skip the snapshot repaint and return the raw capture, which the route still labels mux-visible, so a size that moved during such a load bought a full forced reload to repair a frame that was never positioned. It now tests Number.isFinite(data.captureRows) like its two siblings. Plus the invariants and CLAUDE.md lines promised on #435: a visible capture reports its geometry and omits it when nothing was positioned, the comparison runs on mux-visible only, and the replay is capped at one attempt and latches per session when it cannot converge. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
15 lines
698 B
Markdown
15 lines
698 B
Markdown
---
|
|
"aicodeman": patch
|
|
---
|
|
|
|
fix(terminal): replay a pane capture at the geometry it was taken at
|
|
|
|
Opening a session could draw a frame built for a pane bigger than your terminal. A
|
|
taller pane wrote its overflow rows onto the last line and lost the rows underneath
|
|
(against a 50-row pane, a 30-row terminal rendered 28 of a 45-line command and drew
|
|
the survivors twice), and a wider one wrapped every row and scrolled the whole frame
|
|
up by one. The terminal response now reports the geometry the capture was really
|
|
taken at, so the browser can see the mismatch and replay once at the size that stuck.
|
|
A pane that cannot be sized to fit is diagnosed once per session instead of on every
|
|
tab switch.
|