Changelog
2026-06-18v0.12.0— Top-Level Tasks
- Changed: Tasks moved to the project root. Task files (and
./tasks/archive/) now live at the project root in./tasks/, while.kandown/only holds config (kandown.json), the web UI (kandown.html), agent docs (AGENT.md,AGENT_KANDOWN.md), and daemon runtime metadata. The previous layout (.kandown/tasks/*.md) is no longer supported. - Added: Silent one-time migration. The first time a project is opened after this change, any
.kandown/tasks/*.mdis moved to./tasks/(plus thearchive/subfolder). The legacy.kandown/tasks/directory is removed if it ends up empty. No user action required — the migration runs in the background on startup and logs a single line to the CLI. - Changed:
kandown initnow createstasks/at the project root instead of inside.kandown/. The init banner shows the new layout explicitly. - Changed: The web app (File System Access mode) now asks the user to pick the project root (the parent of
.kandown/) rather than.kandown/directly. The app derives both.kandown/(config) and./tasks/(tasks) from it. Server mode already routes through the CLI REST API, so only the server-side path needed updating. - Added: New
POST /api/migrate-tasksendpoint andserverMigrateTasks()browser helper. The web app calls it on startup in server mode before reading tasks, so the legacy → new layout move happens transparently. - Added:
bin/kandown.js → getProjectRoot(kandownDir),getTasksDir(kandownDir),migrateTasksToTopLevel(kandownDir), plus the matching helpers insrc/cli/lib/board-reader.ts(getTasksDir). All previouskandownDir + 'tasks'paths are nowgetTasksDir(kandownDir). - Fixed:
archiveTask/unarchiveTaskREST endpoints were referenced in the route handler but never defined (would 404 on every archive action). Implemented them on the new tasks path. - Changed: All 48 i18n locales —
emptyState.selectFolderDescnow tells the user to pick the project root and references both folders. - Changed:
templates/AGENT.md,templates/AGENT_KANDOWN.md, andtemplates/README.mddocument the new layout. The legacytemplates/.kandown/tasks/(empty) is removed; sample tasks already lived attemplates/tasks/at the top level. - Changed: Default Empty State text and CLI init banner updated to reflect the new layout.