fix(inline): ghost caret in composer box — maya submodule bump + runtime regression test - #24
fix(inline): ghost caret in composer box — maya submodule bump + runtime regression test#24davidwed wants to merge 1 commit into
Conversation
…ime regression test Bumps maya to 77c76b2 which parks the hardware cursor below the inline frame on every compose_inline_frame_impl exit path and re-asserts DECTCEM outside the sync block, so a terminal-side mode loss can no longer surface a ghost caret mid-box. Adds tests/test_ghost_caret_runtime.cpp: a full-runtime PTY repro that drives the agentty app loop and asserts exactly one caret block stays on the composer's first row after wrap/shrink.
…ssion test Bumps maya to b027882: every compose_inline_frame_impl exit path now parks the hardware cursor at column 0 of the frame's last wire row (a bare \r -- row-relative, so safe at any frame anchor and unable to touch committed scrollback) and re-asserts DECTCEM ?25l OUTSIDE the ?2026 sync block, so a terminal-side rollback or an external ?25h can no longer surface the cursor mid-box as a ghost caret. Adds tests/test_ghost_caret_runtime.cpp: a full-runtime PTY repro that drives the real agentty view()/update() + maya Runtime::render through wrap/shrink oscillation, the streaming ComponentCache path, the anti-bounce pad decay, and the welcome-screen first-start subtree at two heights, asserting exactly one caret block ever sits on the composer's first text row. Runs with MAYA_GATE_ABORT=1 so any committed-prefix (scrollback) corruption aborts the test loudly. Registered as a POSIX-only fold test with SKIP_RETURN_CODE 77 (agentty_fold_test grows a SKIP_CODE argument) so geometry bail-outs report as ctest SKIP instead of failure. Test and diagnosis by @davidwed (PR #24). The maya-side fix was reworked from PR #7's absolute-CUP park to relative parking -- the original corrupted mid-screen-anchored frames, which this very test's pad variant caught (stale duplicated composer box after resize). Co-authored-by: davidwe <davidwe@posteo.de>
|
Thanks @davidwed — this landed on master (ecf0030) with you credited as co-author, alongside the maya fix (1ay1/maya@b027882, also co-authored). Your Deltas from this PR as filed:
Verified: full run green including the pad + welcome variants, scrollback_oracle_test, and the wire/seam fuzzers. Closing in favor of master. |
Bumps maya which parks the hardware cursor below the inline frame on every compose_inline_frame_impl exit path and re-asserts DECTCEM outside the sync block, so a terminal-side mode loss can no longer surface a ghost caret mid-box.
Adds tests/test_ghost_caret_runtime.cpp: a full-runtime PTY repro that drives the agentty app loop and asserts exactly one caret block stays on the composer's first row after wrap/shrink.