Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 42 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,58 @@
# TaskWAL (`tw`)

Local-first task tracker using an append-only JSONL write-ahead log (`~/.taskwal/wal.log` on Unix, `%USERPROFILE%\.taskwal\wal.log` on Windows).
**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.

![TaskWAL board (TUI)](docs/images/board.png)

## Build
The default data file is `wal.log` under `~/.taskwal/` on Unix and `%USERPROFILE%\.taskwal\` on Windows.

![TaskWAL stats (text output)](docs/images/stats.png)

## Why TaskWAL?

- **Offline and yours:** Tasks live on your machine. There is no hosted backend or login—just a directory and a log file.
- **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`.
- **Terminal-native:** Small CLI for day-to-day moves, plus an optional full-screen **board** (`tw board`) with `ratatui` for keyboard-driven review.
- **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`).

## Use cases

- **Personal inbox + WIP limits:** Capture work in Todo, pull a few items into Doing, close them to Done when finished.
- **Developer workflow:** Stay in the shell next to git and builds; no context switch to a web app.
- **Travel or locked-down networks:** Full functionality without connectivity.
- **Automation and backup:** JSONL lines are easy to grep, pipe, or archive; replay semantics stay predictable.

## Features at a glance

- Stable **ULID** task identifiers (prefix matching when unique)
- **Tags**, **notes**, rename, column moves, and **append-only** removal
- **`tw ls`** (columns in the terminal) and **`tw board`** (interactive TUI) with the same view flags
- **`tw stats`** for aggregate counts and **`tw log`** for raw WAL output
- Optional **`TASKWAL_DIR`** to relocate the data directory

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).

## Installation

Requires [Rust](https://rustup.rs/) 1.70+.

**Build** (binary at `target/release/tw`):

```bash
cargo build --release
# binary: target/release/tw
```

**Install** into Cargo’s bin directory (e.g. `~/.cargo/bin/tw` on Unix):

```bash
cargo install --path . --force
```

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.

## Cross-platform

- **macOS / Linux / Windows:** same codebase; `crossterm` + `ratatui` work on common terminals.
- **macOS / Linux / Windows:** Same codebase; `crossterm` + `ratatui` work on common terminals.
- 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).

## Documentation
Expand Down Expand Up @@ -66,7 +103,7 @@ tw log # raw WAL JSON lines

## Environment

- **`TASKWAL_DIR`:** override the data directory (used by tests and for custom locations). WAL file: `$TASKWAL_DIR/wal.log`.
- **`TASKWAL_DIR`:** Override the data directory (tests and custom locations). WAL file: `$TASKWAL_DIR/wal.log` on Unix; `%TASKWAL_DIR%\wal.log` on Windows.

## License

Expand Down
Loading