diff --git a/docs/DESIGN.md b/docs/DESIGN.md index d9b023e6..8d0c1148 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -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 `