dev-prune 1.10.0

Universal, lockfile-safe workspace pruner and background dependency cleaner
Documentation
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://devprune.vkrishna04.me/schemas/v1/devprune.schema.json",
  "title": "dev-prune Project Configuration Schema",
  "description": "Per-repository configuration schema for dev-prune workspace cleaner.",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "description": "JSON Schema reference URL for IDE autocomplete and validation."
    },
    "project_name": {
      "type": ["string", "null"],
      "description": "Custom display name for this project in TUI tables and CLI status views."
    },
    "ignore": {
      "type": "boolean",
      "default": false,
      "description": "Set to true to ignore/exclude this repository from all dev-prune cleanup passes."
    },
    "disable_hooks": {
      "type": "boolean",
      "default": false,
      "description": "Set to true to stop the global Git hook from auto-registering this workspace. Does not affect `devp link` run by hand."
    },
    "disable_daemon": {
      "type": "boolean",
      "default": false,
      "description": "Set to true to exclude this workspace from the scheduled background prune pass. Manual `devp run` still prunes it."
    },
    "override_idle_days": {
      "type": ["integer", "null"],
      "minimum": 0,
      "description": "Custom inactivity threshold in days for this specific repository. Overrides global settings. 0 treats the repository as idle as soon as its last activity is in the past."
    },
    "min_size_mb": {
      "type": ["integer", "null"],
      "minimum": 0,
      "description": "Smallest bloat directory worth deleting in this repository, in MiB. Overrides the global `min_size_mb` setting; 0 turns the floor off here even when a global floor is set."
    },
    "scan_depth": {
      "type": ["integer", "null"],
      "minimum": 1,
      "maximum": 32,
      "description": "How many directory levels below this repository root discovery descends. Overrides the global `scan_depth` (6 by default). Raise it when a nested project is not listed by `devp status`; every extra level makes the walk more expensive. Accepts 1-32; a hand-edited value outside that range is clamped to it."
    },
    "prunable": {
      "type": "object",
      "description": "What this project declares prunable beyond what an adapter can recognise. A section rather than a top-level key, so the things a repository may want to say about deletion can grow a heading at a time.",
      "properties": {
        "directories": {
          "type": "array",
          "description": "Directories no lockfile describes, each with the command that puts it back. Every entry is checked before anything is deleted: it must stay inside the repository, hold no Git-tracked files, and name a rebuild command whose tool is installed on this machine.",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "Repository-relative, forward-slash separated. Never absolute, never containing '..', never '.git'."
              },
              "rebuild": {
                "type": "string",
                "description": "The command that rebuilds the directory. Shown to the user, never run by dev-prune. Required. Use \"echo not needed\" when nothing has to rebuild it."
              },
              "why": {
                "type": "string",
                "description": "Why this is safe to lose, in the project's own words. Printed beside the path."
              }
            },
            "required": ["path", "rebuild"],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}