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.
- package/README.md +33 -9
- 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?
|
|
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.
|
|
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.
|
|
196
|
-
- **
|
|
197
|
-
- **
|
|
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
|
|
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
|
|
219
|
-
pnpm build: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
|
|
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
|
|