How the registered devices are drawn
Three layouts for one block: the devices registered with the RomM server for save-file sync. Everything else on the page is identical across the three so the comparison is about the block alone. Switch above. B was chosen.
- Width
- The panel is 854 px and the content 806 px. The section list takes 264 px, leaving about 530 px for the detail pane. Drawn on the same stage as the other studies, 854 × 534.
- Height
- The scarce axis. The Library study measured about 263 px of body — but with a tab row. Settings has no tabs and gets that height back. What hangs below the fold is still reachable only by moving focus.
- The facts per device
- The server answers with five: name, client, client version, platform, last seen — plus an id and the “this device” mark.
- What the client column holds
- The rows above are the mix a real listing carries: this plugin registers as
Tendersince 0.33, RomM keeps what earlier versions wrote underdecky-romm-sync, and RomM's own frontend registersweb. Those older rows do not expire, which is why the column is sized for the longest of the three rather than for today's name. - Why it was a question at all
- The Tables rule asks for aligned columns, because a device row carries more than two facts. But every other
row in this pane is a Steam
Field— label left, value right — so a grid here is the only content on the page in a second visual language.
A — the shape it has today
- A
Name on top, everything else small underneath as one sentence with separators. This is what the plugin renders today.
- ·
Comparing means reading. Whether the living-room machine runs an older client sits mid-sentence — at a different place in every row, because the names differ in length.
- ·
Two rows per device. Three devices cost six rows; eight cost sixteen, half of them small print.
- ·
What it buys: nothing stands out. The block looks like the toggles and values above it because it is built from the same pieces.
B — three columns with a header · chosen
| Device | Client | Last seen |
|---|---|---|
| Steam Deck(this) | Tender v0.33.0 | just now |
| Living-room PC | decky-romm-sync v0.31.0 | 3 Sep |
| Chrome on Linux | web v148 | 12 Jun |
- B
Values line up. Last seen answers a relative time while a device is recent and a bare date once it is not, so a column of them separates the machines that are still around from the ones that are not — a glance, where a sentence is a read.
- ·
One row per device. Eight devices cost nine rows instead of sixteen, on the axis the Deck is short of.
- ·
Two facts drop out: the platform and the shortened id. The id only helps when two devices share a name; the platform is practically always the same value.
- ·
It is the shape the Platforms detail already uses for BIOS files under File / On disk / Contents, so the two pages read alike.
- !
The objection: in this pane it is the only content with column headers. On the Platforms detail it does not stand out, because everything there is built that way. That ends when the Settings panes are written against the same pane primitives.
C — two columns, no header row
- C
The middle. Last seen right-aligned like every other value on the page — it is the fact people actually compare. The client stays small under the name.
- ·
No break in the language. It reads like “Default slot ▸ Slot 1”, because it is the same shape: label left, value right.
- ·
But still two rows per device, and the client versions still do not line up — they are only shorter than today.
- ·
Without headers “just now” has to speak for itself. For a last-seen time it does; for a column of bare numbers it would not.
Side by side
| A — today | B — three columns | C — two columns | |
|---|---|---|---|
| Rows at 3 devices | 6 | 4 | 6 |
| Rows at 8 devices | 16 | 9 | 16 |
| Values line up | no | all three | last seen only |
| Matches the rest of the pane | yes | no — the only content with column headers | yes |
| What the Tables rule asks for | no | yes | in part |
| Facts dropped | none | platform, id | platform, id |
| Cost | none — it is built | ~50 lines + test | ~20 lines + test |