feat(nav): topbar utility cluster — avatar menu, notifications bell, ⌘K stub, repo + conn polish #607
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!607
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "boss/581"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #581.
Summary
username | Logout | ThemeTogglecluster: Forgejo avatar with deterministic two-letter fallback, operator card, theme picker, profile/docs links, destructive logout footer.useNotificationsStorefed viauseSSE's onmessage side-effect — every route's stream feeds the bell with no per-route wiring. Surfaces dead-letters, stage failures, and error envelopes over the rolling 24h window. "Dismiss all" stampsseenAtin localStorage.⊕glyph for lucideFolderGit2; trigger label flips between repo name (1 selected),N repos(many), andAll(none).lgwhen state islive; full pill onlg+ and always forreconnecting/disconnected./whoamisurfacesavatar_url,profile_url,forge_base_urlso the avatar menu and notification links resolve without extra round-trips.Test plan
flow:dead-letterevent; "Dismiss all" zeroes itlg, full pill onlg+just qaclean (typecheck + Biome + 2622 server tests)All five AC clusters met and CI green (#2634). The compact-mode conn-pill, notifications store, ⌘K stub, and avatar menu are correct.
AvatarMenuis gated onuser !== null, so the theme picker is unreachable before/whoamiresolves and permanently gone on any auth-disabled deployment — oldThemeTogglewas unconditional. Fine for always-auth setups; worth a follow-up if auth-off ever ships.eventToNotification(three-branch event mapping) and the selectors innotifications-store.tsare exported with a_resetNotificationsForTesthelper but no spec was shipped — consider adding one alongside.