feat(desk): the Desk row, booth dates, and the theme toggle (r2b merge 2: D1 + D1b + D3)
Operator rulings, 2026-09-23. D1, the Desk row: - Kept vs ephemeral reads at a glance: an always-visible lifetime pill in the right column (sage ★ kept, amber held, ◷ counting down). - The facts line is facts only. - zip / keep|release / wipe are one cluster, with zip out of the middle. Where a real hover exists it floats over the preview strip (covering pictures, never information), appears on hover or keyboard focus, and takes no room. Anywhere else (touch, any coarse pointer) it is the row's last line, visible, with 32px controls. × hides too (the operator answered yes). D1b: "created 12 Sep" (filesystem birth time; nothing when unknown) and "updated 5d ago" (the content clock), as <time> facts on the row and in the booth header, from one macro and one clock per page. D3, the theme toggle: System · Light · Dark in the top bar. - Stored in localStorage and applied in <head> before any stylesheet. - System removes data-theme, so the OS query follows the OS live, with no listener. - The token sheet is re-vendored at the same SVOS SHA with a scoping-only transform (155 declarations, the same set, both directions), so forced themes win over the OS and high contrast follows the theme in effect. - The ask chrome inside verbatim pages follows the choice through data-bk-theme on our own fragments, live across tabs. The host page's <html> is never touched. Declared test changes: - two row tests replaced; - the wipe-dialog test hovers first; - four r2_flow rows retired, with successors in r2b.toml (45/45). 785 passed.
This commit is contained in:
@@ -77,7 +77,13 @@ on mouseover"*.
|
||||
top-right, which is still picture.
|
||||
- **Everywhere else (no hover, a coarse primary pointer, or any coarse pointer
|
||||
present), the cluster is visible and in flow**, on its own line at the
|
||||
bottom of the row. Hover-only would mean no
|
||||
bottom of the row. The mechanism: the strip and the cluster share one
|
||||
`.desk-media` box. Under a real hover it is the positioning box; otherwise it
|
||||
dissolves (`display: contents`) and the cluster becomes the row's last line.
|
||||
- Known limit: the touch-LAPTOP branch (a fine primary pointer plus a coarse
|
||||
one) cannot be emulated, because Chromium's touch emulation makes the
|
||||
primary pointer coarse. That branch is covered by reading the media query,
|
||||
not by a test. Hover-only would mean no
|
||||
controls at all on touch. Every control there is at least 28px square
|
||||
(r2's Slate T2 floor).
|
||||
- **× hides with the others** (OPEN-1, answered yes). A visible × on every row
|
||||
@@ -97,9 +103,18 @@ Merge 2, with the row. booth-dev has put both on the record (thread
|
||||
None when the filesystem cannot say. None renders as NOTHING, never a guess.
|
||||
- "Updated" is `landed_at`, the content clock the "new" section already reads.
|
||||
|
||||
They render on the Desk row and in the booth header as dated FACTS, a
|
||||
different kind of thing from the lifetime pill (state) and the controls
|
||||
(actions). Their exact form is settled in merge 2 against the built row.
|
||||
They render on the Desk row's facts line and in the booth header's status line
|
||||
as dated FACTS, a different kind of thing from the lifetime pill (state) and the
|
||||
controls (actions). One macro, `_dates.html`, serves both:
|
||||
- **created** is a DATE, "created 12 Sep" (with the year only when it is not
|
||||
this year's);
|
||||
- **updated** is an AGE, "updated 5d ago", measured from ONE clock per page
|
||||
(`now` in the context), so every row is measured from the same instant;
|
||||
- each is a `<time>` with `datetime` (ISO) and its exact local stamp as the
|
||||
title;
|
||||
- **updated is left out** within a minute of created: a booth that arrived in
|
||||
one go has one date, not two that say the same thing;
|
||||
- a birth time the filesystem cannot give renders NOTHING.
|
||||
|
||||
## D2 — Reveal all (blur ruling A)
|
||||
|
||||
@@ -311,6 +326,8 @@ reading; this is the control the operator uses, which the blur ruling assumed.
|
||||
|---|---|---|---|
|
||||
| test_flow_browser `test_a_rows_keep_release_and_wipe_take_no_room_of_their_own` | controls visible at rest; a row with no badge has no side column (gap ≤14px) | replaced by `the_row_controls_take_no_room_where_a_hover_exists` | the operator ruled hover-reveal; the side column now always holds the lifetime pill |
|
||||
| test_flow_browser `test_on_a_touch_screen_the_row_controls_keep_their_tap_floor` | measures `.desk-facts form button` | the same floor, measured on `.desk-acts` controls | the controls moved; the floor did not |
|
||||
| test_flow_browser `test_the_wipe_dialog_shows_what_is_being_wiped_and_never_fails_open` | clicks the row's wipe at rest | hovers the row first, then clicks | wipe is hidden until hover (OPEN-1, answered yes) |
|
||||
| tests/mutations/r2_flow.toml, four rows on the facts-line controls | proved the controls visible at rest on the facts line | retired, with successors in r2b.toml | their tests were replaced, as declared above |
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
||||
Reference in New Issue
Block a user