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>