Workwarrior Updates
Updates
Release notes, technical deep dives, and project news.
-
UDAs: TaskWarrior's Extensible Data Model and What We Did With It
TaskWarrior’s User Defined Attributes system is one of the most underused features in the tool. You can add arbitrary typed fields to every task — strings, numbers, dates, durations, booleans....
-
Services All the Way Down
Everything in Workwarrior is a service. The CLI dispatcher (bin/ww) routes every command to a service script in services/<category>/. The browser UI is a service. The heuristic compiler is a...
-
Why We Wrapped Instead of Built
TaskWarrior is almost 20 years old. Hledger is over 15. JRNL has been actively maintained for over a decade. These aren’t projects that emerged from a hackathon and might disappear...
-
Natural Language Should Earn Its Way In
There’s a temptation when building a CLI tool in 2024 to make AI the primary interface. Type anything, the model figures it out. No documentation needed. Natural language all the...
-
Adding a Service in 20 Lines
The service architecture is designed to be extended. A new service is an executable script in services/<category>/. The ww dispatcher discovers it by scanning for executables. No registration step. No...
-
The Control Plane: What ww/system Actually Is
ww/system is the directory that doesn’t ship. It’s the project’s internal coordination layer — planning documents, task boards, fragility registers, agent role definitions, gate contracts. Users never see it. But...
-
Two Sync Engines, Two Different Jobs
Workwarrior ships two GitHub sync engines. They’re complementary, not redundant, and understanding the distinction matters for how you configure each one.
-
Weapons: Gun, Sword, and the Philosophy of Task Manipulation
Weapons are tools that manipulate profile data in special ways — creating, slicing, and packaging tasks beyond what direct TaskWarrior commands produce. They’re called weapons because they’re more powerful than...
-
The Browser UI: No npm Required
The browser UI is Python 3 stdlib only. No npm. No node_modules. No build step. No webpack, no bundler, no transpiler. If you can run Python 3, you can run...
-
627 Rules and the Case Against Always Needing AI
The heuristic engine came from a simple question: how many natural language command phrasings can you handle with regex before you need a language model? The answer turned out to...
-
Five Tools, One Profile, Zero Leakage
The design decision that made everything else possible was profile isolation. It sounds simple and it is — one directory per work context, environment variables to activate it, every tool...