List Timeline, Bulk Actions & Sync You Can Trust
Every list now has a timeline: activity across the whole list, grouped by calendar day and written as accomplishments — what got done, what moved, and who did it, in one readable stream. Cascading changes name their cause (“closed because its parent closed”), rapid-fire edits merge into one line, and archived history is folded in so the story doesn’t stop where the archive begins.
Do more at once
Bulk actions arrived: update or archive many todos in one call, select them by filter, and preview the selection with a dry run before anything changes. Archiving also got a cleaner rule — it’s decided at the root todo, and the whole subtree rides along.
Sync that refuses to lose your work
This release hardens the local-first write path end to end. If the server rejects one change, that change is quarantined on its own — with a visible notice, a count of what’s waiting behind it, and a manual retry — instead of silently wedging every write after it. Changes that depend on a quarantined row wait for it; everything else flows around. Rows that left your view while a device was offline are reconciled away on the next boot, queued writes flush before sync starts so nothing races, and a self-diagnosing error overlay can tell you which layer is down — readable even from a phone. If the API has a bad day, your edits wait it out and land when it’s back.
The app keeps itself fresh
When a new version deploys, open tabs now show a reload prompt — no more running last week’s app in a forgotten tab. Signing in takes you straight to your last workspace, the loading spinner stays continuous across the page load, and on wide screens the Space-toggled todo preview docks beside the list instead of covering it.
Quicker in the hand
Press H to open the palette in recently-visited history mode. Palette search now reaches the archive, and rows show their state icon. Sort and group menus flip direction by clicking the active option, and refuse each other’s field so you can’t group and sort by the same thing. On mobile there’s finally a proper tappable create button. And ct learned to work fully offline — reads and writes both — with a browser-approval login flow that never makes you paste a key.
Improvements
- Workspace settings gained a Memory tab for the facts agents have saved
- An opt-in preference wraps long todo titles instead of truncating them
- Timeline rows wrap long text, in lists and on the detail page
- The state icons were re-cut with the motion grammar of the retired engine — crisper at every size
- Status marks honour their stored colour as a flat accent tint
- Group and sort drops log the moved todo’s attribute change in its activity
- The create-todo button hints its hold menu and leads with “Create more”
- Subtodos inherit their parent’s list automatically
- Preferences are grouped under Account in the settings sidebar
- Archive opens instantly with skeleton rows
- Big performance pass: list switches, archived lookups, and activity queries are all noticeably faster
Fixes
- Rapid successive edits are never dropped by the stale-write guard
- A synced row no longer discards a pending local edit it can’t outrank
- Deleting a todo waits for its undo toast to close, so undo always works
- The confirm-before-delete preference is honoured again
- Escape in the subtodo filter stays in the filter; Mod+Z in a text field stays native undo
- The due-date and recurrence panels open from the keyboard
- Recurrence now closes the completed todo and spawns the next one — no more open twins
- Archived todo pages no longer blank out, and archive requests pin their workspace
- The filter bar survives the list → todo → back round trip
- Your view preferences survive a no-op view change