Skip to content

Active development — do not use in production yet. Build-in-public project. First stable release: v1.0.0. Expect breaking changes, missing features and rough edges before then.

kandown
111 releases

Changelog

2026-08-08

v0.49.0· Path Truth

Added

  • Dependency chips on the board now surface which task is blocking, not just how many. A single dependency renders as ↪ t234: Fix login button… so a board scan surfaces the blocking task without opening the drawer; multiple dependencies collapse to ↪3 t1, t2, t3 since the count already conveys "there is more than one" and the column width is tight. The new shared formatter at src/lib/dependency-chip-format.ts is consumed by both the web Card and the TUI list row so the two views can never disagree.

Fixed

  • kandown list is no longer the only CLI command that bypassed the shared buildColumnsFromTasks filter. It used to walk the archive folder a second time when --archived was set, producing duplicated rows whose two entries contradicted each other (archived: false and archived: true for the same id). The flag is now derived from the parsed task's frontmatter via the shared isArchived helper, and the second pass is gone.
  • The "is this archived?" check is no longer inlined in three places. The CLI gate, the web store, and the TUI board now all call isArchived from src/lib/parser.ts so the three sites can no longer drift.
  • Files moved into tasks/archive/ via plain filesystem operations (git mv, cleanup scripts) without a frontmatter edit are now recognised as archived. The three readers (readTask, readTaskFile, readTaskFileStrict) now treat the path as the single source of truth: anything under tasks/archive/ is archived, the frontmatter flag stays as a cache that archiveTaskInBoard writes back. The legacy case (file in active with an explicit flag) is still honoured so existing data is not silently re-classified.