|
1 | 1 | # TaskWAL (`tw`) |
2 | 2 |
|
3 | | -Local-first task tracker using an append-only JSONL write-ahead log (`~/.taskwal/wal.log` on Unix, `%USERPROFILE%\.taskwal\wal.log` on Windows). |
| 3 | +**TaskWAL** is a **local-first**, Kanban-style task tracker for the terminal. Every change is appended to a **write-ahead log** (JSON lines on disk); the tool **replays** that log to build your **Todo**, **Doing**, and **Done** columns—no server, no account, no cloud sync. |
4 | 4 |
|
5 | 5 |  |
6 | 6 |
|
7 | | -## Build |
| 7 | +The default data file is `wal.log` under `~/.taskwal/` on Unix and `%USERPROFILE%\.taskwal\` on Windows. |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | +## Why TaskWAL? |
| 12 | + |
| 13 | +- **Offline and yours:** Tasks live on your machine. There is no hosted backend or login—just a directory and a log file. |
| 14 | +- **Transparent history:** The WAL is **append-only**. Deletes and edits are **events** in the log, not silent overwrites. Inspect or script against the stream with `tw log`. |
| 15 | +- **Terminal-native:** Small CLI for day-to-day moves, plus an optional full-screen **board** (`tw board`) with `ratatui` for keyboard-driven review. |
| 16 | +- **Daily focus:** The **Done** column defaults to what you finished **today** (local calendar date), so `tw ls` and `tw board` stay oriented around “what I closed this day” unless you widen the view (`--all`, `--date`). |
| 17 | + |
| 18 | +## Use cases |
| 19 | + |
| 20 | +- **Personal inbox + WIP limits:** Capture work in Todo, pull a few items into Doing, close them to Done when finished. |
| 21 | +- **Developer workflow:** Stay in the shell next to git and builds; no context switch to a web app. |
| 22 | +- **Travel or locked-down networks:** Full functionality without connectivity. |
| 23 | +- **Automation and backup:** JSONL lines are easy to grep, pipe, or archive; replay semantics stay predictable. |
| 24 | + |
| 25 | +## Features at a glance |
| 26 | + |
| 27 | +- Stable **ULID** task identifiers (prefix matching when unique) |
| 28 | +- **Tags**, **notes**, rename, column moves, and **append-only** removal |
| 29 | +- **`tw ls`** (columns in the terminal) and **`tw board`** (interactive TUI) with the same view flags |
| 30 | +- **`tw stats`** for aggregate counts and **`tw log`** for raw WAL output |
| 31 | +- Optional **`TASKWAL_DIR`** to relocate the data directory |
| 32 | + |
| 33 | +For every subcommand, flag, and TUI key, see the full guides: **[docs/USAGE.md](docs/USAGE.md)** (English) and **[docs/KULLANIM.md](docs/KULLANIM.md)** (Türkçe). |
| 34 | + |
| 35 | +## Installation |
8 | 36 |
|
9 | 37 | Requires [Rust](https://rustup.rs/) 1.70+. |
10 | 38 |
|
| 39 | +**Build** (binary at `target/release/tw`): |
| 40 | + |
11 | 41 | ```bash |
12 | 42 | cargo build --release |
13 | | -# binary: target/release/tw |
14 | 43 | ``` |
15 | 44 |
|
| 45 | +**Install** into Cargo’s bin directory (e.g. `~/.cargo/bin/tw` on Unix): |
| 46 | + |
| 47 | +```bash |
| 48 | +cargo install --path . --force |
| 49 | +``` |
| 50 | + |
| 51 | +Re-run `cargo install` after pulling updates. If `cargo` is not on your `PATH`, see [docs/USAGE.md](docs/USAGE.md) for shell setup hints. |
| 52 | + |
16 | 53 | ## Cross-platform |
17 | 54 |
|
18 | | -- **macOS / Linux / Windows:** same codebase; `crossterm` + `ratatui` work on common terminals. |
| 55 | +- **macOS / Linux / Windows:** Same codebase; `crossterm` + `ratatui` work on common terminals. |
19 | 56 | - Build on each OS you ship for, or use cross-compilation (e.g. `cargo build --release --target x86_64-pc-windows-gnu` from a configured toolchain). |
20 | 57 |
|
21 | 58 | ## Documentation |
@@ -66,7 +103,7 @@ tw log # raw WAL JSON lines |
66 | 103 |
|
67 | 104 | ## Environment |
68 | 105 |
|
69 | | -- **`TASKWAL_DIR`:** override the data directory (used by tests and for custom locations). WAL file: `$TASKWAL_DIR/wal.log`. |
| 106 | +- **`TASKWAL_DIR`:** Override the data directory (tests and custom locations). WAL file: `$TASKWAL_DIR/wal.log` on Unix; `%TASKWAL_DIR%\wal.log` on Windows. |
70 | 107 |
|
71 | 108 | ## License |
72 | 109 |
|
|
0 commit comments