dev-prune 1.17.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.
Files changed (2) hide show
  1. package/README.md +16 -6
  2. package/package.json +8 -8
package/README.md CHANGED
@@ -28,7 +28,7 @@ gigabytes hostage for a build you are not running.
28
28
 
29
29
  `dev-prune` finds those directories across every Git repository you register, and deletes
30
30
  them — but only after proving the exact command that puts them back would succeed. It
31
- knows twenty-four package managers, not just the obvious four: Composer, Bundler, Mix,
31
+ knows twenty-five package managers, not just the obvious four: Composer, Bundler, Mix,
32
32
  CocoaPods and Terraform are as first-class as npm and pip. It is a single Rust binary,
33
33
  installs its own background schedule, and answers to two names: `dev-prune` and `devp`.
34
34
 
@@ -91,6 +91,11 @@ All three download the prebuilt binary for your platform, verify its published S
91
91
  put it on `PATH`, and run `dev-prune setup`. Pass `--no-auto-setup` / `-NoAutoSetup` to
92
92
  skip that last step.
93
93
 
94
+ A binary you download and run by hand asks first instead: the first attended run opens
95
+ the settings walkthrough before anything is installed, finishing it is the yes, and
96
+ quitting it means nothing is installed — durably, until you say otherwise with
97
+ `devp setup`.
98
+
94
99
  Re-run any of them whenever you like. An install that is already current, complete and on
95
100
  `PATH` is left exactly as it is and exits `0` without downloading; an older one is updated
96
101
  in place; a newer one is not downgraded. `--force` / `-Force` writes it again regardless.
@@ -593,7 +598,7 @@ process that leaves a dirty working tree is a surprise.
593
598
  | 🐳 **Container report** | `devp caches docker` (also `podman`, `nerdctl`, `finch`, Apple's `container`, or `containers` for all of them plus local Kubernetes clusters) breaks a container engine's disk into images, containers, local volumes and build cache, each with what the engine itself calls reclaimable, and prints the prune commands narrowest first with what each takes with it. `devp caches clear docker` then runs the narrow ones for you, after asking, and counts them in `devp stats` — **never a volume**, and never from a scheduler or a hook. `devp caches` carries a one-line summary per engine, outside its own total |
594
599
  | 📊 **Cache report** | `devp caches` sizes every package manager cache and store on the machine — npm to cargo to conda, Maven, Gradle, NuGet, vcpkg, Conan, Composer, CocoaPods, Hex, Bundler, pub, SwiftPM, Terraform, Poetry, PDM and Deno — and prints the command that clears each. It also finds the stores that belong to no package manager at all and are routinely the largest things in the list: the Playwright and Puppeteer browser bundles, the Cypress binary cache, the Electron and electron-builder download caches, and the HuggingFace hub — a whole browser or model per version, and nothing ever removes the old one. The report is read-only; `devp caches clear <manager>` runs that command for you, after asking. `devp config set cache_max_gb default=10` says how big is too big — for every manager at once, or per manager with `default=10,npm=4` — and marks the ones past it — `devp caches clear --over-cap all` then empties exactly those, still only when you type it. Each manager also says how many of your registered repositories use it and what that works out to per repository, and `devp caches clear --unused all` empties the ones nothing uses at all. pnpm is reported once per filesystem, because a store it hardlinks into `node_modules` cannot cross one and projects kept off the system disk get a store of their own. Nothing on a schedule ever touches a cache, and Maven's `~/.m2/repository` is never cleared at all — it holds artifacts `mvn install:install-file` put there that no remote can hand back |
595
600
  | 🩺 **`devp doctor`** | One read-only pass that ends by naming the *single* reason a repository would or would not be pruned. Runs no package manager, repairs nothing, safe to run twice. `devp doctor --fix` then mends what it found — installed-but-broken only |
596
- | 🤖 **Self-installing automation** | OS-native scheduler (Task Scheduler, LaunchAgent, systemd user timer) and non-blocking Git hooks, installed at install time and restored after an upgrade. `auto_setup`, `auto_hooks`, `auto_daemon` or `DEV_PRUNE_NO_AUTO_SETUP=1` turn it off |
601
+ | 🤖 **Self-installing automation** | OS-native scheduler (Task Scheduler, LaunchAgent, systemd user timer) and non-blocking Git hooks, installed once the first run’s walkthrough is accepted (quitting it installs nothing) and restored after an upgrade. `auto_setup`, `auto_hooks`, `auto_daemon` or `DEV_PRUNE_NO_AUTO_SETUP=1` turn it off |
597
602
  | ⚡ **0ms opt-out** | An `ignore.devprune.json` in a repository root is honoured by file presence alone — no read, no parse. It applies at registration as well: a bulk scan (`devp init`, and the scheduled pass's own discovery) will not register a repository that holds it, so a repository can decline before it ever reaches `devp status`. `devp link <path>` still registers one, because naming a single repository is not a bulk scan |
598
603
  | 🔌 **`--json` on every reporting command** | `run`, `status`, `stats`, `trust` and `caches` each emit one versioned document on stdout, diagnostics on stderr. Built for scripts and agents |
599
604
  | 🧠 **AI agent skill** | A token-lean `SKILL.md` embedded in the binary; `devp skill` exports it and prints onboarding prompts for Claude Code, Gemini Antigravity, Cursor, Windsurf, Copilot and OpenClaw, and the repository doubles as a Claude Code plugin marketplace |
@@ -678,11 +683,11 @@ Adapters detect the project, verify the lockfile, and own the bloat directories:
678
683
  A required binary that is missing is a reason to skip, never a reason to delete: if `npm`
679
684
  is not on `PATH`, the `node_modules` it owns is left exactly where it is.
680
685
 
681
- The eight build-tool adapters ship **disabled**, because a build tree is regenerated
686
+ The nine build-tool adapters ship **disabled**, because a build tree is regenerated
682
687
  by recompiling, not downloading — it costs more to get back. `devp config set
683
688
  enable_cargo true` / `enable_gradle true` / `enable_maven true` / `enable_swift true` /
684
689
  `enable_dart true` / `enable_mix_build true` / `enable_vcpkg true` /
685
- `enable_cmake_build true` switches them on, and their candidates wait for
690
+ `enable_cmake_build true` / `enable_dotnet_build true` switches them on, and their candidates wait for
686
691
  `build_idle_days` (45 by default), applied as the *maximum* of it and `idle_days` — the
687
692
  build-tool gate only ever makes pruning later, never earlier.
688
693
 
@@ -792,7 +797,7 @@ once on a first install — so the defaults are something you agreed to rather t
792
797
  inherited — and again after an upgrade adds a setting you have never been shown.
793
798
 
794
799
  If you already know what you want, `devp config recommended` is the one-command version:
795
- it turns on the eight adapters and build trees that are off by default because they are
800
+ it turns on the nine adapters and build trees that are off by default because they are
796
801
  not universally wanted, and leaves `allow_manifest_rewrite` — the one recommendation
797
802
  that edits files Git tracks — named, explained and off unless you add
798
803
  `--with-cautious`. `devp config show` lists whatever you have not taken yet.
@@ -830,7 +835,7 @@ rather than downloading. That is the whole reason each one is a switch.
830
835
 
831
836
  | Key | Default | Meaning |
832
837
  | :--- | :---: | :--- |
833
- | `enable_cargo` … `enable_cmake_build` | `false` | Turn on an opt-in build-tool adapter; `build_idle_days` (`45`) gates all eight |
838
+ | `enable_cargo` … `enable_dotnet_build` | `false` | Turn on an opt-in build-tool adapter; `build_idle_days` (`45`) gates all nine |
834
839
 
835
840
  **Shared download caches** — one key, because the cap only ever marks.
836
841
 
@@ -978,6 +983,11 @@ non-blocking `post-commit`, `post-checkout` and `post-merge` Git hooks that regi
978
983
  repositories as you visit them. Both are reinstated after an upgrade if anything went
979
984
  missing.
980
985
 
986
+ None of it arrives unasked. A machine that has never agreed opens the settings
987
+ walkthrough on its first attended run, before anything is installed: finishing the
988
+ walkthrough is the yes, quitting it is a durable no, and `devp setup` changes the
989
+ answer whenever you like.
990
+
981
991
  ```bash
982
992
  devp setup --status # what is installed, what is not, and why
983
993
  devp config set auto_setup false # stop the unattended pass entirely
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-prune",
3
- "version": "1.17.0",
3
+ "version": "1.18.0",
4
4
  "description": "Universal, lockfile-safe workspace pruner. Reclaims disk space from idle Git repositories by deleting only dependency and build directories a lockfile can rebuild.",
5
5
  "bin": {
6
6
  "dev-prune": "./bin/dev-prune.js",
@@ -12,13 +12,13 @@
12
12
  "LICENSE.md"
13
13
  ],
14
14
  "optionalDependencies": {
15
- "dev-prune-darwin-arm64": "1.17.0",
16
- "dev-prune-darwin-x64": "1.17.0",
17
- "dev-prune-linux-arm64": "1.17.0",
18
- "dev-prune-linux-x64": "1.17.0",
19
- "dev-prune-windows-arm64": "1.17.0",
20
- "dev-prune-windows-x64": "1.17.0",
21
- "dev-prune-windows-x86": "1.17.0"
15
+ "dev-prune-darwin-arm64": "1.18.0",
16
+ "dev-prune-darwin-x64": "1.18.0",
17
+ "dev-prune-linux-arm64": "1.18.0",
18
+ "dev-prune-linux-x64": "1.18.0",
19
+ "dev-prune-windows-arm64": "1.18.0",
20
+ "dev-prune-windows-x64": "1.18.0",
21
+ "dev-prune-windows-x86": "1.18.0"
22
22
  },
23
23
  "engines": {
24
24
  "node": ">=20"