Skip to content
vic

rschenk/jj-todo

A todo-list wrapper for jj-vcs

rschenk/jj-todo.json
{
"createdAt": "2025-07-16T14:38:36Z",
"defaultBranch": "main",
"description": "A todo-list wrapper for jj-vcs",
"fullName": "rschenk/jj-todo",
"homepage": "",
"language": "Shell",
"name": "jj-todo",
"pushedAt": "2025-07-20T02:40:01Z",
"stargazersCount": 6,
"topics": [
"jj",
"jujutsu"
],
"updatedAt": "2025-09-26T07:43:02Z",
"url": "https://github.com/rschenk/jj-todo"
}

A todo-list wrapper for jj-vcs

![screenshot of jt log]!(docs/screenshot@2x.png “screenshot of jt log”)

jj is a fantastic version control system which I’ve been happily using for some time. After using the squash workflow, I realized I could create a bunch of temporary changes after the described change and use it like a todo list, then squash them down when I was finished.

Todo lists work best when they are:

  • Quick to make
  • Granular
  • Give you a dopamine hit when you check an item off
  • Keep motivation going by letting you see your progress
  • Don’t require context switching

jj-todo gives you some simple wrappers around jj new, jj desc, and jj log to make todo-lists integrated right into your usual vcs workflow, check them off as you complete them, then squash them down when you finish all the items.

This is just a bash script. Download jt and chmod +x. It is simply a wrapper for jj commands with a halfway decent cli.

This readme will describe the commands, but I’ve written a [guide]!(docs/guide.md) for how I use this! Take a skim through the docs below so you know what the commands do, then head over to the guide.

Makes a change with the provided description preceeded by "- [ ] "

If the current jj change has a description, creates a new change after the current one.

If the current jj change has no description, sets the description to the message you provide.

Terminal window
$ jt new do the things
# if the current change has a description,
# equivalent to jj new -m "- [ ] do the things"
$ jt new do the things
# if the current change has NO description,
# equivalent to jj describe -m "- [ ] do the things"

Quickly blast out a todo list:

Terminal window
$ jt n fix the bug
$ jt n update the tests
$ jt n touch up docs

Insert a todo before another:

Terminal window
$ jj new --before xyz
$ jt n oops forgot that thing

Toggles a todo item done by changing "- [ ]" to "- [x]" (and vice versa)

It will only alter the description if it starts with "- [ ]" or "- [x]". All other descriptions will be unaltered/ignored.

Terminal window
$ jt log
tqs - [ ] fix event handler
@ rws - [ ] ui matches mockup
mmy - [x] update validations
$ jt toggle
$ jt log
tqs - [ ] fix event handler
@ rws - [x] ui matches mockup # <-- Notice it checked this one
mmy - [x] update validations

A wrapper for jj log with a more streamlined template.

Any args you pass will be forwarded along to jj log.

Terminal window
$ jt log
$ jt log --reversed --limit 10