Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
dad0c9b
fix(diff): accept annotation ranges spanning removed and added lines
denolehov Jul 10, 2026
bf07f1d
feat(diff): file tree sidebar + palette fuzzy-jump (#86)
denolehov Jul 10, 2026
7a60c25
feat(diff): per-file collapse with sticky headers + changeset summary…
denolehov Jul 10, 2026
fddef9f
feat(sidebar): make filetree pane resizable via paneforge
denolehov Jul 10, 2026
7a72bf8
fix(sidebar): truncate the changed-files summary label like paths
denolehov Jul 10, 2026
ca85b92
fix(diff): fix file-tree jump-to-file scroll and highlight tracking
denolehov Jul 10, 2026
f3c9180
chore(main): release 0.14.0 (#87)
github-actions[bot] Jul 10, 2026
01619da
refactor(diff): in-process diff engine with gated word-level ranges
denolehov Jul 10, 2026
6235314
feat(mcp): review_diff takes a structured DiffTarget + pathspecs
denolehov Jul 10, 2026
a70834e
refactor(annotations): backend id + anchor entities
denolehov Jul 10, 2026
148c517
feat(diff): working-tree reviews include untracked files; hunks compu…
denolehov Jul 10, 2026
efa370b
feat(output): mixed-side annotation ranges — headers name both sides …
denolehov Jul 10, 2026
f6df8ad
refactor(annotations): Anchor becomes tagged source|diff enum
denolehov Jul 10, 2026
f616584
refactor(annotations): frontend id-keyed store with source-coordinate…
denolehov Jul 10, 2026
0336957
refactor(diff): swap unidiff for diffy, per-file raw-patch model
denolehov Jul 11, 2026
5acdb8c
refactor(display): DisplayRow walk over synthesized per-file documents
denolehov Jul 11, 2026
b66e21c
refactor(display): file tree + palette jump read the walk's DocViews
denolehov Jul 11, 2026
47c2d96
refactor(display): diff render + collapse read the walk
denolehov Jul 11, 2026
d8e7121
refactor(display): selection bounds clamp to walk hunk footprints
denolehov Jul 11, 2026
7e509db
refactor(display): content tracking resolves positions through the walk
denolehov Jul 11, 2026
5085e12
refactor(display): search and scroll targeting read the walk
denolehov Jul 11, 2026
8af6923
refactor(display): anchors and selection guards resolve through the walk
denolehov Jul 11, 2026
30507b2
refactor(display): fileEntries leaves the context — the walk is the o…
denolehov Jul 11, 2026
02e380c
refactor(wire): ContentView + per-file document types, inert
denolehov Jul 11, 2026
de8c616
refactor(wire): backend join — producers expose per-file documents, t…
denolehov Jul 11, 2026
6b0d966
feat(diff): +/- signs move to the gutter — copied diff text is raw so…
denolehov Jul 11, 2026
5e6c42a
refactor: address review comments
denolehov Jul 11, 2026
069c87c
chore(docs): update CLAUDE.md
denolehov Jul 11, 2026
f0c16c4
chore: clippy, fmt, docs
denolehov Jul 11, 2026
1737118
Two fixes for visible artefacts when resizing the window on Windows
nikhilkrishna Jul 3, 2026
1da762f
perf(ui): freeze content while growing to kill large-file resize trail
nikhilkrishna Jul 3, 2026
faf8f47
use <svelte:window onresize> for the resize-freeze handler
nikhilkrishna Jul 3, 2026
eaef7d9
gate webview background_color to Windows only
nikhilkrishna Jul 3, 2026
6cb0843
feat: show toast feedback when copying an @file reference
nikhilkrishna Jul 3, 2026
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,6 @@ src-tauri/gen/schemas

# Excalidraw fonts (copied from node_modules at install time)
static/excalidraw-assets/fonts/

# Local-only working files (specs, scratch)
*.local
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.13.1"
".": "0.14.0"
}
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## [0.14.0](https://github.com/denolehov/annot/compare/v0.13.1...v0.14.0) (2026-07-10)


### Features

* **diff:** file tree sidebar + palette fuzzy-jump ([#86](https://github.com/denolehov/annot/issues/86)) ([bf07f1d](https://github.com/denolehov/annot/commit/bf07f1d1a3fb88694e372cb0d1b086228702e43b))
* **diff:** per-file collapse with sticky headers + changeset summary ([#88](https://github.com/denolehov/annot/issues/88)) ([7a60c25](https://github.com/denolehov/annot/commit/7a60c25bdf48d3ecf42a73ecbde7bff52bc2892d))
* **sidebar:** make filetree pane resizable via paneforge ([fddef9f](https://github.com/denolehov/annot/commit/fddef9f8fe19eb4aeeb64f50712c71257cb3498e))


### Bug Fixes

* **diff:** accept annotation ranges spanning removed and added lines ([dad0c9b](https://github.com/denolehov/annot/commit/dad0c9bd8ba79663da77993a19314e4df31391e5))
* **diff:** fix file-tree jump-to-file scroll and highlight tracking ([ca85b92](https://github.com/denolehov/annot/commit/ca85b922554359dd532ca80659734132212d882d))
* **sidebar:** truncate the changed-files summary label like paths ([7a72bf8](https://github.com/denolehov/annot/commit/7a72bf8e2490bee38bff23772e8d756505a8ae34))

## [0.13.1](https://github.com/denolehov/annot/compare/v0.13.0...v0.13.1) (2026-06-22)


Expand Down
22 changes: 22 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,28 @@ Kill the stray `annot.exe` before rebuilding.
- **Declarative over imperative**: `map`/`collect`/`join` over manual loops
- **Composables pattern**: Svelte 5 runes in `src/lib/composables/`

Before ending a session that changes Rust code, format it and run strict Clippy:

```bash
cargo fmt --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
```

## Commit Messages

release-please lifts every `feat`/`fix` subject line verbatim into
CHANGELOG.md and the GitHub release notes (`refactor`/`chore`/etc. stay
hidden). Write subjects for that audience:

- `feat`/`fix` only for user-visible changes, phrased as what the user gets
("working-tree reviews include untracked files"), not internal milestones
("git substrate on gix — FileSource seam")
- Internal capability, scaffolding, and inert types are `refactor` even when
they add code
- Engineering narrative goes in the body — it's for `git log`, not the notes
- No `BREAKING CHANGE:` footers / `!` until v1.0 is planned deliberately;
note migration steps as plain body text instead

## Agent Output Preferences

- **Use `review_content` for reports/summaries**: Present plans, analysis, or structured output via the MCP tool instead of inline text.
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,12 +209,13 @@ Press `Shift+C` to add comments that apply to the entire review — framing cont

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `git_diff_args` | array | no* | Git diff arguments (e.g., `["--staged"]`) |
| `diff_content` | string | no* | Raw unified diff content |
| `target` | object | no* | What to diff: `{"kind": "working_tree"}` (default), `{"kind": "staged"}`, or `{"kind": "range", "from": "main", "to": "HEAD", "merge_base": true}` |
| `pathspecs` | array | no | Git pathspecs limiting the diff (e.g., `["src/", "*.rs"]`) |
| `diff_content` | string | no* | Raw unified diff content (mutually exclusive with `target`/`pathspecs`) |
| `label` | string | no | Display name (default: "diff") |
| `exit_modes` | array | no | Ephemeral exit modes for this session |

*Either `git_diff_args` or `diff_content` must be provided.
*`target` defaults to `working_tree` — worktree vs HEAD, staged + unstaged combined, untracked files included. `range` with `merge_base: true` diffs from `merge_base(from, to)` to `to`, like `from...to`.

### `review_content`

Expand Down
12 changes: 10 additions & 2 deletions docs/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ Open any source file for annotation. Syntax highlighting adapts to language. Nav
### Diff Review
Review git changes (`--staged`, `main...HEAD`) or raw unified diffs. Color-coded: additions green, deletions red. Annotations capture both old and new line numbers.

**File tree** — `Cmd+B` toggles a sidebar listing every changed file with its +/− counts. Clicking a file scrolls to it (expanding it if collapsed); the row for the file currently in view stays highlighted. The `:` palette's **Files** namespace does the same jump by fuzzy search.

**Per-file collapse** — every file gets a header bar (chevron, path, +/− counts) that sticks to the top while its lines scroll. Clicking the bar collapses the file to just its header; the titlebar shows the changeset's +A −D totals with a fold-all/unfold-all toggle. Files with more than 500 changed lines start collapsed. Search hits and file jumps auto-expand collapsed files. Collapse is pure presentation — annotations keep resolving to the same lines.

### Content Review
Review agent-generated content — plans, drafts, analysis. Markdown rendering with Mermaid diagrams and portal links that embed live code.

Expand Down Expand Up @@ -125,7 +129,7 @@ Press `Shift+C` to add a high-level comment that applies to the entire review (n

## Command Palette (`:`)

Press `:` (colon) to open. Seven namespaces:
Press `:` (colon) to open. Eight namespaces:

### Tags
- Browse, create, edit, delete tags
Expand All @@ -138,6 +142,9 @@ Press `:` (colon) to open. Seven namespaces:
- Press `s` to set as active
- Press `r` to reorder (drag with arrow keys)

### Files
- Fuzzy-jump to a changed file (diff review only)

### Copy
- Copy content only
- Copy annotations only
Expand Down Expand Up @@ -169,6 +176,7 @@ Press `:` (colon) to open. Seven namespaces:
| `:` | Command palette |
| `Alt+Tab` | Command palette → Exit modes |
| Ctrl+F | Search |
| `Cmd+B` | Toggle file tree (diffs) |
| `e` | Edit item (in command palette) |
| `r` | Reorder items (exit modes only) |
| `Cmd+D` | Delete item (in command palette) |
Expand Down Expand Up @@ -216,7 +224,7 @@ Saved to /path/to/file.md
Three tools exposed via Model Context Protocol:

1. **review_file** — Open file at path
2. **review_diff** — Review git or raw diffs
2. **review_diff** — Review git diffs (structured target: working tree / staged / rev range) or raw diff content
3. **review_content** — Review agent-generated content

All block until window closes, returning structured output with annotations, exit mode, and any images.
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "annot",
"version": "0.13.1",
"version": "0.14.0",
"description": "Human-in-the-loop annotation tool for AI workflows",
"type": "module",
"scripts": {
Expand Down Expand Up @@ -45,6 +45,7 @@
"@tiptap/suggestion": "^3.27.1",
"fuse.js": "^7.4.2",
"mermaid": "^11.15.0",
"paneforge": "^1.0.2",
"panzoom": "^9.4.4",
"react": "^19.2.7",
"react-dom": "^19.2.7",
Expand Down
59 changes: 59 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading