summaryrefslogtreecommitdiff
path: root/README.md
blob: bc8c7d615c2a7a6040cd5b0f8626b7529223e808 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Task Samurai

![tasksamurai logo](logo.png)

Task Samurai is a fast terminal interface for [Taskwarrior](https://taskwarrior.org/) written in Go using the [Bubble Tea](https://github.com/charmbracelet/bubbletea) framework. It shows your tasks in a table and lets you manage them without leaving your keyboard.

## Why does this exist?

- I wanted to tinker with agentic coding. This project was entirely implemented using OpenAI Codex.
- I wanted a faster UI for Taskwarrior than other options like vit which is Python based.
- I wanted something built with Bubble Tea but never had time to deep dive into it.

## How it works

Task Samurai invokes the `task` command to read and modify tasks. The tasks are displayed in a Bubble Tea table where each row represents a task. Hotkeys trigger Taskwarrior commands such as starting, completing or annotating tasks. The UI refreshes automatically after each action so the table is always up to date.

## Hotkeys

### Navigation

- `↑/k` and `↓/j`: move up and down
- `←/h` and `→/l`: move left and right
- `b/pgup`: page up
- `pgdn/space`: page down
- `u` or `ctrl+u`: half page up
- `ctrl+d`: half page down
- `g/home/0`: go to start
- `G/end`: go to end
- `enter` or `i`: expand/collapse or edit the current cell depending on the column

### Task actions

- `e` or `E`: edit task
- `s`: toggle start/stop
- `d`: mark task done
- `U`: undo last done
- `D`: set due date
- `+`: add task
- `r`: random due date
- `R`: edit recurrence
- `a`: annotate task
- `A`: replace annotations
- `p`: set priority
- `t`: edit tags

### Search

- `/` or `?`: start search
- `n` and `N`: next/previous search match

### Misc

- `f`: change filter
- `c`: random theme
- `C`: reset theme
- `H`: toggle help
- `q` or `esc`: close search/help or quit (press `q` when nothing is open)

Example: press `+`, type `Buy milk` and hit Enter to add a new task called "Buy milk".