SAM-2: Add Settings entry to the avatar dropdown #801
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
1 participant
Notifications
Due date
No due date set.
Blocks
#802 SAM-1: Drop Settings from the desktop primary nav
charles/claude-hooks
Reference
charles/claude-hooks#801
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
As an operator, I want a Settings entry in the avatar dropdown, so that the primary entry point to repos, labels, secrets, appearance, and agent-types lives next to my identity card and theme controls — the same place every other modern product puts it.
Acceptance criteria
Menu placement
apps/web/src/components/avatar-menu.tsx, between the<ThemeSection />block and the existing<Menu.Separator />that precedes the external links, insert a new section separator and a Settings menu item.<Menu.Item render={<Link to="/settings">…}/>using@tanstack/react-router'sLink(matching the existingto="/settings/appearance"link insideThemeSection) — not an<a href>, so client-side routing and the active-route machinery keep working.Settingsicon withsize={14}andaria-hidden="true", matchingMenuLink's visual rhythm (icon · label · trailing space).MenuLink:flex items-center gap-2 px-3 py-2 text-small text-text-primary transition-colors hover:bg-surface-high focus-visible:bg-surface-high focus-visible:outline-none.data-testid="avatar-menu-settings"./settingsand closes the popup (Base UI'sMenu.Itemhandles popup-close on activation by default — verify the wrapped<Link>doesn't preventDefault).Ordering
authEnabled)<Menu.Separator />lives both above and below the new row so it visually anchors as its own group rather than dangling under the theme picker.Tests
avatar-menu.tsx: opening the menu surfaces agetByTestId('avatar-menu-settings')element with rolemenuitemand an accessible name "Settings"./settings; assert through a memory-router test./settings/(the index route).Out of scope
/settings/repos,/settings/secrets, etc. — the dropdown links to the index, the existing in-page tab strip handles further navigation.Customize…link insideThemeSection(it points to/settings/appearanceand stays as-is).References
specs/settings-into-avatar-menu.md§ "Story SAM-2"apps/web/src/components/avatar-menu.tsx— popup composition (lines 161–242)apps/web/CLAUDE.md— foundation primitives, token discipline, a11y baselineDependencies
None. Per the spec's suggested implementation order, SAM-2 lands first so the entry point exists before SAM-1 drops it from the desktop nav.