feat(redesign): identity-first user menu + show-once app-password panel #321

Merged
Cordy merged 4 commits from feat/redesign3b into main 2026-08-27 14:58:31 +00:00
Owner

Redesign phase 3, slice 2.

User menu

  • Anchored, not measured: #usermenu moves inside a position:relative .avwrap next to the avatar — the getBoundingClientRect positioning is gone, so the panel can't drift on scroll/zoom/resize. Bell/row menus keep their existing positioning (slice 3 handles the bell).
  • Identity first: name, email, host (location.host) and an Admin chip (synced from #um-admin visibility on open) at the top, fed by /api/v1/me with defensive field fallbacks — in local-auth mode where /me is absent, the panel just shows the host. The avatar button gains real initials when a name is known.
  • Items get icons (appearance/lock/shield/help/sign-out, 24×24 stroke-1.8 house style); data-i18n moved to inner spans so translation doesn't wipe the SVGs.
  • Restyle for all five themes: raised surface, 5px padding, full-bleed rules, deeper shadow under night/dusk/black/slate. Shared .menu styles also modernize the bell/row menus' base look.
  • Sign out marked danger with a tinted hover.

App passwords

The show-once secret now sits in an accented .secret panel (lock glyph, mono 15px input, Copy as primary) instead of a bare field row. List rendering untouched.

Verification

node --check all script blocks; anchored splices count=1. Operator visual check: avatar → menu (identity block, icons, initials), create an app password → secret panel.

Redesign phase 3, slice 2. ## User menu - **Anchored, not measured**: `#usermenu` moves inside a `position:relative` `.avwrap` next to the avatar — the `getBoundingClientRect` positioning is gone, so the panel can't drift on scroll/zoom/resize. Bell/row menus keep their existing positioning (slice 3 handles the bell). - **Identity first**: name, email, host (`location.host`) and an Admin chip (synced from `#um-admin` visibility on open) at the top, fed by `/api/v1/me` with defensive field fallbacks — in local-auth mode where `/me` is absent, the panel just shows the host. The avatar button gains real initials when a name is known. - **Items get icons** (appearance/lock/shield/help/sign-out, 24×24 stroke-1.8 house style); `data-i18n` moved to inner spans so translation doesn't wipe the SVGs. - **Restyle for all five themes**: raised surface, 5px padding, full-bleed rules, deeper shadow under night/dusk/black/slate. Shared `.menu` styles also modernize the bell/row menus' base look. - Sign out marked `danger` with a tinted hover. ## App passwords The show-once secret now sits in an accented `.secret` panel (lock glyph, mono 15px input, Copy as primary) instead of a bare field row. List rendering untouched. ## Verification `node --check` all script blocks; anchored splices count=1. Operator visual check: avatar → menu (identity block, icons, initials), create an app password → secret panel.
Cordy merged commit fadc59ed19 into main 2026-08-27 14:58:31 +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#321
No description provided.