project-nomad/admin/inertia/lib
Ken Eucker 8c91436aa4 fix(easy-setup): let the wizard run offline instead of 500ing and blocking Next
An air-gapped host installed from an artifact bundle could not use Easy
Setup at all, which defeated the point: the bundle had already put the app
images on disk.

Two independent faults.

The Wikipedia catalog was the only one of the page's four catalogs that
threw on a failed fetch rather than degrading, so GET /api/zim/wikipedia
returned 500 offline and the UI showed "An internal error occurred". It now
reads the manifest through CollectionManifestService like the curated
categories, maps and creator packs already do — refresh when reachable,
cached copy when not, empty list when neither. The second, laxer schema for
the same remote file is deleted; having two is what let the offline path
diverge in the first place.

Navigation and completion were gated on a blanket !isOnline check. Stepping
through the wizard needs nothing from the network, and installing an app
whose image is already in the local Docker daemon works air-gapped because
the install path skips the registry pull. The gate is now per-selection:

- The page reports which services have a local image, so offline the
  capability cards offer exactly those and badge the rest "Needs internet"
  rather than queuing an install that would fail mid-pull.
- Map regions, content tiers, creator packs, AI models and Wikipedia are
  genuinely remote, so those steps stay unselectable — but they now say why
  instead of leaving dead cards.
- Complete Setup is blocked offline only when a selection actually needs a
  download, and names which ones.

The offline decision logic is a pure module with unit tests.

Two gaps found and documented rather than changed here: an AMD host still
can't install Ollama offline (the install swaps to ollama/ollama:rocm, which
--with-apps doesn't bundle), and remote Ollama can't be configured from the
wizard offline since its checkbox lives behind the AI capability card.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 19:40:37 -07:00
..
api.ts feat(AI): nomad.md for custom instructions (#1127) 2026-08-04 03:38:33 +00:00
benchmarkScore.ts fix(benchmark): partial runs are not the NOMAD Score (relabel + renormalize) (#1088) 2026-08-04 03:37:41 +00:00
builderTagWords.ts feat(benchmark): Require full benchmark with AI for community sharing (#99) 2026-01-25 00:24:31 -08:00
classNames.ts feat: initial commit 2025-06-29 15:51:08 -07:00
collections.ts feat: curated content system overhaul 2026-02-11 15:44:46 -08:00
global_map_banner.ts fix(UI): improve global map banner display logic (#702) 2026-05-20 10:16:00 -07:00
icons.ts feat(supply-depot): add MeshCore Web with self-signed HTTPS 2026-06-23 04:47:06 +00:00
kb_file_grouping.ts feat(rag): add subject/collection organization to knowledge base (#1063) 2026-08-04 03:37:42 +00:00
kb_guardrail.ts feat(KB): guardrail modal at 50GB / 10%-free thresholds (RFC #883 §7) 2026-05-20 10:16:00 -07:00
kb_job_health_display.ts feat(KB): status pill + last-activity timestamp on Processing Queue (RFC #883 §5/§10) 2026-05-20 10:16:00 -07:00
navigation.ts feat(supply-depot): add custom launch URLs for apps 2026-06-23 04:46:56 +00:00
offline_setup.ts fix(easy-setup): let the wizard run offline instead of 500ing and blocking Next 2026-08-15 19:40:37 -07:00
util.ts feat: improve global error reporting with user notifs 2026-02-04 22:58:21 -08:00