# recap

A passive terminal activity tracker that summarizes what you did yesterday.

```
$ recap
── April 06 ──────────────────────────────────────

  14h  recap  ~/repos/recap  (43 sec)
    [edit]  src/main.rs · Cargo.toml
    [run]   cargo ×4 · git ×2

  16h  notgalerie  ~/repos/notgalerie  (12 sec)
    [edit]  index.html
    [run]   npm · git

```

No AI, no cloud, no telemetry. Just SQLite on your machine.

## How it works

recap hooks into your shell and silently records every command — timestamp,
working directory, exit code, and duration. When you run `recap`, it groups
everything by project and hour so you can see what you worked on at a glance,
without changing how you work.

Sensitive commands (passwords, tokens, secrets) are filtered automatically and
never written to disk.

## Install

**Requirements**: Rust (via [rustup](https://rustup.rs))

```bash
cargo install shellcap
recap --install
recap --import
```

Or from source:

```bash
git clone https://github.com/NOT16180/recap
cd recap
cargo install --path .
recap --install
recap --import
```

`--install` adds shell hooks to your config file and detects your shell automatically.  
`--import` bootstraps from your existing shell history so you get data right away.

## Usage

```
recap                        Yesterday's activity (default)
recap --yesterday            Yesterday's activity
recap --today                Today so far
recap --date <YYYY-MM-DD>    Activity for a specific date
recap --timeline             Hour-by-hour timeline for yesterday
recap --timeline --today     Hour-by-hour timeline for today
recap --timeline --date X    Hour-by-hour timeline for a specific date
recap --stats                This week's stats
recap --week <n>             Stats for n weeks ago
recap --streak               Current and longest activity streak
recap --search <query>       Search command history
recap --project <name>       Filter by project name
recap --export [json|csv]    Export all events (default: json)
recap --prune [days]         Delete events older than N days (default: 90)
recap --import               Import from shell history
recap --install              Set up shell integration
recap --uninstall            Remove shell integration
recap --version, -V          Show version
recap --help                 Show help
```

## Configuration

Add custom aliases in `~/.config/recap/aliases.toml`:

```toml
[aliases]
nv = "nvim"
g  = "git"
gp = "git push"
cb = "cargo build"
```

The following aliases are built in by default:

| Alias | Expands to     |
|-------|----------------|
| `g`   | `git`          |
| `ga`  | `git add`      |
| `gc`  | `git commit`   |
| `gp`  | `git push`     |
| `gl`  | `git pull`     |
| `gst` | `git status`   |
| `gd`  | `git diff`     |
| `gco` | `git checkout` |
| `gb`  | `git branch`   |
| `nv`  | `nvim`         |
| `v`   | `vim`          |
| `cb`  | `cargo build`  |
| `cr`  | `cargo run`    |
| `ct`  | `cargo test`   |

## Data

Everything is stored locally:

- `~/.local/share/recap/recap.db` — SQLite database
- `~/.local/share/recap/events.tsv` — live buffer, flushed on each run
- `~/.config/recap/hooks.zsh` — zsh hooks installed by `--install`
- `~/.config/recap/hooks.bash` — bash hooks installed by `--install`
- `~/.config/fish/conf.d/recap.fish` — fish hooks installed by `--install`

No data leaves your machine.

## Shell support

| Shell | Status |
|-------|--------|
| zsh   | Supported |
| bash  | Supported |
| fish  | Supported |

## License

MIT
