dev-prune 1.13.0 → 1.15.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 +9 -5
  2. package/package.json +8 -8
package/README.md CHANGED
@@ -244,8 +244,10 @@ on this machine. Follow these steps exactly and do not improvise beyond them.
244
244
 
245
245
  3. Ask me which project directories to keep clean, then register each one:
246
246
  devp init <path>
247
- Do not register directories I did not name. `devp init` only records a directory; it
248
- never deletes anything on its own.
247
+ If I do not have a list, run `devp init --auto --dry-run`, read me what it found, and
248
+ register it with `devp init --auto` once I say yes. Do not register directories I did
249
+ not name or approve. `devp init` only records a directory; it never deletes anything
250
+ on its own.
249
251
 
250
252
  4. Show me the result and stop:
251
253
  devp status
@@ -307,6 +309,7 @@ arrived intact, which a substituted pair also does.
307
309
 
308
310
  ```bash
309
311
  devp init ~/Projects # register every Git repository under a tree
312
+ devp init --auto # …or let it work out where your code lives, and register that
310
313
  devp status # dashboard: what is tracked, what is reclaimable
311
314
  devp run --dry-run # what a pass would delete — changes nothing
312
315
  devp run # do it, after confirming
@@ -569,7 +572,7 @@ process that leaves a dirty working tree is a surprise.
569
572
  | 📊 **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 and Hex — and prints the command that clears each. The report is read-only; `devp caches clear <manager>` runs that command for you, after asking. `devp config set cache_max_gb uv=10,npm=10` says how big is too big, per manager, 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 |
570
573
  | 🩺 **`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 |
571
574
  | 🤖 **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 |
572
- | ⚡ **0ms opt-out** | An `ignore.devprune.json` in a repository root is honoured by file presence alone — no read, no parse |
575
+ | ⚡ **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 |
573
576
  | 🔌 **`--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 |
574
577
  | 🧠 **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 |
575
578
  | 🧰 **Editor extension** | Validates `.devprune.json` as you type and shows the workspace's reclaimable size in the status bar. `devp setup` offers to install it — once, only at a terminal — into VS Code, VSCodium, Cursor, Windsurf, Positron or Kiro, each from its own registry, falling back to the `.vsix` from the extension's own release. [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md) |
@@ -583,7 +586,7 @@ process that leaves a dirty working tree is a surprise.
583
586
 
584
587
  | Command | Also | What it does |
585
588
  | :--------------------- | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
586
- | `devp init [PATHS]` | `scan`, `onboard` | Crawls directory trees for Git repositories and registers them, then runs the `setup` integration pass |
589
+ | `devp init [PATHS]` | `scan`, `onboard`, `--auto` | Crawls directory trees for Git repositories and registers them, then runs the `setup` integration pass. `--auto` works the roots out instead of being told them — the parent of every repository already registered, the workspace you are standing in, and the conventional code directories under your home — and ignores `PATHS`. A bulk scan never registers a repository holding an `ignore.devprune.json` |
587
590
  | `devp link [PATH]` | :------------------------------------------------------------------ | Registers one repository |
588
591
  | `devp unlink [PATH]` | `--missing` | Unregisters one; `--missing` drops every entry whose directory is gone, in one pass |
589
592
  | `devp undo` | :------------------------------------------------------------------ | Reverts the most recent `init` or `link` |
@@ -767,7 +770,7 @@ not universally wanted, and leaves `allow_manifest_rewrite` — the one recommen
767
770
  that edits files Git tracks — named, explained and off unless you add
768
771
  `--with-cautious`. `devp config show` lists whatever you have not taken yet.
769
772
 
770
- Thirty settings, in the seven groups the configurator asks them in — the order the
773
+ Thirty-one settings, in the seven groups the configurator asks them in — the order the
771
774
  decisions actually arrive in. Every key, with its full description and range, is in the
772
775
  [CLI reference](docs/CLI_REFERENCE.md#8-devp-config-action).
773
776
 
@@ -815,6 +818,7 @@ act on its own.
815
818
  | :--- | :---: | :--- |
816
819
  | `auto_setup` · `auto_daemon` · `auto_hooks` | `true` | Whether the integration pass may run unattended, and what it may install |
817
820
  | `auto_config` | `false` | Whether `devp init` / `devp link` write a `.devprune.json` into newly registered repositories |
821
+ | `auto_discover` | `true` | Whether the scheduled background pass finds unregistered repositories itself, from the same roots as `devp init --auto`. A manual `devp run` never does. Registering is not pruning — an idle window and a lockfile still stand in the way — and a repository holding an `ignore.devprune.json` is never registered |
818
822
  | `auto_hooks_chain` | `false` | Whether it may take a `core.hooksPath` another tool holds — off, it is not yours |
819
823
  | `check_interval_days` | `2` | How often the OS scheduler runs a pass |
820
824
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-prune",
3
- "version": "1.13.0",
3
+ "version": "1.15.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.13.0",
16
- "dev-prune-darwin-x64": "1.13.0",
17
- "dev-prune-linux-arm64": "1.13.0",
18
- "dev-prune-linux-x64": "1.13.0",
19
- "dev-prune-windows-arm64": "1.13.0",
20
- "dev-prune-windows-x64": "1.13.0",
21
- "dev-prune-windows-x86": "1.13.0"
15
+ "dev-prune-darwin-arm64": "1.15.0",
16
+ "dev-prune-darwin-x64": "1.15.0",
17
+ "dev-prune-linux-arm64": "1.15.0",
18
+ "dev-prune-linux-x64": "1.15.0",
19
+ "dev-prune-windows-arm64": "1.15.0",
20
+ "dev-prune-windows-x64": "1.15.0",
21
+ "dev-prune-windows-x86": "1.15.0"
22
22
  },
23
23
  "engines": {
24
24
  "node": ">=20"