Skip to content

feat(dash): mirror snapshot/memmap/throughput sidebar onto /slots#357

Merged
thinmintdev merged 1 commit into
mainfrom
feat/slots-sidebar-mirror
May 28, 2026
Merged

feat(dash): mirror snapshot/memmap/throughput sidebar onto /slots#357
thinmintdev merged 1 commit into
mainfrom
feat/slots-sidebar-mirror

Conversation

@thinmintdev
Copy link
Copy Markdown
Contributor

Summary

  • Wraps SlotsView in the same dash > dash-main + dash-side grid as DashboardView so /slots carries the right-column sidebar over — slot snapshot, memory map, throughput. Skip-path render gets the same treatment so the sidebar shows even before a slot is configured.
  • Fixes SnapshotStrip to drive off slotIndicator(slot) instead of raw slot.state. The strip was rendering dot ready/dot offline/etc., which fell through the pre-2026-05-27 green-pulse vocabulary and ignored the dot-state spec (loaded-but-idle is yellow; only an in-flight request is green pulse). Now mirrors SlotCard: green pulse during serving, yellow for ready/idle/stale, amber-pulse for warming, red for error, grey for off. Status label tinted to match; tooltip shows the indicator's contextual message ("Loaded — last used 23 min ago" etc.). Ready count counts cls in {serving, stale} so Lemonade-evicted slots register as ready (they hot-reload on next request).
  • main.jsx threads onGo into SlotsView so snapshot rows navigate; SlotsView falls back to hash routing if onGo is missing.

Test plan

  • npm run typecheck — clean
  • npm run build — clean (one CSS chunk, one JS chunk, same gzip footprint)
  • npx playwright test specs/slots-v3.spec.ts specs/slot-indicator.spec.ts specs/dashboard-v3.spec.ts — 21/21 pass
  • Live smoke on hal0 LXC: visit /#dashboard then /#slots — confirm sidebar is identical, status labels read serving/ready/idle/warming/error/off, dot colours match the slot cards

🤖 Generated with Claude Code

Carry the dashboard's right-column sidebar over to /slots so the page
has the same at-a-glance health surface (slot snapshot + memory map +
throughput) without context-switching to the dashboard. SlotsView wraps
its existing group sections in `dash > dash-main + dash-side`; the
skip-path render gets the same treatment so the sidebar appears even
before any slot is configured. main.jsx threads `onGo` into SlotsView
so snapshot-row clicks navigate; SlotsView falls back to hash routing
if `onGo` is missing.

Also fix the snapshot strip to use slotIndicator() instead of raw
slot.state — the strip was emitting `dot ready`/`dot offline`/etc.
which fell through the older green-pulse vocabulary and ignored the
2026-05-27 dot-state spec (loaded-but-idle is yellow, only an
in-flight request is green pulse). The strip now mirrors SlotCard:
green pulse during serving, yellow for ready/idle/stale, amber-pulse
for warming, red for error, grey for off/offline. Status label inline
matches the dot colour and the tooltip surfaces the indicator's
contextual message ("Loaded — last used 23 min ago" etc.). Ready
count counts cls in {serving, stale} so Lemonade-evicted slots
register as ready (they hot-reload on next request).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@thinmintdev thinmintdev merged commit 81cc9cf into main May 28, 2026
4 checks passed
@thinmintdev thinmintdev deleted the feat/slots-sidebar-mirror branch May 28, 2026 01:32
thinmintdev added a commit that referenced this pull request May 28, 2026
…rough + gut installer auth section (#390)

- docs/operate/lemonade.md (new, .md canonical): operator reference for
  the v0.2 Lemonade runtime — what it is, where state lives, the /v1/*
  proxy + dispatcher fallthrough (PRs #248/#277), slot ↔ Lemonade
  model mapping (PRs #281/#282), max_loaded_models = 8 LRU cap (PR
  #283), per-type LRU eviction per ADR-0008 (supersedes nuclear-evict
  ADR-0007), OFFLINE-on-eviction (PR #276), and the three known v0.3
  caveats (Vulkan KV gauge missing, whisper RUNPATH workaround, GPU
  cleanup unload hang).

- docs/dashboard/v3.md (new, .md canonical, new docs/dashboard/ dir):
  page-by-page tour of the v3 React dashboard shipped in
  v0.3.0-alpha.1 (PR #235). Covers the shell + Mock-badge convention,
  /dashboard (system overview after #356), /chat (real surface per
  #309/#314/#315/#351), /slots (sidebar mirror per #357 + #344 UX
  sweep), /models (#313/#319/#353), /mcp (#304/#300), /agents (Peers
  per #299), /memory (graph #297, throughput #308), Settings (no Auth
  tab post-ADR-0012), and the footer journal (Epic #322 — PRs
  #321/#328/#329/#330/#332). Mock-fallback issues linked via the
  dashboard-v3 label, not enumerated.

- installer/README.md: gut ~95 lines of stale auth prose (Caddy,
  Bearer-token mint/use/revoke, first-run OTP claim wizard,
  HAL0_AUTH_ENABLED/HAL0_AUTH_DISABLED, password recovery, basic_auth
  upgrade path, the TLS recipe). Replace with one paragraph pointing
  at docs/operate/auth.mdx for the reverse-proxy recipe and
  docs/agents/identity.md for the X-hal0-Agent identity model. Auth
  was removed in v0.3.0-alpha.1 per ADR-0012; the README hadn't
  caught up.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant