v0.2.0: deadlines that warn
todo-by flags comment tags whose deadline has passed, in any language, and gates CI on them. v0.2.0 is about one thing: deadlines should warn you before they break your build. Full changes in #3.
New Features 🎉
Warn ahead of the deadline
Until now a deadline arrived silently and broke every PR that day. Now it can announce itself:
$ todo-by --warn 14
src/auth.rs:81: due in 5 days (2026-07-15): drop the legacy token check
1 warningWarnings exit 0, so CI stays green while the countdown is visible in every run. In GitHub Actions they render as inline ::warning annotations on the PR. Set it once in config (warn = 14) and forget the flag.
Configuration file
todo-by.toml (or .todo-by.toml), discovered from the current directory upward:
warn = 14
exclude = ["docs/examples/**"] # gitignore-style globs, on top of .gitignore
tags = ["todo-by", "fixme-by"] # replaces the default tag listPrecedence: command line flags, then TODO_BY_FORMAT / TODO_BY_WARN environment variables, then the config file.
Machine-readable output
$ todo-by --format json
{"type":"finding","kind":"overdue","path":"src/lib.rs","line":12,"date":"2026-01-01","deadline":"2026-01-01","days_overdue":4,"message":"remove workaround"}
{"type":"summary","findings":1,"warnings":0}JSON Lines, one object per finding plus a summary record. The schema is additive-stable across releases.
Zero-config GitHub Actions
- run: todo-byThe github annotation format is auto-selected when GITHUB_ACTIONS=true. Findings appear inline on the PR diff.
Scan anything, inspect everything
todo-by -scans stdin (git diff | todo-by -), handling binary and invalid UTF-8 input the same way file scanning does.--exit-zeroreports without failing, for inventory jobs and gradual adoption.--fileslists exactly what would be scanned,--dump-configprints the effective config and its source. Both answer "why was my file skipped" in seconds.--color auto|always|never, honoringNO_COLOR,TERM=dumb, and pipes.
Performance 🚀
The scan loop kept its first-byte fast reject through the multi-tag rewrite, and v0.2.0 measures faster than v0.1: 36ms vs 43ms scanning the laravel/framework repository on CI hardware. Every PR is now benchmark-gated so scan speed cannot regress silently.
Upgrading from v0.1
No breaking changes. All existing tags, flags, and exit codes work unchanged (0 clean, warnings alone stay 0, 1 findings, 2 usage or I/O error). New behavior to be aware of: a todo-by.toml present in your repository (or any parent directory) is now discovered and applied.
Install todo-by-cli 0.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/alies-dev/todo-by/releases/download/v0.2.0/todo-by-cli-installer.sh | shInstall via cargo
cargo install todo-by-cli --lockedDownload todo-by-cli 0.2.0
| File | Platform | Checksum |
|---|---|---|
| todo-by-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| todo-by-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| todo-by-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| todo-by-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| todo-by-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |