UI polish: one glass for menus, one search palette, popovers without pin/X, docked toasts, Settings layout #108

Closed
opened 2026-09-25 18:30:44 +00:00 by kayg · 1 comment
Owner

Branch job/polish-menus-search. Owner feedback 2026-09-25 (DESIGN §34/§35): every menu/submenu/popover uses the shared glass; one type token per role; menus share one text column; ONE search interface (palette; folder scope chip; no inline search; phones: search in the sidebar sheet); previews: no pin, no X, selection keeps the popover, drag on Calendar; toasts dock over the tray (bottom edge on the tray centre line, 30 s); Settings: spacing (sidebar rows, card insets, centred toggles), grouped Plugins cards (Optional / Built into calternal), Search is Core; sidebar-header order swap only; edge swipe opens/closes the phone sidebar; search results only ever include what the user can access (admin entries admin-only: security). Layout-sweep checks for each rule.

Branch job/polish-menus-search. Owner feedback 2026-09-25 (DESIGN §34/§35): every menu/submenu/popover uses the shared glass; one type token per role; menus share one text column; ONE search interface (palette; folder scope chip; no inline search; phones: search in the sidebar sheet); previews: no pin, no X, selection keeps the popover, drag on Calendar; toasts dock over the tray (bottom edge on the tray centre line, 30 s); Settings: spacing (sidebar rows, card insets, centred toggles), grouped Plugins cards (Optional / Built into calternal), Search is Core; sidebar-header order swap only; edge swipe opens/closes the phone sidebar; search results only ever include what the user can access (admin entries admin-only: security). Layout-sweep checks for each rule.
Author
Owner

Polish round on job/polish-menus-search (not pushed). All gates pass; the calendar e2e still stops at an older step (details below).

Commits since the first report

  • 129777d The top bar keeps the toggle and the title on the left. Phone Search moved into the sidebar sheet.
  • b4951ef Search lists only what the User may open. Admin Settings show only for an owner or admin, and the palette hides nothing until the role is known. A disabled plugin's modes and agent commands never show. Recents are kept per user. Before, they were shared across accounts in one browser, so another account could see this user's recent file titles.
  • 7ffbca8 An edge swipe opens the phone sidebar and follows the finger.
  • 32013d7 DESIGN §34 rules updated.
  • 0c27b38 No tooltips on touch or on focus moved by code. This fixes the "Hide sidebar" tooltip that covered a row in the phone sheet.

Gates (worktree server and web build)

  • bun run check: COMPLETED 1386 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS
  • bun run test: Test Files 38 passed (38) / Tests 257 passed (257)
  • bun run build: ✓ built in 1m 44s
  • Layout sweep: checked 164 screens LAYOUT SWEEP PASSED. It prints 2 warnings about duplicate icons: Signed-in devices and Agents, where the rows are of the same kind.
  • e2e/search.mjs: all 10 steps PASS.
  • Adversarial, new search_access section (ROUND2_SECTIONS=search_access): ROUND2 FINDINGS 0.
    • A member does not find the owner's private or trashed files.
    • The member finds a shared file only while the share lasts.
    • The owner's own Trash stays out of search.
    • The member gets 0 admin results for "admin", "users", "invites", "OIDC", "backup", "Server configuration" and "Invitations".
  • New sweep checks:
    • 15: an edge swipe opens the sheet and focus moves into it, a reverse swipe closes it, and a mid-screen swipe does not open it.
    • 16: no tooltip is visible on any touch screen.

Decisions to confirm

  • Tooltips on touch: there are none now, so the earlier long-press label is gone. The aria-label names each action.
  • Shortcut chip: it shows on a hover-capable fine pointer, which always has a physical keyboard, and after a Tab, an arrow key or a Ctrl/⌘ chord. Hiding it on desktops until a key is pressed would remove shortcut discovery for mouse users.

Open issue (not from this branch): e2e/calendar.mjs step 6b fails before it gets to the drag. The "Morning review" log line has already been merged with the next entry, so the test can't find it by its title. I think this is a notes/journal server bug; this branch did not reproduce it on dev.

Screenshots: /home/kayg/Developer/calternal/target/polish-screens/ (68 files, 1440 and 390, paper and tokyo-night).

Polish round on `job/polish-menus-search` (not pushed). All gates pass; the calendar e2e still stops at an older step (details below). **Commits since the first report** - 129777d The top bar keeps the toggle and the title on the left. Phone Search moved into the sidebar sheet. - b4951ef Search lists only what the User may open. Admin Settings show only for an owner or admin, and the palette hides nothing until the role is known. A disabled plugin's modes and agent commands never show. Recents are kept per user. Before, they were shared across accounts in one browser, so another account could see this user's recent file titles. - 7ffbca8 An edge swipe opens the phone sidebar and follows the finger. - 32013d7 DESIGN §34 rules updated. - 0c27b38 No tooltips on touch or on focus moved by code. This fixes the "Hide sidebar" tooltip that covered a row in the phone sheet. **Gates** (worktree server and web build) - `bun run check`: `COMPLETED 1386 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS` - `bun run test`: `Test Files 38 passed (38)` / `Tests 257 passed (257)` - `bun run build`: `✓ built in 1m 44s` - Layout sweep: `checked 164 screens` `LAYOUT SWEEP PASSED`. It prints 2 warnings about duplicate icons: Signed-in devices and Agents, where the rows are of the same kind. - `e2e/search.mjs`: all 10 steps PASS. - Adversarial, new `search_access` section (`ROUND2_SECTIONS=search_access`): `ROUND2 FINDINGS 0`. - A member does not find the owner's private or trashed files. - The member finds a shared file only while the share lasts. - The owner's own Trash stays out of search. - The member gets 0 admin results for "admin", "users", "invites", "OIDC", "backup", "Server configuration" and "Invitations". - New sweep checks: - 15: an edge swipe opens the sheet and focus moves into it, a reverse swipe closes it, and a mid-screen swipe does not open it. - 16: no tooltip is visible on any touch screen. **Decisions to confirm** - **Tooltips on touch:** there are none now, so the earlier long-press label is gone. The aria-label names each action. - **Shortcut chip:** it shows on a hover-capable fine pointer, which always has a physical keyboard, and after a Tab, an arrow key or a Ctrl/⌘ chord. Hiding it on desktops until a key is pressed would remove shortcut discovery for mouse users. **Open issue (not from this branch):** `e2e/calendar.mjs` step 6b fails before it gets to the drag. The "Morning review" log line has already been merged with the next entry, so the test can't find it by its title. I think this is a notes/journal server bug; this branch did not reproduce it on `dev`. Screenshots: `/home/kayg/Developer/calternal/target/polish-screens/` (68 files, 1440 and 390, paper and tokyo-night).
kayg closed this issue 2026-09-25 20:24:24 +00:00
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#108
No description provided.