From b29e94d29bd00cdd504363a1dd8540a50fa28202 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Fri, 7 Aug 2026 22:44:49 +0200 Subject: [PATCH] docs: the long-lines lane records PR #222 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stage 4 is open as #222; Stage 5 (GPU) still closes the arc, so the Rule 4 exemption above stands unchanged. Records the two things review added after the framing was approved: the `Viewport::visible_cols` single clip rule with its five adopters, and the corrected `ui.line-wrap` description. Both are lane facts rather than framing ones — the framing decided the coordinate contract, and these are what implementing it against a real frame turned up. Also notes R7, so a reader of this lane finds the unrelated red without having to reconstruct why a sweep in this window went 112/113 once. No SHA — `githubsucks/horizontal-scroll` stays the authoritative tip, per this ledger's own rule. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai --- docs/active-work.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index 4203086..f95b5dd 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -435,7 +435,7 @@ Whether `docs/ci-red-signatures.md` should grow a short non-row section for this class is an open question for its owner, not something this lane decided. -## Long lines (QoL arc) — Stage 3 MERGED as #221; Stages 4 AND 5 ahead +## Long lines (QoL arc) — Stage 3 MERGED as #221; Stage 4 is PR #222 OPEN; Stage 5 ahead **Rewritten, not removed.** Rule 4 removes a lane when its ARC is done; this one has Stage 4 ahead. Stage 3's durable facts are absorbed into @@ -458,7 +458,33 @@ whatever SHA it records. Recover: `git fetch githubsucks && git checkout horizontal-scroll`. **Status: `docs/horizontal-scroll-framing.md` revision 4 — APPROVED -2026-08-07. Implementing.** +2026-08-07. Stage 4 implemented; **PR #222 OPEN**, awaiting review. Do +not merge unprompted.** + +**What Stage 4 shipped**, beyond the `view_left` contract below: + +- **`Viewport::visible_cols` — one clip rule, five adopters.** Review + found the first version had translated the base glyph walk and + nothing else, so syntax styling, diagnostic underlines, search + washes, `BufferStyleOverlay` and the selection painter all kept + painting at absolute columns: decorations drifting off the characters + they describe, only once a window had been scrolled. The selection + painter was worst — it asked `pos_to_display` through the live + context, which returns `None` left of the edge, so a selection + starting off-screen painted **nothing at all**. + + A second review round caught that my reason for letting selection + keep its own copy of the rule (a width the viewport supposedly + lacked) was **false**: the render viewport is already + `rect.size.cols - gutter_w` with an origin past the gutter. It now + takes that viewport. `StyleSpanOverlay` / `VirtualCellOverlay` stay + untouched — viewport-relative by contract. +- **The `ui.line-wrap` description now names what `truncate` costs**, + closing the #221 gap where only the toggle's status message said it. +- **`R7`** in `docs/ci-red-signatures.md` — an unrelated, unreproduced + `pmacs-gpu` managed-retry `BrokenPipe` under full-sweep load. First + incident this session with a complete signature, so a matchable row + rather than a `U` note. **Answered by the user 2026-08-07:**