dev-prune 1.13.0 → 1.14.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 +9 -5
- 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
|
-
|
|
248
|
-
|
|
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`
|
|
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.
|
|
3
|
+
"version": "1.14.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.
|
|
16
|
-
"dev-prune-darwin-x64": "1.
|
|
17
|
-
"dev-prune-linux-arm64": "1.
|
|
18
|
-
"dev-prune-linux-x64": "1.
|
|
19
|
-
"dev-prune-windows-arm64": "1.
|
|
20
|
-
"dev-prune-windows-x64": "1.
|
|
21
|
-
"dev-prune-windows-x86": "1.
|
|
15
|
+
"dev-prune-darwin-arm64": "1.14.0",
|
|
16
|
+
"dev-prune-darwin-x64": "1.14.0",
|
|
17
|
+
"dev-prune-linux-arm64": "1.14.0",
|
|
18
|
+
"dev-prune-linux-x64": "1.14.0",
|
|
19
|
+
"dev-prune-windows-arm64": "1.14.0",
|
|
20
|
+
"dev-prune-windows-x64": "1.14.0",
|
|
21
|
+
"dev-prune-windows-x86": "1.14.0"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|
|
24
24
|
"node": ">=20"
|