A terminal-based todo manager backed by a plain Markdown file.
Warning
This project is heavily generated by LLM/AI. If you are uncomfortable with AI-generated code, please review the source carefully before use.
# Clone the repository
git clone https://github.com/Gr1shma/grc.git
cd grc
# Install the binary
cargo install --path .# Open the default file (~/.todo.md)
grc
# Open a specific todo file
grc /path/to/todo.mdBy default, grc reads and writes ~/.todo.md. You can specify a file path as an argument or override the default path with the GRC_TODO_PATH environment variable:
GRC_TODO_PATH=/path/to/todo.md grcPress ? inside the app to open the full help overlay.
| Key | Action |
|---|---|
/ |
Filter (live search across sections and tasks) |
Esc |
Clear active filter (when one is set) |
j / k |
Move down / up |
l / Enter |
Focus task panel |
h / Esc |
Back to sections |
Tab |
Switch panel |
a |
New heading one level below (child of current) |
A |
New heading one level up (above the current subtree) |
o |
New heading at same level, below current |
O |
New heading at same level, above current |
i |
Rename / edit heading |
t |
Set due date (empty to clear) |
x / Space |
Toggle done |
dd |
Delete |
yy / p |
Yank / paste |
gg / G |
Jump top / bottom |
q |
Quit |
When setting a due date with t, you can type any of:
| Input | Resolves to |
|---|---|
YYYY-MM-DD |
Exact date, e.g. 2025-12-31 |
YYYY/MM/DD YYYY.MM.DD |
Exact date with a different separator |
today tod t |
Today |
tomorrow tmr tmw tom |
Tomorrow |
next week nextweek nw |
7 days from today |
sun/mon/.../sat |
Next occurrence of that weekday (also full names) |
next mon next monday |
Next occurrence of that weekday |
this monday |
This/next occurrence of that weekday |
+3d -2d +2w +1m +1y |
Relative offset (days/weeks/months/years) |
in 3 days in 2 weeks |
Relative offset (also months/years) |
jun 15 june 15 |
Month name + day (current year, next year if passed) |
Leave the field empty and press Enter to clear the due date.
You can also embed a due date inline when creating or renaming a task (press t/a/o/i). Type the task text followed by due: and any of the shortcuts above, and the date is parsed automatically while the due: token is stripped from the task text:
Submit report due:2025-06-15
Buy milk due:next monday
Call mom due:in 3 days
Pay rent due:2025/06/15
Plain Markdown — edit it directly in any editor:
# work
- [ ] Fix bug
- [x] Write tests due:2025-06-15
## backend
- [ ] Deploy API
### api
- [ ] Fix endpoint