Repository navigation
Project purge: group rebuildable artifacts by owning project with activity-age and protections #35
Description
Released acceptance - 5 October 2026
Released in 0.1.4 build113, tag v0.1.4-113, exact source 94fe203bd663f9d058e72ad3f9ab2c5af9130483. Implementation PR55, label refinement PR57, protected signed release, public download.
28 typed project markers, owning-root grouping and newest workspace metadata are shipped. No preselection; recent/incomplete/unverifiable Git/keypair/nested/tracked-artifact cases fail closed. Explicit recovery evidence is required, with fresh final Git/metadata revalidation. Native controlled-project review and recovery Cancel were inspected.
Validation: full CI256 Swift tests, optimized build, Python packaging checks and shared candidate pass. Protected exact-tag candidate, signing/notarization, public feed/download bytes and installed Sparkle update are verified separately in the release receipt. Native evidence is retained under .fleet-local/storage-accounting/, with three-width full-shell fixtures explicitly synthetic and live installed/isolated captures explicitly identified. Full VoiceOver, enlarged text, exhaustive OS/hardware coverage and live App Health counts are not claimed.
Required acceptance is complete. Earlier prepared-source and control-pipe limitations below are historical snapshots, superseded by this release evidence where stated.
Problem
DeveloperInsights finds reclaimable artifacts (node_modules, buildOutputs, pythonEnvironments…) as a flat list. It does not group them by owning project, does not compute whole-workspace last-activity, and does not stage a whole-project reclaimable set. OSS reference: Mole mo purge protections + npkill last_mod + kondo project signatures.
Proposal
A Projects view that treats the project as the cleanup unit (PRODUCT.md: "the strongest cleanup unit is the whole abandoned footprint"):
- Group DeveloperInsights findings under their owning project root
- Whole-workspace last-activity: newest mtime anywhere in the checkout (npkill last_mod), not the artifact's own timestamp
- Age buckets + sortable reclaimable size per project
- Pre-select nothing with activity < 7 days or unverifiable state
- Protections (tested module): skip dirs containing deployment keypairs, nested git repos (purge artifacts, never the worktree), git-tracked files inside artifact dirs
- Project-type signature coverage beyond current set (kondo: 20+ types — gradle, maven, pub, zig, unity, unreal, terraform…)
- Everything still routes through review → preflight → Trash; nothing auto-selected
Tasks
- Project root detection + grouping model in DiskCore
- Workspace last-activity computation (bounded walk or scan-tree reuse)
- Protection rules module with fixtures: keypairs, nested repos, git-tracked artifacts
- Projects workspace view: group by root, age, reclaimable size, batch staging
- Expand project-type signatures
- Tests + native screenshot
- DESIGN.md + PROJECT_STATUS.md updates
Prepared source and remaining acceptance — 2 October 2026
Prepared isolated source (uncommitted/unpublished) at base 44dbb36a596d102499ca8aafadc507340c10a270: 28 typed project signatures; workspace activity and protected artifact grouping, explicit recovery-plan acknowledgement, batch staging and fresh final Git/metadata revalidation.
Final combined feature/protection SwiftPM checks passed with no failures. Native SwiftUI/AppKit component fixtures at 880/1200/1440 were independently inspected; scoped P1 visual findings are resolved. Full native acceptance remains partial: the native control pipe failed, whole-shell captures were unusable GPU artifacts, and real-window interaction/VoiceOver/hardware behavior was not verified. Combined tests/native-acceptance checklist items remain open. No real home inventory, provider call, cleanup/Trash, commit, push or release was performed.
DESIGN.md and PROJECT_STATUS.md have prepared owner-local updates; both are ignored and have not been silently force-added. Source implementation checkmarks below mean prepared local code, not shipped or full native acceptance.
Activity
sarthakagrawal927 commentedon Oct 2, 2026
Prepared isolated source (uncommitted/unpublished) at base
44dbb36a596d102499ca8aafadc507340c10a270: 28 typed project signatures; workspace activity and protected artifact grouping, explicit recovery-plan acknowledgement, batch staging and fresh final Git/metadata revalidation.Final combined feature/protection SwiftPM checks passed with no failures. Native SwiftUI/AppKit component fixtures at 880/1200/1440 were independently inspected; scoped P1 visual findings are resolved. Full native acceptance remains partial: the native control pipe failed, whole-shell captures were unusable GPU artifacts, and real-window interaction/VoiceOver/hardware behavior was not verified. Combined tests/native-acceptance checklist items remain open. No real home inventory, provider call, cleanup/Trash, commit, push or release was performed.
DESIGN.md and PROJECT_STATUS.md have prepared owner-local updates; both are ignored and have not been silently force-added. Source implementation checkmarks below mean prepared local code, not shipped or full native acceptance.