Skip to content

Dashboard v2 — polish (skeletons + a11y + TopBar overflow + drift banners) #175

@thinmintdev

Description

@thinmintdev

Parent

#148

What to build

Final pass before cutover. Cross-cutting polish that doesn't belong to a single route.

  • Skeleton loaders — 5 variants: SlotCard / snapshot row / journal line / NPU sub-row / model row. "Look like the real thing, not a generic block." Fired during initial load before stores hydrate.
  • a11y:
    • Skip-link top-left (jumps to view content for screen-reader users bypassing sidebar each route load)
    • Persona dropdown as proper <combobox> (not custom div)
    • Tool-call blocks as <details> with explicit collapse-arrow treatment
    • Focus rings (2px outline distinct from browser default) on every interactive element
    • axe-core clean per route
  • TopBar overflow menu — "Open Chat Pro UI" → hal0-chat.thinmint.dev external / Docs → hal0.dev/docs/v0.2-upgrade / GitHub → Hal0ai/hal0 / Discord
  • Drift detector banner — "Catalog out of sync. registry.toml has been edited since the last sync. [Sync now] [Dismiss]"
  • Catalog out-of-sync banner

Acceptance criteria

  • All 5 skeleton variants render during initial load
  • axe-core E2E passes with zero violations on every route
  • Keyboard navigation top-to-bottom works on every route
  • Tool-call <details> collapsed by default; expand on click
  • TopBar overflow opens + each link routes externally
  • Drift + catalog-out-of-sync banners reachable via tweak
  • Lighthouse a11y score ≥95 on Dashboard + Slots + Models routes

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    dashboard-v2Dashboard v2 rewrite (issue #148)enhancementNew feature or requestv0.2.1v0.2.1 release scope

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions