From 73490d331179cb640828b8625abb75208cd7ae5f Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 21 Aug 2026 17:50:08 +0200 Subject: feat: D.6 first-run wizard — detect, start, link, group, gek-init, pair MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desktop client guides new users through the full onboarding sequence without a terminal: detect local node → start daemon (systemd with direct-start fallback for dev) → link node key to hub → create group → attach directories → gek-init → operator pair. - node:detect returns configured field to distinguish missing vs stopped - node:start tries systemctl first, checks is-active, falls back to spawning the binary directly when the unit crashes (dev mode) - probeNode() extracts the shared config→token→fetch pattern - SetupWelcome on empty HomePage links to /create-group - CreateGroupWizard step 0 handles node detection and start - platform.js exposes node.installed() and node.start() - 12 setup.* i18n keys added to all 10 locales - Integration test for node:start fallback logic Co-Authored-By: Claude Opus 4.6 --- packages/meshbay-hub/src/meshbay_hub/static/platform.js | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/platform.js') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/platform.js b/packages/meshbay-hub/src/meshbay_hub/static/platform.js index d400b4e..eeffd49 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/platform.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/platform.js @@ -224,6 +224,13 @@ export const node = { async detect() { return bridge && bridge.node ? bridge.node.detect() : { detected: false }; }, + async installed() { + return bridge && bridge.node ? bridge.node.installed() : { installed: false }; + }, + async start() { + if (!bridge || !bridge.node) throw new Error('Node bridge not available'); + return bridge.node.start(); + }, async call(method, path, body) { if (!bridge || !bridge.node) throw new Error('Node bridge not available'); return bridge.node.call(method, path, body); -- cgit v1.2.3