Releases: alexphillips-dev/Appdata-Cleanup-Plus
Releases · alexphillips-dev/Appdata-Cleanup-Plus
Release list
2026.07.08.56
- Ignored items: Add a Show ignored / Hide ignored action directly to the Ignore list active notice, and display hidden paths in a separate gray-accent Ignored section with Details and Restore actions.
- Test fixtures: Add a built-in Tools modal fixture helper that creates and removes safe acp-test-* appdata test rows for validating scan, dry run, quarantine, delete, and restore workflows.
- Audit history: Add search, compact path previews, richer result counts, and copyable audit summaries so cleanup history is easier to review and share.
- Plugin metadata: Update the CA/plugin description so it reflects the current guided cleanup dashboard, quarantine/restore flow, audit history, and ZFS dataset candidate support.
- UI/CSS: Reorganize modal CSS sections for tools, audit history, and theme-token overrides while keeping the current dashboard theme behavior intact.
- Validation: Add smoke coverage for fixture create/status/remove and keep ignored rows unselectable until restored so cleanup actions cannot run against hidden items accidentally.
2026.07.08.51
- Critical fix: Preserve the configured quarantine root whenever Safe Mode, appdata sources, ZFS mappings, or quarantine purge settings are saved so existing quarantine behavior is not silently reset.
- Cleanup UX: Keep the simplified dashboard workflow with Ready, Blocked, Selected, and Safe Mode summary cards, including the restored Blocked card with a red lock icon.
- ZFS: Enable exact ZFS dataset cleanup by default, detect dataset-backed appdata candidates, separate ZFS dataset rows into their own section, and show distinct dataset icons and source badges.
- ZFS safety: Keep dataset rows gated behind permanent delete mode, highlight the Disable Safe Mode instruction for exact dataset rows, and retain dataset preview/destroy details in the new modal style.
- UI polish: Improve top summary SVG icons, safe-mode enabled/disabled states, source badges, button icons, dark-mode outlines, bottom action bar icons, and action button colors.
- Sorting: Default results to Name and add sort options for last used, size, source, type, path, and risk.
- Help and modals: Simplify the Help, Details, Appdata Sources, History, Tools, delete confirmation, delete progress, and delete result dialogs so they match the redesigned UI.
- Source management: Improve Appdata Sources and ZFS path mapping dialogs, shorten folder browser scroll areas, and keep Appdata Sources styling consistent with the rest of the action buttons.
- Documentation and release quality: Add MIT licensing, fix README CI/license badges, add GitHub Actions validation, and enforce real changelog notes for generated package versions.
- Error handling: Return action-specific fallback messages for unexpected backend failures instead of showing scan-only wording for every request.
- Copy cleanup: Remove stale references to removed badge and risk filters from the empty search state.
2026.07.08.30
- Release feed: Removed accidental manifest conflict markers from the main feed and published a clean package version.\n- Release guard: Added conflict-marker detection so future builds fail if merge markers are present in release files.
2026.07.08.29
- CI: Fixed smoke-test session setup so GitHub Actions can persist scan snapshots during behavior validation.\n- Repo badges: CI now has a real workflow path and the license badge uses a standard root LICENSE file for MIT detection.
2026.07.08.28
- CI: Prepared writable Unraid-style fixture roots before the behavior smoke test so GitHub Actions can validate the plugin on Ubuntu runners.\n- Repo badges: CI badge now points at a real workflow and license detection uses the standard root LICENSE file.
2026.07.08.27
- Repo badges: Added the missing GitHub Actions CI workflow so the README CI badge resolves and reports validation status.\n- License: Added a standard root LICENSE file and updated README license links so GitHub and shields detect MIT correctly.\n- Layout: Includes the latest dev dashboard spacing fix for zoomed-out views.
2026.07.08.25
Critical fixes first
- Fixed the major cleanup/delete reliability problem by moving deletion back to the simple shell-backed approach proven by the original Cleanup Appdata plugin. This avoids the backend-busy/internal-server-error behavior seen during permanent delete and quarantine operations.
- Simplified the entire cleanup experience so users are not forced through confusing review gates, redundant status rows, or unclear lock states. The plugin now focuses on a clear Ready to Clean workflow with Safe Mode as the quarantine-first option.
UI and UX overhaul
- Rebuilt the dashboard around the requested mockup: cleaner header, summary cards, action bar, Ready to Clean table, compact badges, folder icons, size column, and sticky bottom action bar.
- Removed the saved-template and outside-share cleanup gates from the normal workflow so those items appear in Ready to Clean by default.
- Removed the Needs Review/Blocked workflow, redundant Safe Mode banner, extra filtered-by/visible-count blocks, and unnecessary filter controls.
- Made Safe Mode easier to understand with a fixed status badge, shield icon, better alignment, and consistent card sizing.
- Reworked buttons, badges, table spacing, folder icons, source labels, empty-folder size labels, age labels, and theme-aware colors.
Delete workflow
- Replaced the fragile backend delete path with shell-backed cleanup operations.
- Added checkbox confirmation for permanent delete instead of typing DELETE.
- Added clearer permanent-delete warnings that state the action cannot be undone.
- Added live delete progress state and disabled completion actions while deletion is running.
- Redesigned delete confirmation, delete progress, and delete results dialogs to match the new UI.
Modals and supporting screens
- Simplified Details so it explains the folder/source/path in plain language.
- Redesigned Appdata Sources, Show Quarantine, History, Tools, and cleanup result modals around the new compact UI.
- Made audit history entries more compact so more cleanup history is visible at once.
- Constrained the Appdata Sources browser so the close/actions stay reachable.
Release notes and docs
- Replaced the generic July dev-build changelog placeholders with actual release history for every dev push in this cycle.
- Added a build guard requiring real changelog notes whenever a new package version is generated.
- Rebuilt the README to match FolderView Plus, updated badges, removed developer-only sections, and added the MIT license.
Safety retained
- Kept server-side scan snapshots, candidate-id actions, CSRF validation, protected path checks, restore collision checks, quarantine tracking, and ZFS dataset-delete safeguards.
2026.07.08.24
Critical fixes first
- Fixed the major cleanup/delete reliability problem by moving deletion back to the simple shell-backed approach proven by the original Cleanup Appdata plugin. This avoids the backend-busy/internal-server-error behavior seen during permanent delete and quarantine operations.
- Simplified the entire cleanup experience so users are not forced through confusing review gates, redundant status rows, or unclear lock states. The plugin now focuses on a clear Ready to Clean workflow with Safe Mode as the quarantine-first option.
UI and UX overhaul
- Rebuilt the dashboard around the requested mockup: cleaner header, summary cards, action bar, Ready to Clean table, compact badges, folder icons, size column, and sticky bottom action bar.
- Removed the saved-template and outside-share cleanup gates from the normal workflow so those items appear in Ready to Clean by default.
- Removed the Needs Review/Blocked workflow, redundant Safe Mode banner, extra filtered-by/visible-count blocks, and unnecessary filter controls.
- Made Safe Mode easier to understand with a fixed status badge, shield icon, better alignment, and consistent card sizing.
- Reworked buttons, badges, table spacing, folder icons, source labels, empty-folder size labels, age labels, and theme-aware colors.
Delete workflow
- Replaced the fragile backend delete path with shell-backed cleanup operations.
- Added checkbox confirmation for permanent delete instead of typing DELETE.
- Added clearer permanent-delete warnings that state the action cannot be undone.
- Added live delete progress state and disabled completion actions while deletion is running.
- Redesigned delete confirmation, delete progress, and delete results dialogs to match the new UI.
Modals and supporting screens
- Simplified Details so it explains the folder/source/path in plain language.
- Redesigned Appdata Sources, Show Quarantine, History, Tools, and cleanup result modals around the new compact UI.
- Made audit history entries more compact so more cleanup history is visible at once.
- Constrained the Appdata Sources browser so the close/actions stay reachable.
Release notes and docs
- Replaced the generic July dev-build changelog placeholders with actual release history for every dev push in this cycle.
- Added a build guard requiring real changelog notes whenever a new package version is generated.
- Rebuilt the README to match FolderView Plus, updated badges, removed developer-only sections, and added the MIT license.
Safety retained
- Kept server-side scan snapshots, candidate-id actions, CSRF validation, protected path checks, restore collision checks, quarantine tracking, and ZFS dataset-delete safeguards.
2026.05.20.04
- Release: Promote the full
2026.05.05.01through2026.05.20.03development cycle to the stablemainchannel while keeping the manifest, CA feed, package archive, and plugin install link pointed atmain - Support: Keep diagnostics available during failed or stuck operations, add a redacted
Copy diagnostics textfallback, and include clearer runtime-lock state, scan timing details, safety toggles, source roots, quarantine totals, and export failure context for troubleshooting - Fix: Return the underlying filesystem move error when quarantine fails instead of hiding it behind a generic failure message
- Fix: Stop quarantine manager and dashboard summary loads from running scheduled purge side effects, so expired or protected quarantine entries no longer keep the backend busy while users are trying to review quarantine
- Fix: Allow quarantine purge to remove symlink entries inside already-quarantined folders without following them, while continuing to block mount points, top-level symlinks, and special filesystem entries
- Fix: Pause failed scheduled purge timers and retain the failure reason so protected quarantine entries are not retried on every page refresh
- Safety: Lock saved-template appdata candidates by default, keep template-referenced rows under configured appdata roots out of outside-share review counts, and show a
Template referencebadge for that policy lock - Safety: Disable cleanup actions when Docker appears to be running but installed containers cannot be verified while saved templates are present
- Safety: Add an
Allow saved-template cleanupcheckbox that bypasses only the saved-template policy lock while preserving outside-share, ZFS dataset delete, permanent-delete, hard-lock, ignored-row, and Docker inventory safeguards - Test: Extend behavior smoke coverage for diagnostics fallback, quarantine load/purge behavior, failed purge suppression, saved-template locks and bypass, template row labeling, and unverified Docker inventory locks
2026.05.04.07
- Release: Promote the full
2026.05.04.01through2026.05.04.06development cycle to the stablemainchannel while keeping the manifest, CA feed, package archive, and plugin install link pointed atmain - Fix: Prevent Appdata Cleanup Plus from exhausting Unraid PHP-FPM workers by allowing only one filesystem-heavy scan, hydration, quarantine, diagnostics, or cleanup request to run at a time and returning a fast retry response for overlapping requests
- Fix: Include safety-setting saves in the expensive-operation guard so quarantine rebuilds and settings writes cannot overlap with scan or hydration requests
- Fix: Recover old unheld runtime lock metadata safely before acquiring a new operation lock, while leaving active
flock-held operations untouched - Fix: Backfill exported
scan.metricsfrom persisted server diagnostics when browser scan state has an empty metrics object - Support: Add backend-generated diagnostics exports with redacted plugin state files, safety settings, quarantine registry, ignore list, audit history, snapshot summaries, stats-cache counts, runtime context, runtime-lock state, latest scan metrics, and bounded support log excerpts
- Support: Add per-phase scan timing metrics for settings load, template glob, Docker state/query, template scan, filesystem discovery, candidate filtering, row build, and snapshot write
- Support: Persist latest backend scan timing metrics server-side so diagnostics exports can include phase timings even when browser page state misses them
- Support: Add runtime-lock diagnostics to the Tools export so active lock name, action, age, PID state, held state, and stale status are visible during troubleshooting
- Privacy: Redact filesystem paths, share/app-specific path segments, syslog hostnames, IP addresses, emails, query tokens, UUIDs, MAC addresses, long hex tokens, nested audit row payloads, restored app names, and audit result paths before diagnostics are downloaded
- Support: Tighten diagnostics log matching so unrelated
emhttpd, flash-backup, startup, and pool noise is excluded while plugin, PHP-FPM, nginx, timeout, and error context stays included - UX: Pause background row-stat hydration before user-triggered operations, retry plugin-busy responses, and show a distinct
Backend busyscan state for HTTP 429 instead of presenting guarded requests as generic scan failures - UX: Update Tools diagnostics copy to clarify that exported diagnostics include redacted server-side log context and should still be reviewed before sharing
- Performance: Read audit history from the tail of the audit log with a bounded default instead of loading the full audit file on long-lived installs
- Performance: Replace parent-candidate O(n²) pruning with a path-prefix index while preserving parent, child, and sibling behavior
- Safety: Add a filesystem discovery size guard with bounded partial results and a warning when direct appdata candidate discovery reaches the safety limit
- Test: Extend behavior smoke coverage for runtime locks, duplicate lock rejection, stale-lock recovery, parent-candidate pruning, diagnostics redaction, diagnostics log filtering, scan timing metrics, persisted scan metrics, and filesystem discovery truncation