From 73df4fa679a638d686ce1aff8f8080b147b897a7 Mon Sep 17 00:00:00 2001 From: Metal Agent Date: Tue, 1 Sep 2026 00:14:23 -0700 Subject: [PATCH] Correct the column figure decision 0009 quoted from a guessed cell width MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Approximately 71 columns by 42 rows per panel" was derived from a hardcoded 8.4 px advance that nothing had measured. The measured advance is about 7.3 px, so the figure was roughly 13% short — a full-width pane on the reference display measures 140 columns, not 122. The paragraph now says the number is a consequence of the measurement rather than a property of the design. Co-Authored-By: Claude Opus 5 (1M context) --- docs/ARCHITECTURE.md | 6 ++++++ docs/decisions/0009-responsive-ultrawide-work-lanes.md | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index d0c01a0..eb4586b 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -71,6 +71,12 @@ clipboard writes are disabled by default. The renderer never imports the upstream terminal type, and protocol replies return through the same actor input queue as human input. See decision 0005. +Terminal cell size is measured from the text system rather than assumed, and the +viewport's pixel extent is reported to the PTY. Both were wrong before: the +advance was a hardcoded guess 13% wider than the face actually painted, and +`ws_xpixel`/`ws_ypixel` were zero, so every program doing pixel arithmetic was +told the window had no size. + Each `lumbridge-runtime` actor owns one `PtySession` on a dedicated thread. Bounded command and event queues serialize input, resize, close, and shutdown against ordered raw-byte output. A generic pane-indexed registry now owns and diff --git a/docs/decisions/0009-responsive-ultrawide-work-lanes.md b/docs/decisions/0009-responsive-ultrawide-work-lanes.md index ada05d3..f691a91 100644 --- a/docs/decisions/0009-responsive-ultrawide-work-lanes.md +++ b/docs/decisions/0009-responsive-ultrawide-work-lanes.md @@ -17,8 +17,14 @@ independently of selection. Terminal geometry is computed from the width of one panel and the height of its middle 60% region, including gaps and content insets. The selected real PTY is resized through the runtime actor when the responsive panel count or window -bounds change. On the 3440×1440 reference display the current fixed-cell spike -derives approximately 71 columns by 42 rows per panel. +bounds change. Cell size is **measured**, not assumed: the advance of `0` in the terminal face +comes from the text system, so the column arithmetic and the painted glyph agree +by construction. This paragraph previously quoted "approximately 71 columns by +42 rows per panel", derived from a hardcoded 8.4 px advance that nothing had +ever measured. The real advance is about 7.3 px, so those numbers were roughly +13% short — one full-width pane on the reference display measures 140 columns, +not 122. Any figure quoted here is a consequence of the measurement and the +current panel count, and will move when either does. The runtime slice now owns three independent real PTYs through a pane-indexed session registry, one for every terminal fixture. The Markdown, browser, and