Changelog
2026-08-08v0.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, t3since the count already conveys "there is more than one" and the column width is tight. The new shared formatter atsrc/lib/dependency-chip-format.tsis consumed by both the web Card and the TUI list row so the two views can never disagree.
Fixed
kandown listis no longer the only CLI command that bypassed the sharedbuildColumnsFromTasksfilter. It used to walk the archive folder a second time when--archivedwas set, producing duplicated rows whose two entries contradicted each other (archived: falseandarchived: truefor the same id). The flag is now derived from the parsed task's frontmatter via the sharedisArchivedhelper, 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
isArchivedfromsrc/lib/parser.tsso 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 undertasks/archive/is archived, the frontmatter flag stays as a cache thatarchiveTaskInBoardwrites back. The legacy case (file in active with an explicit flag) is still honoured so existing data is not silently re-classified.