Skip to content

Releases: tuanle96/devclean

devclean v0.9.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 13:04
2f6b564

devclean v0.9.0

This release gives the DevCleaner menu bar app a read-only Memory tab for the dev tooling holding RAM, and makes launch instant by restoring the last scan from a local cache.

Memory tab (read-only)

  • A fourth tab reports the kernel's own memory-pressure level, an active+wired+compressed usage bar, and the restartable dev tooling currently holding RAM: JVM daemons, JavaScript runtimes, simulators, container VMs, language servers, and local databases.
  • Rows lead with the owning project — derived from each process's working directory — and a chip naming what the runtime actually executes (vite.js, Gradle daemon), so twenty identical node processes stay tellable apart. Hovering a row reveals the PID and full working directory.
  • Footprint is ri_phys_footprint, the figure Activity Monitor shows, pinned to RUSAGE_INFO_V4 so a future SDK bump cannot silently blank the tab on older kernels. File cache is deliberately excluded from "used": counting reclaimable cache is how RAM cleaners invent work.
  • Strictly read-only by design: sampling runs only while the menu is open, and nothing is signaled, killed, or purged. Display stays in Swift; any future termination authority belongs in the Rust CLI with its own revalidation.

Instant launch from cached scans

  • The last successful scan report persists to ~/Library/Application Support/Devclean/last-scan.json and is restored at launch, so reopening the app shows the previous results immediately instead of blocking every tab behind the first scan.
  • A background refresh still runs whenever the cache is older than 30 minutes, and a manual tab choice is no longer overridden when that scan completes.
  • Cleanup safety is unchanged: the CLI revalidates every exact path before deletion, so a stale cached candidate can never be deleted.

Verification

Release gates cover Rust formatting, Clippy with warnings denied, MSRV 1.85, and cross-platform test suites; Swift strict format linting and the menu bar contract test suite, including new coverage for process classification, argv detail derivation, working-directory project naming, and the report-cache round-trip; and a signed, notarized, stapled universal macOS app published with checksums, SBOM, and provenance attestations.

devclean v0.8.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 01:32
ca951d9

devclean v0.8.0

This release adopts Liquid Glass in the DevCleaner menu bar app and lands a fully tested dependency refresh.

Liquid Glass on macOS 26

  • The three floating confirmation cards (cleanup, hold purge, AI recommendations) render as Liquid Glass on macOS 26 and keep their material-and-stroke look on macOS 13–15.
  • Standard controls already pick up the new appearance from the macOS 26 SDK build; banners, chips, and rows deliberately stay material per the floating-layer guidance.

Dependency refresh

  • toml 1.1, rusqlite 0.39, crossterm 0.29, clap_mangen 0.3, uuid 1.23.5, plus actions/attest-build-provenance v4, actions/attest-sbom v4, and actions/setup-node v6 in CI.
  • Cargo-workspace detection now parses manifests as TOML documents (toml::Table), matching the toml 1.x API — a unit test caught the silent behavior change.
  • rusqlite stays below 0.40 on purpose: its libsqlite3-sys needs Rust 1.95 and would break the crate's MSRV of 1.85. Dependabot now documents and skips that upgrade until the MSRV policy moves.

Verification

Release gates cover Rust formatting, Clippy with warnings denied, MSRV 1.85, and cross-platform test suites; Swift strict format linting and the full menu bar contract test suite; and a signed, notarized, stapled universal macOS app published with checksums, SBOM, and provenance attestations.

devclean v0.7.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 00:08
0d83e5b

devclean v0.7.0

This release makes the scanner meet developers where their code actually lives, and names every menu bar row after the project it belongs to.

Smarter scan roots

  • Default-root discovery now checks existing Dev, Developer, Projects, Code, src, workspace/repository, GitHub, Android Studio, and IntelliJ project conventions — without scanning the entire home directory.
  • Scan roots are canonicalized, and nested or duplicate roots collapse before traversal.
  • The exact global-cache allowlist adds Gradle caches/distributions on every platform and Xcode DerivedData on macOS.
  • macOS Settings shows the automatic locations actually present on disk and labels custom-root override semantics.

Project-first menu bar rows

  • Every candidate, review, and hold row now leads with the owning project ("fastsoft-tg"), resolved from scanner-recognized workspace roots before falling back to the parent directory, which skips generic member folders like services/ or backend/.
  • The artifact type moves to the icon tooltip, path suffix, and VoiceOver label; artifact age and hold expiry render as capsule chips beside the path, so titles never crowd or truncate.

Safety

  • CoreSimulator, Android SDK/AVD, JetBrains Local History, Docker Desktop storage, and the Gradle user-home root remain outside the filesystem cleanup allowlist.

Verification

Release gates cover Rust formatting, Clippy with warnings denied, and cross-platform test suites; Swift strict format linting and the full menu bar contract test suite; and a signed, notarized, stapled universal macOS app published with checksums, SBOM, and provenance attestations.

devclean v0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 10:21
c42252f

devclean v0.6.0

This release teaches the CLI to explain disk history — not just measure it — and completes the Apple HIG pass for the DevCleaner menu bar app.

Analysis and workspaces

  • devclean analyze correlates a current read-only scan with aggregate local history to report stale categories, repeated growth, cleanup failures, and workspace concentration in table or JSON form. It never deletes anything.
  • Cargo, npm-workspaces, and Nx detection groups scan candidates under their nearest monorepo root and exposes additive workspace summaries in scan reports.
  • Global-cache discovery falls back to go env GOMODCACHE when GOMODCACHE is not set, accepting only absolute paths.
  • The local SQLite history schema is versioned with transactional migrations; legacy unversioned databases upgrade in place and newer unsupported schemas are rejected instead of misread.

macOS menu bar app

  • Candidate lists are native Lists with keyboard row navigation, project names in row titles ("Rust target · VibeTG"), and content-sized viewports.
  • Cleanup and safety-hold confirmations use horizontal Mac alert button rows with Cancel beside the primary action, drop the extra "Back" step, and move VoiceOver focus into each dialog as it opens.
  • The Clean button states the selected size ("Clean 38.77 GB…"), "Delete All" moves into the Holds summary menu away from the window edge, and the Holds summary shows when the next hold expires.
  • AI recommendations keep a single manual entry point beside Scan, and the monitoring banner sits on a neutral material background that respects the system accent color.
  • The menu bar icon keeps one externaldrive silhouette across every state and pulses while busy on macOS 14+; tapping a background-scan notification activates DevCleaner.
  • Scan-status copy drops scanner jargon, the disk capacity bar explains its remaining "other used" slice and reads as one VoiceOver element, and Settings labels use consistent capitalization.

Verification

Release gates cover Rust formatting, Clippy with warnings denied, and cross-platform test suites; Swift strict format linting and the full menu bar contract test suite; and a signed, notarized, stapled universal macOS app published with checksums, SBOM, and provenance attestations.

devclean v0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 01:43

devclean v0.5.0

This release expands DevCleaner from a safe cleanup CLI into a local developer-disk toolkit while keeping deletion authority narrow and explicit.

New workflows

  • Browse candidates in a read-only devclean tui; it prints an exact cleanup command but never deletes.
  • Install, inspect, or remove a platform-native cleanup timer with devclean schedule; installation requires explicit --yes authority and supports a complete dry run.
  • Track aggregate scan and cleanup trends in a local SQLite database and render them with devclean stats; candidate paths are never persisted.
  • Share repository policy through .devclean.toml, devclean init, validated Git-backed config fetch, and marker-backed custom rules.
  • Use the VS Code status-bar companion for workspace scans, HTML reports, dry-run previews, and separately confirmed cleanup.

Ecosystem and automation

  • Safe Python bytecode, test-environment, and project-local virtual-environment detection.
  • Gradle/Kotlin, CMake, Zig, and custom Go module-cache support.
  • Native filesystem watch mode with thresholds, scan intervals, and best-effort notifications.
  • JSONL automation output for cleanup jobs.

Safety and architecture

  • clean --dry-run and clean --undo make preview and recovery first-class.
  • Custom rules require exact directory names and direct project markers, are rejected on unsafe path components, and are revalidated immediately before deletion.
  • HTML is rendered through autoescaped templates.
  • Rust CLI/measurement commands and Swift candidate, review, hold, settings, and menu-state components are split into focused modules.

Verification

Release gates cover Rust unit, integration, documentation, Clippy, MSRV, package, and live watch checks; Swift formatting, contract tests, app build, and codesign; and TypeScript build, tests, and type checking for the VS Code extension. Published macOS archives additionally require Developer ID signing, notarization, stapling, Gatekeeper acceptance, checksums, SBOM, and provenance attestations.

DevCleaner for VS Code v0.1.0

Choose a tag to compare

@tuanle96 tuanle96 released this 13 Jul 01:57

DevCleaner for VS Code v0.1.0

  • Shows reclaimable workspace bytes in the status bar.
  • Scans the active workspace and opens a path-explicit HTML report.
  • Keeps dry-run preview separate from modal-confirmed cleanup.
  • Invokes the local devclean executable directly without a shell.

Install the attached VSIX with:

code --install-extension devclean-vscode-0.1.0.vsix

The package is built from the source-traceable vscode-v0.1.0 tag.

devclean v0.4.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 12:04
38a4ea4

devclean v0.4.1

This patch completes the first review-to-safe Learning Mode loop while preserving Rust as the only cleanup authority.

Learning Mode

  • Scans at launch and every six hours.
  • Measures active known artifacts independently of cleanup age/category filters.
  • Suggests a scanner-owned rule for .build directories directly beside Package.swift.
  • Lets the user approve or revoke that exact SwiftPM build path from the menu bar.
  • Keeps approved paths visible while they wait for the configured cleanup age and size thresholds.
  • Promotes an eligible approved path to build-output only after Rust revalidates the rule and Git guard.
  • Keeps up to 30 days and 256 local snapshots, detects recreation after cleanup, and learns Always select / Never clean feedback.

Restorable safety holds

  • clean --quarantine-for 7d moves validated artifacts into hidden adjacent holds.
  • quarantine list, restore, and purge manage the private registry.
  • The UI states explicitly that holds retain disk usage until purge and refuses to overwrite a recreated original path.

Diagnostics and privacy

  • Rotating structured local JSONL logs are always available from Settings.
  • The protocol-based monitoring layer ships with NoOp/local/Sentry providers.
  • Sentry is disabled without a configured DSN and explicit user consent.
  • Remote product events contain aggregate buckets and error fingerprints only; paths, usernames, project names, file contents, screenshots, and view hierarchy are excluded.

Verification

Release gates cover Rust unit/integration/doc tests, Swift contract/learning/log tests, Clippy, MSRV, package verification, universal app build, Developer ID signing, Apple notarization, stapling, Gatekeeper acceptance, checksums, SBOM, and provenance attestations.

devclean v0.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 09:32
2ad6a16

devclean v0.4.0

This release turns the native menu bar app into a local learning and observability loop while preserving Rust as the only cleanup authority.

Learning Mode

  • Scans at launch and every six hours.
  • Measures active known artifacts independently of cleanup age/category filters.
  • Surfaces large unknown cache-like directories as review-only observations that cannot be cleaned.
  • Keeps up to 30 days and 256 local snapshots, detects recreation after cleanup, and learns Always select / Never clean feedback.

Restorable safety holds

  • clean --quarantine-for 7d moves validated artifacts into hidden adjacent holds.
  • quarantine list, restore, and purge manage the private registry.
  • The UI states explicitly that holds retain disk usage until purge and refuses to overwrite a recreated original path.

Diagnostics and privacy

  • Rotating structured local JSONL logs are always available from Settings.
  • The protocol-based monitoring layer ships with NoOp/local/Sentry providers.
  • Sentry is disabled without a configured DSN and explicit user consent.
  • Remote product events contain aggregate buckets and error fingerprints only; paths, usernames, project names, file contents, screenshots, and view hierarchy are excluded.

Verification

Release gates cover Rust unit/integration/doc tests, Swift contract/learning/log tests, Clippy, MSRV, package verification, universal app build, Developer ID signing, Apple notarization, stapling, Gatekeeper acceptance, checksums, SBOM, and provenance attestations.

devclean v0.3.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 08:07
c2c9b88

devclean v0.3.1

This patch makes the native macOS menu bar app ready for frictionless public distribution while preserving the v0.3 safety model.

Trusted macOS distribution

  • Signs the universal app and bundled Rust helper with Developer ID Application.
  • Enables hardened runtime and Apple secure timestamps.
  • Requires Apple notarization acceptance and staples the ticket before packaging.
  • Verifies strict code signatures and Gatekeeper acceptance in the release workflow.

Safety

  • Swift remains an unprivileged presentation client; Rust still performs all scan, revalidation, quarantine, and deletion work.
  • Exact-path cleanup still aborts before deletion if any selected candidate is stale.
  • Signing credentials live only in GitHub encrypted secrets and an ephemeral CI keychain.

Installation

The crates.io package remains devclean-cli; it installs the devclean executable. The notarized universal menu bar archive contains Devclean.app and requires macOS 13 or newer.

Download the archive for your platform, verify SHA256SUMS, and run gh attestation verify <archive> -R tuanle96/devclean.

devclean v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 06:26
d500a34

devclean v0.3.0

This release adds a native SwiftUI macOS menu bar experience without moving any deletion authority out of the Rust safety engine.

macOS menu bar

  • Shows free disk space and estimated reclaimable bytes from the menu bar.
  • Previews and selects exact candidates with native SwiftUI controls.
  • Provides settings for roots, age/size filters, and opt-in cache categories.
  • Bundles a universal Rust helper inside Devclean.app.

Safety and automation

  • Adds repeatable clean --only-path PATH selection for machine clients.
  • Performs a fresh Rust scan and aborts before deletion if any selected path is stale.
  • Invokes the helper directly without a shell; GUI never enables tracked-file or Docker-system escape hatches.
  • Adds Swift contract tests, macOS app CI, universal app packaging, checksums, SBOM, and provenance attestations.

Installation

The crates.io package remains devclean-cli; it installs the devclean executable. The menu bar archive contains Devclean.app and requires macOS 13 or newer.

Download the archive for your platform, verify SHA256SUMS, and run gh attestation verify <archive> -R tuanle96/devclean.