7e8bc30a
docs: mode 2048 — why the daemon speaks the size report
a73x 2026-08-22 19:47
Commit message
docs/decisions.md
| Old | New | ||
|---|---|---|---|
| @@ -5336,3 +5336,22 @@ from a tab as one named exception, which leaves "unknown types transit" | |||
| 5336 | exactly as wide as it was. Before `muxweb -A` this closes the silent-offerer | 5336 | exactly as wide as it was. Before `muxweb -A` this closes the silent-offerer |
| 5337 | hole at its source; after it, it is what stops a tab injecting `agent_data` | 5337 | hole at its source; after it, it is what stops a tab injecting `agent_data` |
| 5338 | into a channel the hub owns. | 5338 | into a channel the hub owns. |
| 5339 | |||
| 5340 | ## 2026-08-22 — in-band size reports (mode 2048): the daemon speaks them | ||
| 5341 | |||
| 5342 | nvim 0.11+ sends DECRQM 2048 on start; ghostty-vt's stock handler answers | ||
| 5343 | "recognised" (`?2048;2$y`) because ghostty proper supports it — in its APP | ||
| 5344 | layer (`Termio.sizeReportLocked`), which mux does not use. nvim then set the | ||
| 5345 | mode and, per the protocol, ignored SIGWINCH from then on, so a resized | ||
| 5346 | session stayed painted at its old size (a drag-resize: two screens overlaid; | ||
| 5347 | reattach could not clear it because the daemon's grid held that picture). | ||
| 5348 | A shell and Claude Code never opt in, which is why only nvim showed it. | ||
| 5349 | |||
| 5350 | Decision: implement the protocol rather than deny it. The engine queues | ||
| 5351 | `CSI 48;rows;cols;0;0 t` when the mode is set and after every resize; | ||
| 5352 | `applySize` flushes it, the one engine event that answers the app without | ||
| 5353 | a feed. Pixels are 0 (headless, allowed). Denying (`;0$y`) was one line but | ||
| 5354 | would have left nvim on the SIGWINCH race during drags. Measured: nvim | ||
| 5355 | `&lines x &columns` 26x80 → 60x180 after a 10-step grow burst; the e2e | ||
| 5356 | witness is `printf '\e[?2048h'; cat -v`, no nvim dependency. Fix is in | ||
| 5357 | muxd: every daemon (the LAN box included) needs the new build. | ||