ACTIONS: one action list per Tab from the #484 registry, rendered in context menu, top-row capsule, selection bar, swipes, shortcuts (1/3) #581

Open
opened 2026-10-01 06:31:25 +00:00 by kayg · 1 comment
Owner

Owner decisions (2026-10-01, toolbar/actions grill: Q1, Q3, Q4, Q6, Q13)

One action list per Tab, rendered everywhere ("please please reuse the code"). The #484 action registry is the single source of truth for each item action: label, icon, shortcut (Apple and Windows & Linux presets, #542), group/divider, order, priority, destructive flag, and availability (by selection kind/count and permissions). Every surface renders from it, with no hand-written menus:

  • the right-click context menu (long-press on touch) = the full list;
  • the desktop top-row action capsule (Finder: [Share | Tag | ⋯]) acts on the selection, highlights by priority, ⋯ = the rest; with nothing selected its ⋯ shows folder/view actions;
  • the bottom Tab Bar morph on desktop shows only "N selected ×" (no action icons; no duplicates). On phones it shows the top 3 actions + ⋯ (iOS Files);
  • swipe actions on touch rows (left = quick actions, right = Copy link), configurable in Settings → Gestures;
  • keyboard shortcuts and aria-keyshortcuts;
  • API/CLI/MCP (already from the registry).
    On desktop, the action capsule shows as many actions as fit the width ("the desktop view has width and we should use it"), by priority, then ⋯.
    Header rule (Q1): the top row holds only view-level controls and the selection-bound action capsule; no ⓘ button (Info is in the actions list, ⌘I, Space).
    Applies to Files, Photos, Mail, Notes, Tasks, Money and Calendar.
    Tests:
  • a unit test: every surface lists the same actions in the same order for a given selection;
  • a guard test: fails if a menu or toolbar item is defined outside the registry;
  • an e2e per Tab: right-click, capsule ⋯ and the phone bar match.
    Screenshots at 390/820/1440 in both themes.
    Order: 1 of 3 (then #toolbar-row, then #inspector-morph). Start after merge round 5 lands.
## Owner decisions (2026-10-01, toolbar/actions grill: Q1, Q3, Q4, Q6, Q13) **One action list per Tab, rendered everywhere ("please please reuse the code").** The #484 action registry is the single source of truth for each item action: label, icon, shortcut (Apple and Windows & Linux presets, #542), group/divider, order, priority, destructive flag, and availability (by selection kind/count and permissions). Every surface renders from it, with **no hand-written menus**: - the right-click context menu (long-press on touch) = the full list; - the **desktop top-row action capsule** (Finder: `[Share | Tag | ⋯]`) acts on the selection, highlights by priority, ⋯ = the rest; with nothing selected its ⋯ shows folder/view actions; - the **bottom Tab Bar morph** on desktop shows only "N selected ×" (no action icons; no duplicates). On **phones** it shows the top **3** actions + ⋯ (iOS Files); - swipe actions on touch rows (left = quick actions, right = Copy link), configurable in Settings → Gestures; - keyboard shortcuts and `aria-keyshortcuts`; - API/CLI/MCP (already from the registry). On desktop, the action capsule shows as many actions as fit the width ("the desktop view has width and we should use it"), by priority, then ⋯. **Header rule (Q1):** the top row holds only view-level controls and the selection-bound action capsule; no ⓘ button (Info is in the actions list, ⌘I, Space). Applies to Files, Photos, Mail, Notes, Tasks, Money and Calendar. **Tests:** - a unit test: every surface lists the same actions in the same order for a given selection; - a guard test: fails if a menu or toolbar item is defined outside the registry; - an e2e per Tab: right-click, capsule ⋯ and the phone bar match. Screenshots at 390/820/1440 in both themes. **Order:** 1 of 3 (then #toolbar-row, then #inspector-morph). Start after merge round 5 lands.
Author
Owner

Static audit evidence for DESIGN §34, One action list per Tab:

The current API action metadata is route-oriented and has no item-action icon, group, order, priority, or availability fields: crates/calternal-api/src/actions.rs:13-29. UI menus still define actions directly; for example Photos builds its own MenuNode list in apps/web/src/lib/photos/PhotosView.svelte:638-650, and the Share dialog keeps a separate permission list in apps/web/src/lib/files/ShareDialog.svelte:283-289.

Expected: one item-action registry feeds each surface, API/CLI/MCP metadata, shortcut hints and touch actions. Test idea: for one selection, compare action IDs and order across context menu, toolbar, selection bar, swipe actions, keyboard and API.

Static audit evidence for DESIGN §34, One action list per Tab: The current API action metadata is route-oriented and has no item-action icon, group, order, priority, or availability fields: crates/calternal-api/src/actions.rs:13-29. UI menus still define actions directly; for example Photos builds its own MenuNode list in apps/web/src/lib/photos/PhotosView.svelte:638-650, and the Share dialog keeps a separate permission list in apps/web/src/lib/files/ShareDialog.svelte:283-289. Expected: one item-action registry feeds each surface, API/CLI/MCP metadata, shortcut hints and touch actions. Test idea: for one selection, compare action IDs and order across context menu, toolbar, selection bar, swipe actions, keyboard and API.
Sign in to join this conversation.
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
kayg/calternal#581
No description provided.