Speedrun your technical debt.
Find, fix, and track TODO · FIXME · BUG comments across your codebase with a timer, streaks, and history.
Every codebase has them. TODO: fix this later. FIXME: crashes on edge case. BUG: don't touch. They pile up, get ignored, and quietly rot.
t-rush turns fixing them into a focused, timed session. Pick a comment, open your editor, fix it, confirm it is done. Streak goes up. Quit halfway and the streak resets. Simple.
- Smart scanner finds
TODO,FIXME, andBUGacross all languages - Fuzzy picker lets you filter by file, type, or comment text instantly
- Timer tracks exactly how long each fix takes
- Validator checks if the comment was actually removed after you close the editor
- Streaks count consecutive completions and reset when you quit a run
- History keeps a full log of every run with filters
- Stats show completion rate, avg time, fastest run, and top repo
- Local first stores everything in
~/.t-rush/data.jsonwith no accounts and no telemetry - Cross-platform on Linux, macOS, and Windows
npm i -g @devds1989/t-rushRequirements: Node.js 18+
# scan current repo and start a run
trush start
# scan a specific directory
trush start ~/projects/my-app
Scan a repo and start a speedrun. Defaults to current directory.
trush start
trush start ~/projects/my-appView past runs. Shows the 20 most recent by default.
trush history
trush history --limit 50
trush history --type FIXME
trush history --type BUG
trush history --repo my-app
trush history --completed
trush history --aborted| Flag | Description |
|---|---|
-l, --limit <n> |
number of runs to show (default: 20) |
-t, --type <type> |
filter by TODO, FIXME, or BUG |
-r, --repo <name> |
filter by repo name |
--completed |
show only completed runs |
--aborted |
show only aborted runs |
View your streak, completion rate, average time, and more.
trush statsStreaks count consecutive completed runs, not days.
| Action | Effect |
|---|---|
| Complete a run | streak + 1 |
| Quit or abort a run | streak resets to 0 |
| View stats | shows current, last, and longest streak |
Your longest streak is never lost even when the current streak resets.
t-rush reads your $EDITOR environment variable and opens the file at the exact line number.
export EDITOR=nvim # add to ~/.zshrc or ~/.bashrc| Editor | Flag used |
|---|---|
nvim / vim |
+{line} {file} |
code (VSCode) |
--goto {file}:{line} |
No $EDITOR set? t-rush defaults to nvim on Linux/macOS and code on Windows.
t-rush detects TODO, FIXME, and BUG in all common comment styles:
| Style | Languages |
|---|---|
// |
JavaScript, TypeScript, Go, Rust, C, C++, Java, Kotlin, Swift, Dart |
# |
Python, Ruby, Shell, YAML, R, Perl, Elixir, Crystal |
-- |
SQL, Lua, Haskell, Ada |
% |
Erlang, LaTeX |
; |
Lisp, Clojure, Assembly |
* |
Inside /* */ block comments |
Author annotations are supported too:
// TODO(dev): fix this
// FIXME(alice): handle null caseAll data is stored locally with no network requests and no accounts.
| Platform | Location |
|---|---|
| Linux / macOS | ~/.t-rush/data.json |
| Windows | C:\Users\<username>\.t-rush\data.json |
Writes are atomic so if the process crashes mid-write your data stays safe.
src/
├── index.ts # CLI entry point
├── types.ts # shared types and CommentType enum
├── scanner.ts # repo walker and comment parser
├── editor.ts # editor spawn and line targeting
├── validator.ts # post-edit comment removal check
├── timer.ts # run timer
├── store.ts # read/write ~/.t-rush/data.json
├── streak.ts # streak and stats logic
├── ui.ts # chalk styles and result card
└── commands/
├── start.ts # main run flow
├── history.ts # past runs display
└── stats.ts # stats display
Contributions are welcome. Please open an issue before submitting a large PR.
git clone https://github.com/DevDs1989/trush
cd trush
npm install
npm run dev -- startMIT © Dev