50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# macOS Menu Bar Companion Foundation Checklist
|
|
|
|
**Date:** 2026-02-16
|
|
**Scope:** Close the OpenClaw "macOS menu bar app" gap with a gateway-side companion status foundation.
|
|
|
|
## Goal
|
|
|
|
Add a practical companion-node status surface so a macOS menu bar app can report heartbeat/platform metadata and operators can inspect active companion state.
|
|
|
|
## Implemented
|
|
|
|
- Added node status protocol parser:
|
|
- `parseNodeStatusSetParams()`
|
|
- Added node status RPC:
|
|
- `node.status.set`
|
|
- Extended node connection state:
|
|
- `status` payload (`platform`, `appVersion`, `deviceName`, `statusText`, `batteryPct`, `powerSource`, `reportedAt`)
|
|
- Added operator node snapshot endpoint:
|
|
- `system.nodes`
|
|
- Wired gateway runtime callbacks for node snapshot listing and status persistence.
|
|
- Updated node method authorization scopes:
|
|
- `companion` role can call `node.status.set`
|
|
- observer/automation remain read-only for node scoped methods.
|
|
|
|
## Docs Updated
|
|
|
|
- `README.md` — node method list now includes `node.status.set` and `system.nodes`.
|
|
- `docs/api/PROTOCOL.md` — added request docs for `node.status.set` and `system.nodes`.
|
|
|
|
## Tests
|
|
|
|
- `src/gateway/protocol.test.ts`
|
|
- status parser valid/invalid coverage.
|
|
- `src/gateway/handlers/node.test.ts`
|
|
- status update persistence behavior.
|
|
- `src/gateway/handlers/handlers.test.ts`
|
|
- `system.nodes` empty + filtered responses.
|
|
- `src/gateway/server.test.ts`
|
|
- end-to-end `node.status.set` + `system.nodes` flow.
|
|
- `src/gateway/auth.test.ts`
|
|
- role-scope denial for `node.status.set` where not permitted.
|
|
|
|
## Validation Run
|
|
|
|
```bash
|
|
pnpm test:run src/gateway/protocol.test.ts src/gateway/auth.test.ts src/gateway/handlers/node.test.ts src/gateway/handlers/handlers.test.ts src/gateway/server.test.ts
|
|
pnpm typecheck
|
|
pnpm build
|
|
```
|