Previously the Inspector and Witness rail buttons did nothing useful.
The Ghost Murmur research spec from
docs/research/quantum-sensing/16-ghost-murmur-ruview-spec.md had no
in-dashboard surface at all. Both addressed.
## nv-rail
- Inspector button → view='inspector', pins inspector to Signal tab
- Witness button → view='witness', pins inspector to Witness tab
- New Ghost Murmur button (ghost-shaped svg) → view='ghost-murmur'
- All 5 nav buttons + Settings now functional
## nv-app
- View union extended: scene | apps | inspector | witness | ghost-murmur
- Main area swaps between <nv-scene>, <nv-app-store>, <nv-ghost-murmur>
- nv-inspector receives a `pinTab` prop forcing Signal/Witness tab
when the user clicks the corresponding rail button
## nv-ghost-murmur (new view)
- Full research view summarising the publicly-reported April 2026
CIA NV-diamond heartbeat program and RuView's 3-tier mesh equivalent
- Sections: news context, physics reality check, RuView mapping table,
$165 build BoM + honest performance, privacy/ethics/legal, refs
- Links out to the spec doc, public gist, issue #437, Sci Am article
- Content sourced verbatim from the on-disk research spec
## nv-inspector pinTab
- Implements willUpdate() so parent-driven tab pin happens within the
same render pass, fixing a Lit "update after update" warning
Validated end-to-end with `npx agent-browser` against the live
GitHub Pages deploy at https://ruvnet.github.io/RuView/nvsim/ —
all 5 rail buttons work, Ghost Murmur view renders 7 sections /
9 cards / 4 outbound links, witness verification still passes.
Co-Authored-By: claude-flow <ruv@ruv.net>
Worker was resolving /nvsim-pkg/ against self.location.origin, which
under GitHub Pages stripped the /RuView/nvsim/ prefix and 404'd on the
WASM module. Main thread now reads import.meta.env.BASE_URL and forwards
it in the boot RPC; worker resolves against that.
Verified live at https://ruvnet.github.io/RuView/nvsim/ — boot succeeds,
witness verified, determinism gate ✓.
Co-Authored-By: claude-flow <ruv@ruv.net>
Rounds out the dashboard surface introduced in 39ec05edc with all four
remaining ADR-092 deliverables, plus a deploy workflow that publishes
the SPA to gh-pages/nvsim/ without disturbing the existing observatory
or pose-fusion demos.
## nvsim-server (ADR-092 §6.2)
New crate `v2/crates/nvsim-server`. Axum host fronting nvsim::Pipeline:
- REST control plane (15 routes) — /api/health, /api/scene, /api/config,
/api/seed, /api/run, /api/pause, /api/reset, /api/step,
/api/witness/{generate,verify,reference}, /api/export-proof
- Binary WebSocket data plane at /ws/stream — pushes 32-frame
MagFrame batches at ~60 Hz tick rate
- /api/witness/verify always runs the canonical Proof::generate so the
hash matches Proof::EXPECTED_WITNESS_HEX byte-for-byte across WASM
and WS transports — the determinism contract.
- CORS configurable via --allowed-origin, listens on 127.0.0.1:7878 by
default, single-binary deployment.
## Onboarding tour (ADR-092 §10 Pass 6)
`<nv-onboarding>` Lit component, 6-step welcome:
Welcome → Scene canvas → Run → Witness → App Store → Done.
First-run only — persisted via IndexedDB `onboarding-seen` flag.
Re-triggerable via `nv-show-tour` event for the help menu.
## PWA service worker (ADR-092 §9.3)
vite-plugin-pwa wired with workbox-window. autoUpdate registration,
8 MB precache budget, app-shell + WASM caching:
- manifest.webmanifest with /RuView/nvsim/ scope
- icon-192.svg + icon-512.svg in dashboard/public/
- 16 precache entries / 302 KiB
Verified production build under NVSIM_BASE=/RuView/nvsim/:
dist/index.html → /RuView/nvsim/assets/...
dist/manifest.webmanifest → scope: /RuView/nvsim/
dist/sw.js + workbox-*.js generated cleanly
## GitHub Pages deploy workflow
`.github/workflows/dashboard-pages.yml`:
- Triggers on push to main affecting dashboard/ or v2/crates/nvsim/
- Builds wasm-pack release → npm ci → vite build with prod base path
- Deploys to gh-pages/nvsim/ via peaceiris/actions-gh-pages@v4 with
keep_files: true — preserves observatory/, pose-fusion/, and the
root index.html landing page
After first run, the dashboard will be live at:
https://ruvnet.github.io/RuView/nvsim/
Validated end-to-end with `npx agent-browser`:
- Onboarding modal renders on first visit
- Workspace `cargo check --workspace` clean (1 warning in unrelated
sensing-server, no nvsim-server warnings after dead-code prune)
- Production build passes with correct base path resolution and
PWA manifest scope
Co-Authored-By: claude-flow <ruv@ruv.net>