diffing 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +33 -9
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -29,14 +29,19 @@ diffing
29
29
  ```
30
30
  This instantly spins up a local server, establishes an active repository watcher, and opens your default browser to an interactive code review dashboard.
31
31
 
32
- Prefer the terminal? Add `--tui` for a native-Rust terminal UI — same review flow, no browser:
32
+ Prefer the terminal? After building or separately installing the native binary
33
+ as described below, add `--tui` for the same review flow without a browser:
34
+
33
35
  ```bash
34
36
  diffing --tui
35
37
  ```
38
+
36
39
  > [!WARNING]
37
40
  > The TUI is **experimental**. The interface, keymap, and `server.json`
38
41
  > (`mode: "tui"`) on-disk format may change in a minor release. The web UI is
39
- > the supported path for production workflows. See
42
+ > the supported path for production workflows. The v0.10.0 npm package does
43
+ > **not** bundle a platform-specific `diffing-tui` executable; `--tui`
44
+ > requires a source build or a separately installed binary on `PATH`. See
40
45
  > [Native Terminal UI (TUI)](#native-terminal-ui-tui) for the full feature set,
41
46
  > keymap, and stability notes.
42
47
 
@@ -175,8 +180,18 @@ A vim-style status bar at the bottom displays the current mode (NORMAL/INSERT),
175
180
  > please open an issue before depending on the TUI for CI / agent automation.
176
181
  > The web review flow, plan review, and PR review are unaffected.
177
182
 
183
+ > [!IMPORTANT]
184
+ > **Distribution status in v0.10.0:** the npm package contains the Node CLI and
185
+ > web UI, but not a platform-specific `diffing-tui` executable. Build the
186
+ > binary from a source checkout or install it separately on `PATH`. diffing
187
+ > does not compile Rust during npm installation. If no compatible binary is
188
+ > found, `diffing --tui` prints a fallback notice and runs the normal terminal
189
+ > diff instead.
190
+
178
191
  `diffing --tui` opens an **opt-in native-Rust terminal interface** that mirrors the local code-review workflow — no browser or Electron. The renderer and headless tools share one sparse diff index. A random-port loopback API is published through `server.json` with `mode: "tui"` and a per-session capability, so local agents can inspect a large diff without receiving the whole patch.
179
192
 
193
+ Its diff-first **Gridline** design system uses a one-row command header, border-light file navigation, a dedicated review gutter, high-contrast semantic tokens, and keyboard-visible focus rails. Empty review drawers collapse automatically. Wide terminals can show files, diff, and review together; medium layouts place an active review below the diff; compact layouts show one focused workspace at a time. Press `,` for persisted Settings, including **Single file** versus virtualized **Continuous files**, split/unified layout, wrap, tab size, line numbers, review drawer, optional language intelligence, and theme.
194
+
180
195
  The default `diffing` behaviour is **byte-identical** with and without `--tui` — the TUI is strictly opt-in. If the env cannot support a TUI (piped stdin, CI, no raw mode) or the binary is missing, you get a one-line stderr note and the normal `git diff` output. The web mode is also unaffected by the TUI build; the same `diffing` install serves either.
181
196
 
182
197
  ```bash
@@ -192,12 +207,13 @@ diffing --tui -- -- src/ # Limit a TUI review to a directory
192
207
  **Features**
193
208
 
194
209
  - **Disk-backed streaming index** — Git output is parsed as bytes into sparse file/hunk/checkpoint metadata. The first partial generation is usable during ingestion; neither the TUI nor an agent needs to retain the full patch in memory.
195
- - **Viewport-only rendering** — only visible rows are sought, decoded, syntax-highlighted, and converted to terminal cells. Unified and split layouts, horizontal scrolling, wrapping, binary markers, untracked files, and live working-tree refresh are supported.
196
- - **Vim-style file tree & keymap** — numeric counts plus `j/k`, `gg/G`, `Ctrl-d/u`, `J/K`, `]h/[h`, `]c/[c`, `zz`, `h/l`, `/`, `n/N`, `:`, `Tab`, `v`, `w`, `m`, `t`, and `?`. `Esc` cancels a mode; `q` or `Ctrl-C` quits.
197
- - **Full comment CRUD** — mirrors `src/lib/comments.ts` byte-for-byte; the comment tracker at the bottom lists open / replied / resolved threads with click-to-jump navigation.
210
+ - **Viewport-only rendering** — only visible rows are sought, decoded, theme-aware syntax-highlighted, and converted to terminal cells. Highlighting is available in both unified and split layouts, with token contrast corrected against semantic addition/deletion backgrounds. Single/continuous file display, horizontal scrolling, wrapping, binary markers, untracked files, and live working-tree refresh are supported.
211
+ - **Optional local language intelligence** — Auto mode lazily discovers an existing `rust-analyzer`, `typescript-language-server`, `pyright-langserver`, `gopls`, or `clangd` on `PATH`; diffing never downloads a server or sends source off-machine. Diagnostics use lettered `E/W/I/H` gutter marks and appear in the status line, `gh` opens hover, `gd` follows definitions that are visible in the current diff, and `Alt-h/l` moves the symbol column. Turn the feature off from Settings.
212
+ - **Vim-style file tree & keymap** — numeric counts plus `j/k`, `gg/G`, `Ctrl-d/u`, `J/K`, `]h/[h`, `]c/[c`, `zz`, `h/l`, `gh`, `gd`, `/`, `n/N`, `f`, `a`, `:`, `Tab`, `v`, `w`, `m`, `t`, `,`, and `?`. `Esc` cancels a mode; `q` or `Ctrl-C` quits. Single/continuous file display and language intelligence are changed from Settings.
213
+ - **Review-complete comments** — line, same-side range, and file-level threads share the web JSON schema, including severity. The drawer filters open/replied/resolved and blocking/question/nit/praise threads; the diff gutter distinguishes their states without relying on color alone.
198
214
  - **Multi-line `tui-textarea` form** with markdown rendering in the preview pane.
199
215
  - **Live updates** via `notify` watcher on `comments.json` and the repo working tree — write a comment in another window and it appears immediately.
200
- - **Send review & agent handoff** — verdict radios + general-comment popover with a live XML preview. `Ctrl-S` persists the review, copies it to the clipboard when available, and immediately wakes every `diffing await-review` waiter. The status bar reports real waiter state.
216
+ - **Send review & agent handoff** — compact verdict + general-comment popover with an unviewed-files guard. `Ctrl-S` persists the review, copies its XML payload to the clipboard when available, and immediately wakes every `diffing await-review` waiter. Waiting-agent state appears only while a waiter is active.
201
217
  - **Headless, token-bounded inspection** — `diffing inspect summary|files|hunks|slice|search` and the equivalent MCP tools page the same index with strict row/byte limits, generation checks, and compact JSON. Every request is loopback-only and requires the session capability.
202
218
  - **Cross-platform** — macOS, Linux, and Windows are all first-class. The TUI liveness probe uses `kill(pid, 0)` on Unix and `tasklist /NH /FO CSV` on Windows. Clipboard works on Wayland (`wl-copy`), X11 (`xclip` / `xsel`), macOS (`pbcopy`), and Windows (`clip.exe` / PowerShell `Set-Clipboard`).
203
219
 
@@ -215,11 +231,19 @@ diffing inspect search "unsafe" --limit 25
215
231
  **Building the binary locally**
216
232
 
217
233
  ```bash
218
- pnpm build:tui # debug build → target/debug/diffing-tui
219
- pnpm build:tui --release # release build → target/release/diffing-tui
234
+ pnpm build:tui:debug # debug build → target/debug/diffing-tui
235
+ pnpm build:tui # release build → target/release/diffing-tui
220
236
  ```
221
237
 
222
- The CLI auto-discovers the binary in the following search order: sibling of `dist/cli.mjs`, `bin/`, `target/release/`, `target/debug/`, then `$PATH`. A `cargo build` (debug) workflow is supported out of the box; you don't need `--release` just to use the TUI.
238
+ The CLI auto-discovers the binary in the following search order: sibling of
239
+ `dist/cli.mjs`, `bin/`, `target/release/`, `target/debug/`, then `$PATH`. A
240
+ `cargo build -p diffing-tui` debug workflow is supported out of the box; you
241
+ do not need a release build just to use the TUI locally. The sibling and
242
+ `bin/` locations are reserved for future packaged-binary distribution; they
243
+ are not populated by the v0.10.0 npm package. A CLI run from this source
244
+ checkout discovers the binary under `target/`; to use the globally installed
245
+ npm CLI from arbitrary repositories, copy or symlink the resulting executable
246
+ into a directory on `PATH`.
223
247
 
224
248
  ---
225
249
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diffing",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "local-first CLI for reviewing, navigating, and discussing git diffs with AI",
5
5
  "type": "module",
6
6
  "license": "MIT",