diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-21 17:50:08 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-21 17:50:08 +0200 |
| commit | 73490d331179cb640828b8625abb75208cd7ae5f (patch) | |
| tree | 5782835ae06d3f84c4a9c11c8babcec0d8126157 /packages/meshbay-client/src/preload.js | |
| parent | 8730281d739d9ed1d6f2d366772582eea8ba0294 (diff) | |
| download | meshbay-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.js | 2 |
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), |