Changelog
2026-07-26v0.37.0— Two Views
Added
- The TUI now has a list view, and it is the default. One task per line with
ID · Age · Status · Priority/Owner/Deps · Tags · Description, using the full terminal width instead of splitting it across five kanban columns that truncate every title to ~15 characters. The selected row expands downward so its whole title is readable; every other row stays exactly one line. Tabswaps list ⇄ board. Neither view replaces the other — the selection is carried across by task id, so you land on the same task in both. The choice is persisted per project in.kandown/kandown.jsonunder a newtuisection (defaultView,showDetailPane,listSort).- A live detail pane under the list, following the selection with id, title, status, priority, owner, assignee, tags, blockers, checklist progress, last-update age and file path. Toggle it with
z. - New list keys:
h/lmove the selected task one column left/right (through the same dependency gate as every other move, and undoable withu),scycles the sort (status, age, priority, id),[/]jump to top/bottom,PgUp/PgDnpage, and the mouse wheel scrolls. - An
updated:frontmatter timestamp, stamped by every write path — CLI, MCP and web. It powers theAgecolumn and the age sort. Deliberately not the file mtime, whichgit cloneresets: on a fresh checkout an mtime-based age would report the same value for every task. - A
blockedfilter mode (f), listing tasks that are waiting on a dependency.
Changed
-
The changelog is now one file per release.
changelogs/vX.Y.Z.mdholds the full notes for each version, andCHANGELOG.mdat the root is a generated index — version, date, release name and per-type change counts, linking to each file. The old single 798-line file made every release edit the same few lines at the top, so every in-flight branch conflicted with every other, andgit log -p CHANGELOG.mdwas unreadable. A release now adds a file instead of editing a shared one, and a link tochangelogs/v0.36.0.mdis stable and guessable forever. Generated bypnpm changelog, verified bypnpm changelog:checkin CI, and staged automatically by the pre-commit hook alongside the codemap — the index cannot go stale. -
GitHub release notes are read straight from the version file rather than sliced out of the index with an
awkrange, which was one heading-format change away from silently publishing an empty release body. -
The full history ships with the npm package.
changelogs/joinsCHANGELOG.mdin the publishedfiles, so the notes for every version are readable offline fromnode_modules. -
One lockfile for pnpm 9 and pnpm 11.
pnpm-workspace.yamlnow declares the minimum supported pnpm version (9.15) and lists the exact patch range pnpm 11 parses, so a freshly cloned repo installs cleanly on either line without the lockfile being rewritten. Local installs no longer churnpnpm-lock.yamlbetween pnpm 9 and pnpm 11, and CI sees a stable lockfile across versions.
Fixed
/search andffilter did nothing. Both were stored in TUI state and advertised in the cheatsheet, but never applied to the rendered tasks — the features had been dead since they were added. They now drive a real filter pipeline shared by both views, matching on id, title, tags and assignee. The dependency gate deliberately still resolves against the unfiltered board, so narrowing the search can never unlock a blocked move.Escin the TUI quit immediately even with a search or filter active, throwing away the narrowing you had just typed with no way back. It now clears the search and filter first, and only quits when neither is set.- The "Search docs" button in the website header did nothing on every non-docs page. The dialog was mounted inside the docs layout while the trigger button lived in the global header, so clicking it (or pressing ⌘K) on the home page fired an event no listener was registered for.
SearchDialognow mounts once in the root layout so the trigger, the global ⌘K shortcut, and the dialog are present on every page. docs/RELEASE.mdclaimed the CLI parsesCHANGELOG.mdand prints it during auto-updates. It does not, and never did — nothing insrc/orscripts/reads the file. The stale claim had been shaping how the changelog was written for several releases.