Skip to content

Releases: PolderLabs/openkan

v0.7.0 — unified task storage refactor

Choose a tag to compare

@DrB0rk DrB0rk released this 08 Sep 18:40

Full Changelog: v0.6.3...v0.7.0

v0.6.1 — atomic lock, project registry cleanup, fixture-smell detector

Choose a tag to compare

@DrB0rk DrB0rk released this 08 Sep 11:58

v0.6.1 — 2026-09-08

Added

  • ok project clean [--apply|--all|--dry-run] subcommand to prune stale or non-active entries from ~/.config/openkan/projects.json (XDG-aware).

Changed

  • XDG_CONFIG_HOME is honored when resolving the registry path so tests cannot pollute the user's global project list.
  • kanban/server.ts:startOrAttach uses an atomic pidfile write (<pid>:<port>:<parent>) as the single-instance lock — the legacy lockfile+pidfile pair is gone.
  • ok serve --mode=background preflights the pidfile before spawning the detached child so the second invocation fails fast (or takes over with --force) instead of silently spawning a child that collides with the live server.

Fixed

  • --force now reliably takes over a live server: the parent CLI SIGTERMs the existing PID, waits up to 3s, then SIGKILLs, before spawning its own detached child.
  • Test hygiene in tests/serve-background-keepalive.test.mts: the --project=${tmpdir} flag is removed (the cwd already scopes the registry), and every spawn sets XDG_CONFIG_HOME=${tmpdir} so integration tests cannot leak into the user's ~/.config/openkan/.
  • Process-leak cleanup: detached children and orphan CLI processes are SIGKILLed on SIGINT/SIGTERM/beforeExit in both tests/serve-background-keepalive.test.mts and tests/ok-cli-task-reconcile.test.mts. New tests/server-lockfile.test.mts covers the atomic pidfile lock, --force takeover, stale-pidfile reclamation, and the <pid>:<port>:<parent> background-mode pidfile format.

Agent discipline

The OpenKan skill gains a 7-rule Agent discipline section (claim → heartbeat → update → complete-or-cancel; never create fixture-shaped tasks; tests must never write to the user's .ok/; sub-agents inherit the parent's discipline). A new tests/fixture-smell-detector.test.mts reads .ok/tasks/<id>.json first (canonical) so cancelled tasks are not flagged by their stale MDX mirror.

Install

```sh
npm install -g @polderlabs/openkan@0.6.1
ok version
```

Full changelog: https://github.com/PolderLabsVOF/openkan/blob/v0.6.1/CHANGELOG.md

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

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

v0.5.4-beta.1

v0.5.4-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Sep 19:58
105aec6

Automated beta release of @polderlabs/openkan@0.5.4-beta.1.

Commit: 105aec6

What's Changed

Full Changelog: v0.5.2-beta.1...v0.5.4-beta.1

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 07 Sep 19:37
2feeddd

Automated stable release of @polderlabs/openkan@0.5.3.

Commit: 2feeddd

What's Changed

Full Changelog: v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 07 Sep 19:08

Automated stable release of @polderlabs/openkan@0.5.2.

Commit: 83a023c

What's Changed

New Contributors

Full Changelog: v0.5.1...v0.5.2

v0.5.2-beta.1

v0.5.2-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Sep 19:05

Automated beta release of @polderlabs/openkan@0.5.2-beta.1.

Commit: bb98025

What's Changed

New Contributors

Full Changelog: v0.5.1...v0.5.2-beta.1

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 07 Sep 12:57

Automated stable release of @polderlabs/openkan@0.5.1.

Commit: 92e5ba0

Full Changelog: v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 11:46

Automated stable release of @polderlabs/openkan@0.5.0.

Commit: 2a74de0

Full Changelog: v0.4.8...v0.5.0

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:15

Automated stable release of @polderlabs/openkan@0.4.9.

Commit: 11006b1

Full Changelog: v0.4.6...v0.4.9