You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
design: record the owner walkthrough backlog and its three rulings (#176)
A page-by-page walkthrough of every rendered surface with the project owner,
conducted against production screenshots. `docs/design-walkthrough.md` carries
the findings as seven self-contained sessions so each is startable from a cold
context; this commit is session 0, the cross-cutting part the other six depend
on.
Three rulings, recorded in DESIGN.md so a later sweep does not undo them:
R1, hit targets. The 28px in-row grade is now scoped by the density reason
rather than by the tag it lands in, so a `Disclosure as="row"` drawer takes the
36px standalone grade despite rendering a literal `<tr>`. This resolves a
contradiction rather than reversing a decision: e2e/sync.spec.ts:1095 has been
pinning the /admin/sync drawer to the standalone grade all along, and
payouts/[id]/notes-form.tsx:90-95 reasons the same way for a panel field. Only
/admin/accounts read the settled-decisions row as forbidding it. That row is
marked AMENDED rather than deleted, per that file's own contract.
R2, rare destructive controls do not hold permanent width in a scanning table.
Records the existing reveal-on-arm constraint (#112) as a reason to move such
controls rather than to progressively disclose them where they sit.
R4, information may not live only in the assistive-tech channel. Two instances
found, both the inverse of the usual defect: a working role="status" save
confirmation marked .visually-hidden, and an affordance named in aria-label and
absent from the visible summary.
Copy: removes the four em dashes from rendered strings (the glyph stays as this
app's null-value marker, per error.tsx:239), and drops the /payouts lede's first
sentence, which restated its own table columns. The flat-pool note label changed
shape, so its 12 e2e assertions move with it.
The equivalent /account lede is deliberately left to session 3.
e2e/account.spec.ts:1583 uses it as the narrow-capped sibling proving the
manifest opts out of the cap, and finding 3.1 changes what that anchor should
be; deleting it here would mean editing that test twice.
Gates: typecheck, lint, format:check, 1290 unit tests across 83 files, 297 e2e,
production build, and check-node-version all pass.
Copy file name to clipboardExpand all lines: docs/settled-design-decisions.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,6 +80,7 @@ undiscovered.
80
80
|`--signal-warn` hue moved from 70 to 50 | At 70 it sat 18° from `--gold`/`--tier-member` at near-identical chroma/lightness (0.057 apart in OKLab) — not enough to tell a gold Member badge from an amber CRYO token two columns away |`DESIGN.md:58`|
81
81
| Disabled controls use an explicit `--ink-faint` colour, not an opacity fade | An opacity fade moves with whatever ground it lands on: measured 3.24:1 on `--void` but 2.88:1 on a hovered admin row — under the WCAG 3:1 floor exactly when the pointer is on the row |`DESIGN.md:222-226`|
82
82
| Hit targets: 36px standalone (`.btn`), 28px in-row (`.btn--micro`/`.btn--quiet`/`.row-toggle`) — exactly two sizes | Both clear the 24px WCAG 2.5.8 AA minimum; the admin tables carry a control set on every row and cannot reach 44px AAA without growing past a screenful, so density wins there and nowhere else |`DESIGN.md:227-232`|
83
+
|**AMENDED 2026-08-07 (owner walkthrough, ruling R1)** — still exactly two sizes, but "in-row" is scoped by the density reason, not by the tag. A `Disclosure as="row"` drawer renders a `<tr>` and is nonetheless **not** in-row: one is open at a time, it spans the full width, nothing competes for the space. Drawer controls take 36px | Resolves a contradiction rather than reversing a decision: `e2e/sync.spec.ts:1095` has been pinning the `/admin/sync` drawer to the standalone grade all along, and `payouts/[id]/notes-form.tsx:90-95` reasons the same way for a panel field. Only `/admin/accounts` read the row above as forbidding it, having inherited 28px by structural accident |`DESIGN.md` "Hit targets", `e2e/sync.spec.ts:1095-1121`, `src/app/_components/note-form.tsx`|
83
84
84
85
## 3. Controls and confirmation (cross-cutting patterns)
return"Checks whether your character is logged in right now, so a location left behind by a character who has since logged off is shown as where they were last seen rather than as where they are.";
55
55
default:
56
-
return"This deployment requests this scope, but authGD has no description for it — ask whoever runs it what it is for before granting.";
56
+
return"This deployment requests this scope, but authGD has no description for it. Ask whoever runs it what it is for before granting.";
0 commit comments