Skip to content

v0.6.0 — board-sync, daemon-detach, tray diagnostics, chat UI cleanup

Choose a tag to compare

@DrB0rk DrB0rk released this 08 Sep 10:17
· 32 commits to main since this release

Highlights

Single-store / dual-API board sync

ok task add now POSTs to the local dashboard with the new tsk-* id as clientId so the task appears on the board at http://127.0.0.1:7777/ immediately. When the dashboard is offline, ok task add falls back to writing .ok/board.json directly; the boot-time reconciler promotes any pending offline entries onto the board on the next server start, idempotent by clientId. apiCreateTask accepts clientId and refuses to create duplicates when a board task already carries that id (new optional offlineMirrorId?: string field). ok task claim, ok task heartbeat, and ok task complete now PATCH the matching board task, not just the offline cache, so agent leases are visible to operators on the dashboard.

Daemon-detach fix

ok serve --mode=background (and ok start --mode=background) no longer leaves the CLI attached to the controlling terminal. The v0.5.1 fix only unref'd stdio, which kept the HTTP listener's event-loop handle alive and the terminal never returned. v0.6.0 spawns a detached child running --mode=foreground (which binds the port), waits for HTTP to respond, writes pid:port to the pidfile, prints the startup message, and exits 0. The detached child owns the HTTP listener; ok stop SIGTERMs the child PID. On Windows, windowsHide: true suppresses the detached child's console window.

Tray diagnostics

bin/tray.ts now captures the underlying error from every failure mode (node-systray import failure, constructor failure, early-exit failure) and surfaces it verbatim instead of collapsing to a generic "libappindicator missing on Linux" message. The fallback reporter in ok serve / ok start prints a platform-aware install hint: apt install libappindicator3-1 on Debian/Ubuntu, dnf install libappindicator-gtk3 on Fedora, a macOS Go-binary check on Darwin, and a reinstall hint when the bundled bin/assets/tray/ icons are missing. 16 test cases cover every failure mode end-to-end.

Chat top-bar cleanup

Chat top bar trimmed to a single 44px row: conversation title and a keyboard-accessible overflow menu (⋯). Project, Files, Plugins, Chat sessions, and Get desktop app live behind the menu (each wired to the existing openTab() routing). The legacy Project/Files/Plugins tab row is hidden via CSS rather than deleted so the overflow menu continues to work. No new npm dependencies. Keyboard flow: Tab reaches overflow trigger (aria-haspopup=true), Enter/Space opens, Tab/Shift+Tab cycles items, Escape returns focus.

Other changes

  • ok board delete <id> — new subcommand that calls DELETE /api/tasks/<id>. Replaces the previous need to issue raw DELETE HTTP calls when an operator needed to clean up an accidental duplicate.
  • SessionStart hint now reads: "OpenKan ready. Create work with ok task add — visible on the board at the dashboard URL."

Verification

  • npm run typecheck clean.
  • npm run check (sanity): 0 errors, 0 warnings.
  • tests/tray-error-reporting.test.mts: 16/16 pass.
  • tests/serve-background-keepalive.test.mts: 2/2 pass.
  • tests/chat-tabs-row.test.mts: 8/8 pass.
  • tests/ok-cli-task-reconcile.test.mts: server-up / server-down / reconciler idempotency / duplicate-POST / move coverage.
  • Pre-existing tests/watcher.test.mts timing flakes (~13 cases) and two outdated regex expectations in tests/serve-cli.test.mjs are unchanged from v0.5.1 baseline; tracked separately.

Full diff: v0.5.1...v0.6.0