docs(design): the background menu as built, and the log row (E28 S3e4c)

This commit is contained in:
2026-09-26 20:48:53 +02:00
parent 97381e65d0
commit 21df7c8348
2 changed files with 13 additions and 5 deletions
+9 -1
View File
@@ -311,7 +311,14 @@ Which actions are visible and which live in a menu.
a page menu. It only mirrors page-scope actions that already exist in the toolbar (sort, view, quick
filters, select all); it adds no new function. Shift+right-click falls through to the browser's own menu.
Desktop only: on touch a long-press on the background clashes with scrolling and text selection, so the
toolbar stays the touch path.
toolbar stays the touch path. Built (`ui/PageMenu`; PageShell listens, `lib/backgroundTarget` decides
"empty") on five pages: the **feed** (sort, reshuffle, view, watch state, content types, source, clear
filters), the **Plex library grid** (sort, watch state, clear filters), the **channel manager** (layout,
the cards' sort, sync status, edit tags, clear the tag filter, read subscriptions from YouTube), a
**playlist** (play all, group by channel, reset view, save order, undo / redo, and the list's own "…")
and the **notification center** (mark all read). Never a destructive row (delete, revert, clear
everything) and never a long quota run (backfill): a stray right-click must not be one click from those.
The tab-only pages keep the browser's menu; `pageMenuScope.contract.test.ts` holds the list.
### Text stays selectable — _Decided_
@@ -465,5 +472,6 @@ Wherever there is text, the user can select it and copy it, and no click action
| 2026-09-26 | Keyboard ring on a flush row | Inside the row (a table row by its tag, a log line, a show header in its clipping card, with the card's corners) | The ring outside, as on a card | Outside it ran under the table head and past the table, and a clipping card cut it away entirely (invisible focus) |
| 2026-09-26 | Fade at rest | The sticky header's fade appears with the first 1rem of scroll (a scroll-driven animation; no fade where unsupported) | A fade that is always drawn | At rest it dimmed the first row and hid its ring's top edge; nothing is under the header yet |
| 2026-09-26 | Narrow playlist table | "#" and Channel hide by the table's own width (under 42rem), not the window's | Hiding below the `sm` window width | Beside the playlist rail a desktop window left the table 432 px and the title 0 px |
| 2026-09-26 | Background menu built | Five list pages (feed, Plex grid, channels, playlist, notifications); the toolbar's sort / view / filters and the band's actions; no destructive row | Every page with a toolbar; the "…" menus copied whole, delete included | The tab-only pages have nothing a menu would add; a blank-area right-click must not be one click from delete |
| 2026-09-24 | Chip family | One `Chip` (filter / token / tag / suggest / ghost) + `DismissibleChip`; nothing under 24; the lint rule "no raw `<button>` outside ui/" | Five chip geometries in five files | The applied-filter row, the tag cells, the year picker and the saved-view editor each drew their own chip; a one-letter tag was 21px wide |
| 2026-09-24 | Button families | `Button` / `IconButton` / `Pressable` / chips / `DragHandle`; `lg` 40 for a hero CTA; pills and a 48 Play on media (from C5) | Every button hand-painted | 268 hand-rolled buttons in 79 files drifted into as many looks; the ladder only holds if every button stands on it |