progress
A minimal CLI task manager: add, check, uncheck, rename, and remove tasks by stable ID, with a minimal output mode for the daily glance.
#utilities #rust #productivity-tools / rust
Why a terminal task manager
Task apps ship with windows, sync, and onboarding. I wanted one that lives in the shell: add, check, remove, and a glanceable daily view. progress is that tool, written in Rust.
A session
-- a day with progress --
$ progress --add "Write case study"
# TSK-1
$ progress --add "Review PR"
# TSK-2
$ progress --minimal
# essential info for today, pending tasks included
$ progress --task TSK-1 --check
# done
$ progress --task TSK-2 --remove
# gone
Design choices
- Stable IDs, not indexes.
TSK-1is a handle, not a position; renames and reordering never break references. The same reason databases don’t use row numbers as keys. - Two output modes.
--minimalfor the daily glance, detailed output when you need it: the CLI equivalent of collapsed vs. expanded. - Commands that read like sentences.
progress --task TSK-1 --checkis self-documenting in shell history and composes with everything else in a terminal.
Scope discipline
The README keeps the surface deliberately small, and that’s the point: it’s a tool, not a platform. The ID-based command surface leaves room to grow (due dates, priorities, export) without reworking the core. Shipping a tool that stays a tool is a feature.