A terminal user interface for managing daily TODO markdown files, built with Go and Bubble Tea.
Find a file
Oliver Davies f10229ec2e Bump version to 1.7.0-unstable
Set flake.nix version to 1.7.0-unstable immediately after tagging 1.6.0,
ready for the next round of changes.
2026-07-16 08:02:36 +01:00
.forgejo/workflows Configure CI pipeline 2026-07-15 00:14:49 +01:00
cmd/todos Add --version flag; default move date to today 2026-07-15 08:46:33 +01:00
config Rename todo-tui to todos-tui consistently and rename binary to todos 2026-07-15 07:15:06 +01:00
docs Update documentation for auto-sort and bulk edit features 2026-07-15 07:29:08 +01:00
internal Add help toggle keybinding 2026-07-16 07:55:52 +01:00
.git-blame-ignore-refs Add .git-blame-ignore-refs 2026-07-15 20:22:06 +01:00
.gitignore Rename todo-tui to todos-tui consistently and rename binary to todos 2026-07-15 07:15:06 +01:00
AGENTS.md Remove trailing slashes from URLs 2026-07-15 23:52:51 +01:00
CHANGELOG.md Release 1.6.0 2026-07-16 08:01:09 +01:00
config.toml Rename todo-tui to todos-tui consistently and rename binary to todos 2026-07-15 07:15:06 +01:00
flake.lock Add treefmt, git-hooks, and flake checks 2026-07-14 22:21:15 +01:00
flake.nix Bump version to 1.7.0-unstable 2026-07-16 08:02:36 +01:00
go.mod Rename todo-tui to todos-tui consistently and rename binary to todos 2026-07-15 07:15:06 +01:00
go.sum Add configuration file support with TOML format 2026-07-14 21:42:20 +01:00
LICENSE Add Apache 2.0 license 2026-07-14 23:41:45 +01:00
README.md Convert keybindings to tables in README 2026-07-15 22:14:20 +01:00
TODO.md Simplify footer using help-style bindings 2026-07-16 07:32:50 +01:00

TODO TUI

A terminal user interface for managing daily TODO markdown files, built with Go and Bubble Tea.

Features

  • Browse TODO files organised by date in a sidebar
  • View and manage tasks for selected date in main pane
  • Toggle task completion status with real-time file updates
  • Add new tasks to any date
  • Create new date files on demand
  • Vim-style keybindings for efficient navigation
  • Configurable TODO directory
  • Demo mode for testing with sample data

Installation

Using Nix

nix run git.oliverdavies.uk/opdavies/todos-tui

Build from source

git clone https://git.oliverdavies.uk/opdavies/todos-tui.git
cd todos-tui
nix build
./result/bin/todos

Quick Start

# Run with default directory (~/Nextcloud/Notes/notes/todos)
todos

# Specify custom directory
todos -d /path/to/todos

# Or use environment variable
TODO_TUI_DIR=/path/to/todos todos

# Or use a configuration file
# Create ~/.config/todos-tui/config.toml with:
# todos_dir = "/path/to/todos"

# Run in demo mode with sample data
todos --demo

Keybindings

Navigation

Key Action
j / Move down in task list
k / Move up in task list
J Move task down (reorder)
K Move task up (reorder)
Ctrl+n Next date (down in sidebar)
Ctrl+p Previous date (up in sidebar)

Actions

Key Action
x Toggle task completion status
e Edit task
d Delete task (prompts for confirmation)
a Add new task to current date
n Create new date file
q / Ctrl+c Quit

File Format

TODO files use markdown format with GitHub-style checkboxes:

- [ ] Incomplete task
- [x] Completed task

Files are named with the date in YYYY-MM-DD.md format.

Documentation

Development

Enter the development shell:

nix develop

Build and run:

go build ./...
./todos

License

Apache 2.0