feat(#389): mobile wave B — list & actions at phone width #521

Merged
Cordy merged 7 commits from fix-389b into main 2026-09-13 18:44:43 +00:00
Owner

Wave B of the #389 mobile pass, per the approved mockup (star + kebab rows with bottom-sheet menus).

≤480px:

  • Rows carry a phone-only size · date tail in the subtitle — the c-size/c-mod columns those live in are already hidden on narrow lists, so the information returns instead of disappearing.
  • Row actions reduce to star + kebab at 44px touch targets; the download shortcut leaves the row (it already exists inside the kebab menu).
  • The kebab and space sheets open with an identity header (icon, name, kind · size / item count) via a guarded __phoneRowHead hook in both rowmenu builders — hidden by CSS above 480px.
  • Tiles settle at two columns; the gear popover drops its tile-size row.
  • Toolbar compacts: icon-only Upload, sort button loses its label.
  • Row grid override matches the body[data-space="personal"] selector specificity so the personal-space container rule cannot reassert the 40px action column.

≤819px:

  • Selecting items swaps the tab bar for a fixed bottom action bar built by DOM-moving the existing #sel-* buttons + count into a #selbot container (__phoneSel hook in applySel). Width-gated via matchMedia and fully reversible — buttons move home when selection clears or the viewport widens (resize listener covers rotation), so existing handlers stay wired.

Desktop invariant (≥820px): second base line .n2ph, .shhead, #selbot{display:none}, everything else behind max-width media fences; fence gate re-verified across all six style blocks, node --check green on both script blocks.

No new i18n keys needed — the header and bar reuse existing strings.

Wave B of the #389 mobile pass, per the approved mockup (star + kebab rows with bottom-sheet menus). **≤480px:** - Rows carry a phone-only `size · date` tail in the subtitle — the c-size/c-mod columns those live in are already hidden on narrow lists, so the information returns instead of disappearing. - Row actions reduce to star + kebab at 44px touch targets; the download shortcut leaves the row (it already exists inside the kebab menu). - The kebab **and** space sheets open with an identity header (icon, name, kind · size / item count) via a guarded `__phoneRowHead` hook in both rowmenu builders — hidden by CSS above 480px. - Tiles settle at two columns; the gear popover drops its tile-size row. - Toolbar compacts: icon-only Upload, sort button loses its label. - Row grid override matches the `body[data-space="personal"]` selector specificity so the personal-space container rule cannot reassert the 40px action column. **≤819px:** - Selecting items swaps the tab bar for a fixed bottom action bar built by DOM-moving the existing `#sel-*` buttons + count into a `#selbot` container (`__phoneSel` hook in `applySel`). Width-gated via matchMedia and fully reversible — buttons move home when selection clears or the viewport widens (resize listener covers rotation), so existing handlers stay wired. **Desktop invariant (≥820px):** second base line `.n2ph, .shhead, #selbot{display:none}`, everything else behind max-width media fences; fence gate re-verified across all six style blocks, `node --check` green on both script blocks. No new i18n keys needed — the header and bar reuse existing strings.
feat(#389): mobile wave B - list & actions at phone width
All checks were successful
ci / test-and-build (pull_request) Successful in 53s
60c22dfee1
Rows gain a phone-only size/date tail in the subtitle (the c-size and
c-mod columns are hidden on narrow lists), row actions reduce to
star + kebab at 44px touch targets (the download shortcut moves into
the kebab sheet, where it already exists), the kebab and space sheets
open with an identity header (icon, name, kind and size) so it is
clear which item the actions belong to, selection swaps the tab bar
for a fixed bottom action bar built by moving the existing #sel-*
buttons (moved back when selection clears or the viewport widens),
tiles settle at two columns, the gear loses its tile-size row on
phones, and the toolbar compacts to icon-only Upload and an
unlabelled sort button.

Same desktop invariant as wave A: one base display:none line plus
max-width-fenced blocks only, verified by the fence gate across all
style blocks; the selection DOM move is width-gated and reversible.
Cordy scheduled this pull request to auto merge when all checks succeed 2026-09-13 18:43:46 +00:00
Cordy merged commit 5b6ce45dd2 into main 2026-09-13 18:44:43 +00:00
Cordy deleted branch fix-389b 2026-09-13 18:44:45 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#521
No description provided.