diffctx 1.16.0 → 1.18.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 CHANGED
@@ -45,8 +45,15 @@ scoop bucket add diffctx https://github.com/nikolay-e/diffctx
45
45
  scoop install diffctx/diffctx
46
46
  ```
47
47
 
48
- Prebuilt binaries for linux (x86_64/aarch64), macOS (arm64) and Windows (x64)
49
- are attached to every [release](https://github.com/nikolay-e/diffctx/releases/latest).
48
+ Every [release](https://github.com/nikolay-e/diffctx/releases/latest) carries
49
+ prebuilt binaries; the current target set is Linux (x86_64/aarch64), macOS
50
+ (arm64/x86_64) and Windows (x64/arm64), and a release older than a target's
51
+ first build lacks it (v1.16.0 predates the macOS x86_64 and Windows arm64
52
+ archives). On Windows on ARM, `diffctx[mcp]` builds `cryptography` from source,
53
+ which needs OpenSSL: that project publishes no wheel for the platform.
54
+ Free-threaded CPython (`3.14t`) cannot load the `abi3` wheel, so each release
55
+ after 1.16.0 also ships a `cp314t` wheel per platform (the extension runs with
56
+ the GIL off); on 1.16.0 itself `pip` and `uv` fall back to compiling the sdist.
50
57
  The native binary and Docker image cover diff mode with YAML/JSON output and
51
58
  write to stdout (redirect to capture); tree mode, Markdown output, the `graph`
52
59
  subcommand and the MCP server live in the Python package.
@@ -182,7 +189,10 @@ as `io.github.nikolay-e/diffctx`. One-line setup (zero-install via
182
189
  [uv](https://docs.astral.sh/uv/)):
183
190
 
184
191
  ```bash
185
- # Claude Code
192
+ # Claude Code plugin: the server plus /diffctx:diffctx and /diffctx:impact
193
+ claude plugin marketplace add nikolay-e/diffctx
194
+ claude plugin install diffctx@diffctx
195
+ # Claude Code, server only
186
196
  claude mcp add diffctx -- uvx --from 'diffctx[mcp]' diffctx-mcp
187
197
  # Codex CLI
188
198
  codex mcp add diffctx -- uvx --from 'diffctx[mcp]' diffctx-mcp
@@ -234,8 +244,9 @@ map a directory named `mcp` on older releases.
234
244
 
235
245
  Respects `.gitignore` and `.diffctx/ignore` automatically — hierarchically at
236
246
  every directory level, with full gitignore semantics (negation `!important.log`,
237
- anchored `/root_only.txt`), and the output file is always auto-ignored. Three
238
- controls are tree mode only and are refused with `--diff`: `.diffctx/whitelist`
247
+ anchored `/root_only.txt`), and in tree mode the output file is always
248
+ auto-ignored (`--diff` reports a saved `tree.md` like any other change). Three
249
+ controls are tree mode only and are refused with `--diff` and `graph`: `.diffctx/whitelist`
239
250
  (`-w`) as an include-only filter, `-i` for an extra ignore file, and
240
251
  `--no-default-ignores` / `--no-ignores` to drop the built-in patterns or every
241
252
  ignore rule.
@@ -259,8 +270,8 @@ its size (default 512 MB, `0` disables eviction).
259
270
  |------|---------|
260
271
  | `0` | Success — output contains content |
261
272
  | `1` | Runtime error (bad path, permission denied, etc.) |
262
- | `2` | Usage error (invalid flags/arguments) |
263
- | `3` | Environment error (`--diff` outside a git repo, git not installed, no commits yet) |
273
+ | `2` | Usage error (invalid flags/arguments, an empty `--diff ""`, a malformed duration such as `1.5h`, an out-of-range `--alpha`/`--tau`/`--budget`/`--timeout`, or a tree-mode flag — `-i`/`-w`/`--no-default-ignores`/`--no-ignores` — given with `--diff` or `graph`) |
274
+ | `3` | Environment error (`--diff` outside a git repo, in a bare one, or on a missing path, git not installed or refusing to start — its `fatal:` line is printed, no commits yet, a revision missing from a shallow clone) |
264
275
  | `4` | `--diff` produced no semantic context (clean tree, binary-only, everything filtered); output is still emitted. Deletion/rename/lockfile-only diffs list `deleted_files`/`renamed_files`/`lockfile_changes` and exit `0` |
265
276
  | `124`| `--diff` ran 30 s past the `--timeout` deadline without stopping cooperatively (the deadline itself yields a partial artifact and exit 0) |
266
277
  | `130`| Interrupted (Ctrl-C) |
@@ -276,7 +287,7 @@ Apache 2.0
276
287
 
277
288
  ---
278
289
 
279
- - [Documentation site](https://nikolay-e.github.io/diffctx/) — the pipeline
290
+ - [Documentation site](https://diffctx.com/) — the pipeline
280
291
  end to end: diff → fragments → graph → relevance → selection
281
292
  - [Command-line reference](docs/product/cli.md) — every flag with its default
282
293
  and meaning, rendered from `diffctx --help`
package/checksums.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
- "diffctx-1.16.0-aarch64-apple-darwin.tar.gz": "1ef7e2a1609a446f5dce62cd5060878c4d4a1c9032b8971e0fbe73b7089d5951",
3
- "diffctx-1.16.0-aarch64-unknown-linux-gnu.tar.gz": "726b07c7925da947912da755f0348879a2510af193eb824ad516283db0a0bff2",
4
- "diffctx-1.16.0-x86_64-pc-windows-msvc.zip": "f690a79444040efff1328380ff14b509bf39dacd1e6502fe2a5684bbcc5a0dfa",
5
- "diffctx-1.16.0-x86_64-unknown-linux-gnu.tar.gz": "5af02c55d8ce57b868c4006ff6b055d1672530bc7911f08cb754d8b24a44bd6a"
2
+ "diffctx-1.18.0-aarch64-apple-darwin.tar.gz": "855f262b2b3dc71cb4f032c29ef84b2b5307e54549ffcafdf96aa676e257bf23",
3
+ "diffctx-1.18.0-aarch64-pc-windows-msvc.zip": "7ae32b02a5420550baf8fe2a96a7ab155880a80e62a1032a3c47e4e690438fa1",
4
+ "diffctx-1.18.0-aarch64-unknown-linux-gnu.tar.gz": "55b75c6e465f2534f5eb79fc3b61cc99c2d9b99aa60a165467c4e78472cdf7e7",
5
+ "diffctx-1.18.0-x86_64-apple-darwin.tar.gz": "24567ff9a489db0f8caf76545417eba106f82d9a92c450b3142de2766f4157e3",
6
+ "diffctx-1.18.0-x86_64-pc-windows-msvc.zip": "59985daee46bf18ae37cbb11636d625e9d090dd2c9787bdb7f0588e354a6d617",
7
+ "diffctx-1.18.0-x86_64-unknown-linux-gnu.tar.gz": "40cd61281cab5955ed545d1d297319a4ff3ebd9cc39655d9002c3273a374f497"
6
8
  }
package/install.js CHANGED
@@ -15,7 +15,9 @@ const TARGETS = {
15
15
  'linux-x64': { target: 'x86_64-unknown-linux-gnu', archive: 'tar.gz' },
16
16
  'linux-arm64': { target: 'aarch64-unknown-linux-gnu', archive: 'tar.gz' },
17
17
  'darwin-arm64': { target: 'aarch64-apple-darwin', archive: 'tar.gz' },
18
+ 'darwin-x64': { target: 'x86_64-apple-darwin', archive: 'tar.gz' },
18
19
  'win32-x64': { target: 'x86_64-pc-windows-msvc', archive: 'zip' },
20
+ 'win32-arm64': { target: 'aarch64-pc-windows-msvc', archive: 'zip' },
19
21
  };
20
22
 
21
23
  function selectTarget() {
@@ -24,8 +26,7 @@ function selectTarget() {
24
26
  if (!selected) {
25
27
  throw new Error(
26
28
  `diffctx has no prebuilt binary for ${key}. ` +
27
- 'On an Intel Mac, pip has no wheel for it either: run under Rosetta with an arm64 Node, ' +
28
- 'or build from source with "pip install diffctx --no-binary diffctx" (needs Rust) ' +
29
+ 'Build from source with "pip install diffctx --no-binary diffctx" (needs Rust) ' +
29
30
  'or "cargo install diffctx".'
30
31
  );
31
32
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "diffctx",
3
3
  "mcpName": "io.github.nikolay-e/diffctx",
4
- "version": "1.16.0",
4
+ "version": "1.18.0",
5
5
  "description": "Selects the minimum code an LLM needs to review a git diff",
6
6
  "keywords": [
7
7
  "git",
@@ -17,7 +17,7 @@
17
17
  "llm-context",
18
18
  "codebase"
19
19
  ],
20
- "homepage": "https://github.com/nikolay-e/diffctx",
20
+ "homepage": "https://diffctx.com/",
21
21
  "bugs": "https://github.com/nikolay-e/diffctx/issues",
22
22
  "repository": {
23
23
  "type": "git",