Phase 11: hubs on the LAN, desktop Connect mode, Machines page #19
Loading…
Reference in a new issue
No description provided.
Delete branch "refactor/phase-11-discovery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 11: hubs on the LAN, desktop Connect mode, Machines page
Other computers can now find a Kanbot hub on the LAN, pair over HTTPS with the hub's certificate pinned, and either run agents for it (
kanbot-node) or connect the desktop app to it.What's new
hub.enabled,hub.port7433), switched live from the Machines page or the setup._kanbot._tcpaskanbot-<machine id>.local, never the Mac's own name.Discovery.hubsbrowses only on demand, for 60 s after it is asked.kanbot-node discover.kanbot-node pairreads the certificate first (--fingerprint, or a confirmation on a TTY) and stores the pin; every wss dial verifies it.0022_device_companions).NodeHost, and only presets are sent.error.opensOnYourComputer)./machines): computers (online, last seen, running agents, capacity), sharing as a hub (addresses, fingerprint, status), hubs on the network, Connect.Projects.updatecan move a project when no session is open (checked again inside the transaction).since: 2): existing installs see only it.hubandlauncherssettings can be changed only from this computer.Security
openExternallimited to http(s)/mailto;Bug found by the exit check
bonjour-service announced under
os.hostname(), and macOS renamed the computer on every announcement. It now announces underkanbot-<id>.local, and a test checks the name heard over real mDNS. This Mac's LocalHostName was bumped toAlexs-Mac-mini-1061while testing; restore it withsudo scutil --set LocalHostName Alexs-Mac-mini.Checks
npm run lint,npm run typecheck,npx vitest run: 1387 passed, 1 skipped, twice.discover;desktop:verifypasses, and the Windows x64 cross-build succeeds.For you to try by hand (no GUI was launched)
Base:
refactor/phase-10-nodes(PR #18).🤖 Generated with Claude Code
A code offered for a desktop (Devices.offerPairing({ kind: 'desktop' })) pairs two devices in one transaction: the window's browser device (its token is the kanbot_device cookie, Secure over HTTPS) and the node it runs (its token in the answer: { deviceId, nodeDeviceId, nodeToken }). devices.companion_id (migration 0022) points each at the other. Revoking either revokes both and cuts both off. A code for another kind fails like a wrong one. Settings › Devices offers the three kinds and shows a desktop as one entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Over the utility process's parent port ({ type: 'kanbot-shell', action: 'open-connect' }), only from the desktop app's own window (a Local caller) and only when the shell started the server to talk over that port; anything else is ShellUnavailable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>