diffctx 1.16.0 → 1.17.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.
@@ -234,8 +241,9 @@ map a directory named `mcp` on older releases.
234
241
 
235
242
  Respects `.gitignore` and `.diffctx/ignore` automatically — hierarchically at
236
243
  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`
244
+ anchored `/root_only.txt`), and in tree mode the output file is always
245
+ auto-ignored (`--diff` reports a saved `tree.md` like any other change). Three
246
+ controls are tree mode only and are refused with `--diff` and `graph`: `.diffctx/whitelist`
239
247
  (`-w`) as an include-only filter, `-i` for an extra ignore file, and
240
248
  `--no-default-ignores` / `--no-ignores` to drop the built-in patterns or every
241
249
  ignore rule.
@@ -259,8 +267,8 @@ its size (default 512 MB, `0` disables eviction).
259
267
  |------|---------|
260
268
  | `0` | Success — output contains content |
261
269
  | `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) |
270
+ | `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`) |
271
+ | `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
272
  | `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
273
  | `124`| `--diff` ran 30 s past the `--timeout` deadline without stopping cooperatively (the deadline itself yields a partial artifact and exit 0) |
266
274
  | `130`| Interrupted (Ctrl-C) |
@@ -276,7 +284,7 @@ Apache 2.0
276
284
 
277
285
  ---
278
286
 
279
- - [Documentation site](https://nikolay-e.github.io/diffctx/) — the pipeline
287
+ - [Documentation site](https://diffctx.com/) — the pipeline
280
288
  end to end: diff → fragments → graph → relevance → selection
281
289
  - [Command-line reference](docs/product/cli.md) — every flag with its default
282
290
  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.17.0-aarch64-apple-darwin.tar.gz": "5e69dcea8229c8622bca301c40dcd21edbd1867f2be0b8f65bb321c37864aea3",
3
+ "diffctx-1.17.0-aarch64-pc-windows-msvc.zip": "499d32a204a7e11e50009a9b244ca74eece0ca859c45257bb2060f5de797f4cd",
4
+ "diffctx-1.17.0-aarch64-unknown-linux-gnu.tar.gz": "dfb3408e07dc89175327a742f856f6b915a7aefcd73dbe12779138fe10e53086",
5
+ "diffctx-1.17.0-x86_64-apple-darwin.tar.gz": "6188aca98dae1bef57b1bdcb3602deb61c9b036a4e103c5681b058037e425663",
6
+ "diffctx-1.17.0-x86_64-pc-windows-msvc.zip": "c774f09790f64b6a104029dcf41b49b37cecea3176c52231417f0ecb58f6c84b",
7
+ "diffctx-1.17.0-x86_64-unknown-linux-gnu.tar.gz": "3106217351d1a7e00fbd1c29593814cf633be45931cb9a4a5eb9edb18910d74c"
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.17.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",