scroll viewport: anchored history, selection, and wheel behavior #92
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scroll viewport: anchored history, selection, and wheel behavior
This supersedes the implementation slices described in the earlier GUI-only issue body: the viewport is not limited to the client replica. Track the work here as separately delegated slices; this administrative setup authorizes no source changes, tests, builds, or commits.
Setup and delivery checklist
/home/xanderle/code/rad/mux-backups/scroll-bug-20260909T055012Z(restore-validation sibling:/home/xanderle/code/rad/mux-backups/scroll-bug-restore-validation-20260909T055012Z).make checkandmake ci.Behavioral-baseline evidence (SLICE1)
eef028e2cae68a72e941f778fcab8d3efc5e251b,/home/xanderle/code/rad/mux/.worktrees/scroll-viewportonscroll-viewport; the only changed tracked files aretest/native_wheel.py(newanchored_outputreal-PTY scenario) andtest/native_journey.py(journey wiring). No production fix is included.ZIG=/home/xanderle/.local/share/mise/installs/zig/0.15.2/bin/zig make native-e2e, log/tmp/mux-scroll-viewport-logs/baseline-native-e2e.log.openai-codex/gpt-5.6-terra:medium, Linux only: Zig0.15.2;PYTHONDONTWRITEBYTECODE=1 python3 -m py_compile test/native_wheel.py test/native_journey.pyandgit diff --checkboth exited 0.ZIG=/home/xanderle/.local/share/mise/installs/zig/0.15.2/bin/zig make native-e2eexited 2 through Make; full log/tmp/mux-scroll-viewport-logs/independent-native-e2e.log.anchored_outputtimed out waiting for a newerpainted_seqwith unchanged retained text. Failure artifact/tmp/muxg-tiling-z_xqepx0; its state changes fromANCHOR-0287..0298at seq 63 before producer output toANCHOR-0290..at seq 66 after it. This reproduces the author's modified run (/tmp/mux-scroll-viewport-logs/modified-native-e2e.log) and its same assertion, proving output moves an anchored viewport.Workspace and ownership
/home/xanderle/code/rad/mux/.worktrees/scroll-bugat03661841b1ef0853f43317067d4894ebe355a937; it retains its 19 tracked modifications plus the untracked plan./home/xanderle/code/rad/mux/.worktrees/scroll-viewport, branchscroll-viewport, created from localmainateef028e2cae68a72e941f778fcab8d3efc5e251b. No fetch, rebase, or main update was performed.openai-codex/gpt-5.6-terra:medium. Behavioral-test worker, validator, and independent reviewer will be separately delegated by the coordinator; their models are not yet configured.Excluded scope
Existing selection/copy user behavior remains preserved; this is not a terminal-wall redesign or a general history-subscription feature.
Engine substep (completed; pending commit)
RowAnchorreuses tracked selection; a real page-eviction test usesmax_scrollbackbytes; and the bounded engine encoder reports the correct count forcount == 0.make checkpassed; log:/tmp/mux-scroll-viewport-logs/engine-substep-independent-check.log.src/engine/engine.zigand the mechanical new server argument insrc/server/server.zig.Remaining scrollback-access/fetch and client/GUI work
maxInt.cdf7e30eand passedmake check.Old worktree backup comparison (read-only)
/home/xanderle/code/rad/mux/.worktrees/scroll-bugwith verified backup/home/xanderle/code/rad/mux-backups/scroll-bug-20260909T055012Z: HEAD is still03661841b1ef0853f43317067d4894ebe355a937;git diff HEAD --binaryis identical; all 20 captured file hashes match; and the recorded status is identical (19 tracked modifications and 1 untracked plan). Nothing was reset or reverted.Migrated from git-collab issue
8b16e26be76fcfc9ed1f4ff35c1225e35c19cfb5.Original author: a73x dev@a73x.sh.
Related issue:
063cec67Native integration milestone (current; pending final active fixes)
openai-codex/gpt-5.6-terra:medium(explicit configuration)./tmp/mux-scroll-viewport-logs/native-new-selection-fix.log. Checkpoint 18 records anchored output stable while held copy has a NEW nonzero-row selection, and repeated wheel return to live.cdf7e30e(test: capture anchored viewport movement during output); the implementation remains uncommitted.RowAnchorreuses existing selection pins; one per-client server anchor; canonical protocol request0x13/ reply0x99with no legacy two-history path; native has one cache/pending/intent; and the consumer span retains old one-shot semantics (error if it cannot fit). Existing queue/frame-bound behavior remains: no pagination or new 1 MiB cap; browser stays fixed at 256 KiB.make check,make ci, and final native e2e rerun remain pending.Final implementation and Linux validation status (pending commit delivery)
make check, andmake ci.Implementation and integration are complete and approved, but remain uncommitted and unstaged: baseline
cdf7e30e(test: capture anchored viewport movement during output), 16 intended files. No source commit or push was requested or made. This issue stays OPEN pending commit delivery, macOS validation, and any pre-existing unresolved tasks.All component independent reviews approved, including native workflow
wf_37f4fa2d. Latest stable-tree independent gates PASS:check,ci,native-e2e, anddiffcheck; logs:/tmp/mux-scroll-viewport-logs/approved-final-{check,ci,native-e2e}.log. CI convergence117e2e38: agent 10/0, native 34, including anchored output stable while held copy has a new nonzero-row selection and wheel return to live; lint: 105 files, 0 errors, 0 warnings. Native ordered intent, OOM lock/release correlation, and timeout behavior are covered.Source pre/post diff SHA
6a16118e…eac4c034is identical; index is empty. Prior CI port collision was diagnosed as an existing harness issue and remains separate: no test-harness edits, no failing gate waived, and latest gates are clean without retry. No macOS claim and no old-release compatibility claim are made.Preserved backup evidence:
../scroll-bugremains read-only and verified MATCH; combined patch048dbf68…37d6b5, all 20 hashes; expected untouched state is 19 tracked changes plus 1 untracked file. Prior backup records remain authoritative.