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