pmacs/pmacs-protocol/src
Levi Neuwirth 9e54cd2c5b
refactor: put the display-column rule where both frontends share it
The previous commit CLAIMED the widest-line rule was shared. It was not.
The daemon called `src/display_width.rs`; the GPU folded through its own
private `advance_display_col`, a second copy of the same tab-stop and
Unicode-width arithmetic. The two agreed for ordinary input, so nothing
failed --- which is precisely why the claim was worth checking and why
asserting structural protection that does not exist is the defect, not
the duplication itself.

`pmacs_protocol::columns` now owns the rule, for the same reason
`scroll::follow_left` lives there: the protocol crate is the one place
both frontends already depend on. `advance_char`, `line_columns` and
`widest_line_columns` live there with their own rows; `display_width`
and the GPU both delegate.

The sharing is now demonstrated rather than described. Mutating the tab
stop inside `pmacs_protocol::columns` breaks the GPU's
`minimap_columns_match_code_tab_and_unicode_widths` --- a row that used
to run entirely through the private copy and could not have noticed.

Also restores `r4_p1_a_chrome_press_neither_arms_nor_moves_point`'s
opening line, "P1 --- a press on the band's MODE LINE begins nothing",
which my insertion had left attached to the B2 test. The attribute came
back last round; the first paragraph did not.
2026-09-01 10:34:00 +02:00
..
cell.rs protocol v6: per-severity diagnostic underline colors (SGR 58) 2026-06-10 19:16:42 -04:00
columns.rs refactor: put the display-column rule where both frontends share it 2026-09-01 10:34:00 +02:00
crdt.rs session 1 commit 3/4: CrdtOp moved to pmacs-protocol 2026-05-20 09:32:09 -04:00
ids.rs session 1 commit 1/4: workspace + identity types moved to pmacs-protocol 2026-05-20 09:11:33 -04:00
lib.rs refactor: put the display-column rule where both frontends share it 2026-09-01 10:34:00 +02:00
message.rs feat(protocol): the mapped panel family --- v25 wire shapes and their pins 2026-08-20 17:55:21 +02:00
panel.rs feat(protocol): the mapped panel family --- v25 wire shapes and their pins 2026-08-20 17:55:21 +02:00
scroll.rs feat(gpu): horizontal scroll — QoL Stage 5, closing the long-lines arc (#223) 2026-08-08 10:55:49 +00:00
terminal.rs Keep the v21 panel wire dark for v20 clients 2026-07-28 14:08:17 -04:00
transport.rs session M-1 — Pointer wire + daemon byte-space mouse semantics 2026-06-10 13:10:17 -04:00
wire_grid.rs fix(panel): review round 1 — buffer_id, the transport ratchet, shared bounds 2026-07-26 17:31:04 -04:00