aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-client/src/preload.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-21 17:50:08 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-21 17:50:08 +0200
commit73490d331179cb640828b8625abb75208cd7ae5f (patch)
tree5782835ae06d3f84c4a9c11c8babcec0d8126157 /packages/meshbay-client/src/preload.js
parent8730281d739d9ed1d6f2d366772582eea8ba0294 (diff)
downloadmeshbay-73490d331179cb640828b8625abb75208cd7ae5f.tar.gz
feat: D.6 first-run wizard — detect, start, link, group, gek-init, pair
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 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-client/src/preload.js')
-rw-r--r--packages/meshbay-client/src/preload.js2
1 files changed, 2 insertions, 0 deletions
diff --git a/packages/meshbay-client/src/preload.js b/packages/meshbay-client/src/preload.js
index e9fd375..c8553a5 100644
--- a/packages/meshbay-client/src/preload.js
+++ b/packages/meshbay-client/src/preload.js
@@ -86,6 +86,8 @@ contextBridge.exposeInMainWorld('meshbay', {
// pattern as hub:fetch.
node: {
detect: () => ipcRenderer.invoke('node:detect'),
+ installed: () => ipcRenderer.invoke('node:installed'),
+ start: () => ipcRenderer.invoke('node:start'),
call: (method, path, body) => ipcRenderer.invoke('node:call', method, path, body),
pairingCode: () => ipcRenderer.invoke('node:pairing-code'),
setPairingCode: (code) => ipcRenderer.invoke('node:set-pairing-code', code),