Skip to content

59-hub: Settings ▸ Tools & connections (T4), missing tools explain themselves (T5), skies off the bundle (T3) - #429

Merged
AlexZ005 merged 3 commits into
feat/59from
feat/59-hub
Oct 23, 2026
Merged

AlexZ005 merged 3 commits into
feat/59from
feat/59-hub

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

Roadmap 59, lane 59-hub. Base v1.41.0. Packs side: theprototype-app/packs#19.

T4 — Settings ▸ Tools & connections

  • src/lib/tools/toolStatus.js: a leaf registry. registerToolRows(section, readable, {add}) (sections in page order: chat, mesh, animation, aibox, agents, desktop — a section appears once something registers, so 55/58 add theirs in one call) and registerFeature({id, label, section, needs, ready, row}).
  • builtinTools.js: chat providers + voice typing, mesh providers, desktop tools (Blender and any glTF tool). Each row: status dot, Test, Enable / Disable over the existing switches, the features it turns on, Set up → the unchanged provider forms.
  • Settings ▸ AI is now Tools & connections (ToolsHub.svelte); 'ai' stays a deep-link alias. No storage key moved (vitest migration test + e2e seeded from the old keys). New: a mesh-provider Test (ComfyUI /system_stats, Meshy task list — no credits), additive aiStt.enabled and tools:blender (both absent = on).

T5 — feature status

toolLinks.explainMissing(id): the AI button, quick prompt bar, Add-menu AI row, phone More sheet, mic and viewport Add ▸ "Generate 3D model… (set up)" stay visible; when the tool is missing they say what is missing and open its row. The assistant's system prompt and generate_mesh's error read the same toolSummary().

T3 — HDRIs off the bundle

static/hdri/*.hdr → packs hdri/ (byte-identical). hdri/skyFetch.js: an export reads its own copy; otherwise Cache Storage tp-skies-v1; otherwise the ref-pinned packs base. If the CDN is unreachable the sky is unavailable: the preset's flat sky shows, no error, and it retries on online. Exports still embed the chosen sky.
Release zip: 16,536,221 → 10,378,986 bytes (−6.16 MB), 0 hdri/*.hdr.

Tests

  • vitest 202 files / 2500 tests pass; svelte-check 299/39 = baseline.
  • e2e all pass: sky-cdn (dev + built app with the export-embed check), hdri, tools-connections (incl. axe serious-only on the page), settings-shell, settings-narrow, settings-narrow-devices, roadmap-13-ui-polish, mesh-generation, ai-presets, a11y-axe, context-menu-redesign, mobile-map, vr-ai-voice, ai-assistant.

Before release (59-int)

Merge packs#19, move format-1, purge and content-verify all five files against hdri/SHA256SUMS before this deploys. Deployed-build e2e runs need E2E_BLOCK_SW=1; E2E_SKIES_CDN=1 proves it against the real CDN. Rows for 55 Agents and 58 Animation / AI box, plus gating Edit in Blender… with explainMissing('editInBlender'), are listed in the lane STATUS.

🤖 Generated with Claude Code

AlexZ005 and others added 3 commits October 23, 2026 12:03
… on first pick, Cache Storage keeps them

static/hdri/*.hdr (7.5 MB) moved to the packs repo's hdri/ (packs PR, byte-identical). skyFetch.js:
an export reads its own copy, else Cache Storage (tp-skies-v1, keyed by URL, older ref dropped),
else the ref-pinned packs base (VITE_HDRI_BASE > VITE_PACKS_BASE > packs@format-1). A CDN that
cannot deliver is not an error: status 'unavailable', the preset's flat sky shows, the next
'online' event retries. Exports still embed the chosen sky (fetched through the same path).

e2e: sky-cdn (fetched once across reload, counterfactual, blocked CDN fallback, export embed on a
built app) + hdri suite; h.routeSkies serves the skies from a local packs checkout (opt-in).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ery outside tool; missing tools explain themselves

T4: lib/tools/toolStatus.js, a leaf registry — registerToolRows(section, readable) (sections in page order:
chat, mesh, animation, aibox, agents, desktop; a later roadmap adds its rows in ONE call) and
registerFeature(). builtinTools.js registers chat providers + voice typing, mesh providers and desktop
tools (Blender and any glTF tool); each row: status dot, Test, Enable / Disable over the EXISTING switches,
the features it turns on, Set up -> the old provider forms. Settings ▸ AI is now Tools & connections
(ToolsHub.svelte; 'ai' stays a deep-link alias). No storage key moved (vitest migration test + e2e seeded
from the old keys). New: mesh provider Test (ComfyUI /system_stats, Meshy task list — no credits),
additive aiStt.enabled (absent = on), tools:blender (absent = on).

T5: buttons whose tool is missing stay visible: toolLinks.explainMissing(id) toasts what is missing and
opens its row (AI button, quick prompt bar, Add menu, phone More, mic, viewport Add ▸ Generate 3D model…
(set up)); the assistant's system prompt and generate_mesh's error read the same status.

e2e tools-connections (migration, Test ✓/✗, red dot, Enable/Disable, T5 links, prompt, axe serious-only)
ALL PASS; settings-shell / vr-ai-voice / ai-assistant updated for the rename.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e shots; one page description

sky-cdn: settle() waits for the named sky (a preset switch passes through 'off'), a box before the
export (the exporter refuses an empty scene) — ALL PASS on a BUILT app (scripts/serve-build.cjs,
E2E_BLOCK_SW=1) incl. the export carrying hdri/meadow_2_1k.hdr byte-identical to the CDN copy.
settings-shell clicks nav rows by EXACT label ('Connection' is a substring of 'Tools & connections');
roadmap-13 I3 expects the 'tools' key. ToolsHub's intro folded into the category description.
CLAUDE.md architecture note; docs/settings-storage-keys.md rows for the hub.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@AlexZ005
AlexZ005 merged commit 09479ec into feat/59 Oct 23, 2026
8 of 9 checks passed
@AlexZ005
AlexZ005 deleted the feat/59-hub branch October 23, 2026 21:16
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