Skip to content

fix(dash): wire Settings → Updates to real backend (#233)#321

Merged
thinmintdev merged 1 commit into
mainfrom
fix/dashboard-mock-cleanup-2026-05-25
May 25, 2026
Merged

fix(dash): wire Settings → Updates to real backend (#233)#321
thinmintdev merged 1 commit into
mainfrom
fix/dashboard-mock-cleanup-2026-05-25

Conversation

@thinmintdev
Copy link
Copy Markdown
Contributor

Summary

  • Adds GET /api/updates/state that probes hal0 + lemonade + flm versions live and returns the shape useUpdates.ts already expects (UpdateState = {hal0, lemonade, flm, autoCheck}).
  • Drops the hardcoded v10.6.0 / v0.9.42 fallback in settings.jsx so missing values render as instead of fabricated versions.

First in a series of mock-cleanup PRs against the v3 dashboard (tracker #234). The other carried-over Vue hardcodes (#213 chat chips, #214 hal0-Pro, #215 NPU panel, #216 create-slot enums) need separate fixes — handled in follow-ups.

Verification

Verified live on hal0 LXC 2026-05-25 — GET /api/updates/check already returns hal0 0.2.0a3 → 0.3.0-alpha.1, but the dashboard's useUpdateState hook calls /api/updates/state (didn't exist before this PR), so the fallback object rendered hardcoded versions.

Backend probes confirmed:
```
$ /opt/lemonade/lemonade --version → lemonade version 10.6.0
$ flm --version → FLM v0.9.42
```

Test plan

  • pytest tests/api/test_updater_routes.py — 14 pass (3 new)
  • ruff check + ruff format --check on touched files
  • Manual: load /settings on a fresh hal0 box; confirm hal0/lemonade/flm versions reflect the live install
  • Manual: stop the upstream releases manifest; confirm hal0.available degrades to null without breaking the surface

🤖 Generated with Claude Code

Adds GET /api/updates/state that probes hal0 + lemonade + flm versions
live and returns the shape the React Updates section already expects
(`{hal0, lemonade, flm, autoCheck}` matching `useUpdates.ts`'s
`UpdateState`). Drops the hardcoded `v10.6.0` / `v0.9.42` fallback
in settings.jsx so missing data renders as `—` instead of fabricated
versions.

- Backend: `_probe_version()` shells out to `lemonade --version` and
  `flm --version` with a 1s timeout; failures degrade to `null` rather
  than 5xx'ing the response. Release-manifest fetch failures likewise
  degrade `hal0.available` to `null`, keeping the rest of the surface
  live.
- UI: trim fallback to `{hal0:{},lemonade:{},flm:{},autoCheck:true}`;
  the lemonade SRow now renders `—` when probe returns `null` instead
  of `undefined · channel: stable`.
- Tests: three new cases — happy-path shape, version-string parsing,
  manifest-fetch failure degradation.

Closes #233.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@thinmintdev thinmintdev merged commit 2240f24 into main May 25, 2026
4 checks passed
@thinmintdev thinmintdev deleted the fix/dashboard-mock-cleanup-2026-05-25 branch May 25, 2026 21:54
thinmintdev added a commit that referenced this pull request May 28, 2026
…lease-manifest (#389)

Add docs/internal/v0.3-state.md as the canonical v0.3 ground-truth doc
(repo HEAD, five-stream status with PR/issue citations, terminology
canon, stale-memory list, open blockers, ADR index). Writers cite this
to stop triangulating PLAN.md + auto-memory + GH issues per word.

Add ADR-0015 (Draft, alpha.2 target) — hal0 is an MCP host platform.
Generalises ADR-0013's per-agent allow-list pattern to third-party MCP
*servers*: registry at /etc/hal0/mcp/servers/<name>.toml, systemd
template hal0-mcp@<name>.service, slot-style lifecycle states, curated
catalog at installer/manifests/mcp-catalog.toml. Closes the gap the
hal0_mcp_host_platform auto-memory calls out and the design behind
issue #224's placeholder install-from-URL UI.

Add ADR-0017 (Accepted) — bell+inbox approval UX for destructive MCP
calls. Documents the contract shipped via Epic #322 (PRs #321 #328
#329 #330 #332): every MCP tool is classified READ-ONLY or
DESTRUCTIVE via MCP annotations, unclassified defaults to DESTRUCTIVE,
no per-agent trust override, pending forever. Third-party MCPs per
ADR-0015 inherit the contract.

Refresh release-manifest.md against v0.2/v0.3 reality. The runtime is
no longer v0.1.x toolbox containers — it's the Lemonade embeddable
tarball + the FastFlowLM .deb. Add optional `lemonade` and `flm`
manifest blocks mirroring the installer's LEMONADE_* / FLM_* pins.
Mark `toolbox_images` as historical (retained for out-of-tree
consumers). Switch CF Pages references to Vercel per the actual
deploy path.

Light fix in api-errors.md: the 401 / auth.required example was
documented as enforced by ADR-0001's FastAPI auth layer, which
ADR-0012 removed entirely in v0.3.0-alpha.1. Reframe as a shape
contract for any future re-introduced auth and for the MCP identity
middleware, not a live request path.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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