mirror of
https://github.com/jmcorgan/fips.git
synced 2026-10-06 03:28:24 +00:00
The table's fixed columns sum to 90, plus six single-column gaps: 96 against the ~77 usable inside an 80-column terminal's border and scrollbar. Ratatui resolves an over-subscribed layout by shrinking every column proportionally, so the overflow does not clip the rightmost column — it clips all of them, and `mesh0 (optional)` rendered as `mesh0 (optio`. The marker is the one thing on that row worth reading, and the absence of it is what says `required`. 80x24 is the OpenWrt serial console and the xterm/tmux default, so this is the deployment target rather than an edge case. Below 100 columns the table drops Tx and Rx and sizes the rest down. Those two are the only columns whose absence costs nothing an operator is scanning this table to find — they are byte counters, and the detail pane carries them in full — while Instance keeps 18 because `mesh0 (optional)` is 16, and Bound-to keeps 17 because that is a full MAC. Both row shapes carry the same seven cells in the same order, so the narrow variant is the same list with its tail cut, keeping one place where the column count is decided rather than two that have to agree. The detail view stacks instead of splitting below 110 columns. A 40% split of an 80-column terminal leaves the table 32 columns for a layout needing 65 even narrow, and ratatui spends all of it on the trailing columns — rendering Transport, Instance, Bound-to and State at width zero, so the operator gets blank rows. Stacking keeps both panes readable instead of both unreadable. The regression test renders at 80 and asserts the marker. That is precisely the gap that let this through: the existing test asserting `mesh0 (optional)` renders at 110, and the one rendering at 80 asserted only the netdev name, so between them neither covered the width where the layout breaks. Verified against the defect — with the narrow tier disabled, the new test fails and the other two still pass.