wifi-densepose/dashboard
ruv 21ad10e8d8 feat(dashboard): UX usability pass — help center, 10-step welcome tour, panel descriptions
Addresses user feedback: "make the UI generally easier to use with more
descriptions, help, settings, and guidance."

## New: nv-help — comprehensive help center

Single dialog with 5 tabs:
- 🚀 Quickstart — 7 numbered steps covering Run/B-trace/Verify/Drag/Tunables/Ghost Murmur/App Store
- 📖 Glossary — 14 jargon terms (NV-diamond, CW-ODMR, MagFrame, Witness,
  Determinism gate, Lock-in demod, Shot-noise floor, Biot-Savart,
  Multistatic fusion, Scene, Tunables, Transport, App Store, Ghost Murmur),
  each with category badge (physics/rust/ui) and a search box
- ? FAQ — 7 frequently-asked questions with answers about determinism,
  recovered vs predicted |B|, custom scenes, data privacy, witness
  mismatch, Inspector vs right-rail, App Store rationale
- ⌨ Shortcuts — full keymap (12 chords)
- ℹ About — what nvsim is, the Apache-2.0/MIT license, the determinism
  commitment, GitHub link

Triggers: ? button in topbar, ? key from anywhere, Settings → Help.

## nv-onboarding — expanded from 6 to 10 steps

Each step now has an icon, body, and an optional 💡 hint. Steps walk
through: Welcome → Scene → Run → Inspector → Witness → Tunables →
Ghost Murmur → App Store → Console+REPL → Done. Each step has a
"Step X of 10" label and improved progress dots (active/done/empty).

## Sidebar panel descriptions

Each panel (Scene, NV sensor, Tunables, Pipeline) gets a 1-2 sentence
explainer paragraph. NV sensor panel includes a "What's NV?" link
that jumps to the Glossary section in nv-help. Each Tunables slider
has a `title` tooltip explaining what it controls.

## Settings drawer rewritten with explanations

Every toggle now has a `desc` paragraph explaining what it changes,
when to use it, and any cross-references (ADRs, defaults). Three new
rows added:
- Open help center
- Replay welcome tour
- Reset all preferences (with confirm + IndexedDB wipe + reload)
About row links into nv-help's About section.

## Inspector empty states

Both Signal and Frame tabs now show a friendly empty state when no
frames have arrived: "No frames yet. Press ▶ Run in the topbar (or
hit Space) to start the live B-vector trace." Witness already had
its own empty state.

## A11y additions

- Topbar `?` button has aria-label="Open help"
- Theme button has aria-label="Toggle theme"
- Settings toggles (motion, auto-update) have role="switch" + aria-checked
- Sidebar slider inputs have aria-label
- Help center modal: role=dialog, role=tablist with role=tab buttons
  + aria-selected, role=tabpanel for body

Validated end-to-end against https://ruvnet.github.io/RuView/nvsim/:
- Welcome modal opens on first visit, "Step 1 of 10", 10 dots
- ? button opens help center, 5 nav sections, Quickstart loads first
- Glossary tab shows 14 term entries
- Sidebar panel intros render correctly
- Inspector shows "No frames yet" empty state when idle

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-04-27 10:40:02 -04:00
..
public feat(nvsim): server + onboarding + PWA + GH Pages workflow [ADR-092] 2026-04-26 20:09:27 -04:00
src feat(dashboard): UX usability pass — help center, 10-step welcome tour, panel descriptions 2026-04-27 10:40:02 -04:00
.gitignore feat(dashboard): nvsim Vite+Lit dashboard with WASM transport + App Store [ADR-092] 2026-04-26 19:22:04 -04:00
index.html feat(dashboard): nvsim Vite+Lit dashboard with WASM transport + App Store [ADR-092] 2026-04-26 19:22:04 -04:00
package-lock.json feat(nvsim): server + onboarding + PWA + GH Pages workflow [ADR-092] 2026-04-26 20:09:27 -04:00
package.json feat(nvsim): server + onboarding + PWA + GH Pages workflow [ADR-092] 2026-04-26 20:09:27 -04:00
tsconfig.json feat(dashboard): nvsim Vite+Lit dashboard with WASM transport + App Store [ADR-092] 2026-04-26 19:22:04 -04:00
vite.config.ts feat(nvsim): server + onboarding + PWA + GH Pages workflow [ADR-092] 2026-04-26 20:09:27 -04:00