Board Layout, Questionnaires & Full Width
Every list and view can now be a board. Display → Layout switches between List and Board (or press V), stored per view. Each group becomes a column — Group by None falls back to status — and dropping a card in another column writes that property. Cards put every property under the title in the detail page’s order; on a status board the status control is left off, since the column says it. Column headers carry the grouped value’s symbol, and subtodos show as cards or fold away. Drag a column header to reorder the columns — or a section header to reorder the list’s sections — per view, with Reset order in the Group by menu.
Agents can ask
An agent that needs a decision can now file a questionnaire instead of guessing: ct ask or the MCP’s create_questionnaire attaches single-choice, multiple-choice and free-text questions to a todo. A Questions row appears in the sidebar while one is open, the Questions page steps through it with letter shortcuts, an Other answer and Skip on optional questions, and the agent reads the answers back with ct answers or over REST. Everything an agent does now reads as AI · session · via member, so you can tell which Claude session did what even though they share one API key, and ct create --label lets agents tag the todos they file as AI.
Views: templates, seeds and windows
New view offers templates — Today, Upcoming, My todos and Overdue — that bring their filters, grouping and sort, and a new workspace is seeded with all four as shared views; the My todos and Upcoming pages retire in their favour. The due filter gains Tomorrow and Next 7 days windows, there is a Status date sort (how long a todo has sat in its column), favorite view rows count their matches, deleting a view is undoable, and the filter row folds away behind the Filter button.
Favorites you can drag
Favorites reorder by drag; drag a list or view in to favorite it and out to remove it, and an empty Favorites opens as a drop target when you carry something up. A todo can be a favorite too — from its context menu, or by dragging the row from the list into the sidebar. Favorites sit at the top of the sidebar under Create todo, every sidebar drag is undoable, and sidebar rows open their actions on right-click.
Full width and the sidebar’s edge
Press W (or use the Display menu) for full width on any page: the breadcrumb row becomes a ruled toolbar and lists fill the window, while the todo page keeps its reading column. Drag the sidebar’s edge to set its width, double-click it to reset, and rest the mouse on the left edge of the screen to peek a hidden sidebar in.
Composer and statuses
Paste a URL into the empty composer title and it unfurls: the page’s title becomes the todo’s and a bookmark card with its image opens in the description. Statuses can belong to one list, as labels can since last month: Settings → Statuses gets a list picker and every status picker narrows to the workspace’s statuses plus the list’s own.
Improvements
- Acceptance criteria, design and notes on the todo page are plain sections aligned with the activity timeline; ticked criteria strike through
- Subtodos no longer draw a guide line to their left
- The sidebar has its edge line and dividers back, and keyboard focus rings draw inside it
- Filter and Display are icon-only with tooltips; the create view dialog’s presets are choice cards
- The state icons settle on one cut — the Terminal/Lucide switch in Settings is gone — and a parent’s status icon no longer draws a progress ring
- ct 0.10.0 and MCP 0.24.0 carry questionnaires,
--labeland session attribution
Fixes
- Tooltips are dark in dark mode instead of white
- A closing menu no longer takes focus back from what its item focused
- A description no longer jumps when the live editor replaces the loading preview
- The composer survives a touch pick from its menus and keeps its title above the keyboard
- The identifier reads “Draft” until the number syncs back, then rolls to it
- Pending-write counts cover every table, and a pending delete survives a newer echo
- The delete confirm promises undo only when there is one
- Empty group headers show no collapse chevron and read as disabled; list sections fold to their headers while one is dragged