From 3b435dc0ba86bd7cc611ccb792a79e13d3ddda26 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 17 Jun 2026 23:48:18 -0400 Subject: [PATCH] feat(settings): tidy Cleanup tab into sectioned compact tiles (pass 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Cleanup + Maintenance sections had ~17 full-width stacked cards with long descriptions — a hunt to scan. Operator wants compact, sectioned, scannable tiles (2026-06-18: keep both tabs, group inside, compact tiles in a grid). New common/MaintenanceTile.vue: a compact expandable tile (icon + short title + one-line blurb collapsed; click the header to expand the full controls/preview/ result inline; keyboard-accessible button + focus ring; tints the icon, keeps a running task expanded). Cleanup tab (this pass) restructured into 3 sections — Import-filter audits (Min dimensions, Transparency, Single-color) / Duplicates & posts (Bare posts, Duplicate posts, Deduplicate videos, Gated-post previews) / Tags (Unused, Legacy, Reset content tagging, Standardize casing) — each a responsive grid of tiles. PostMaintenanceCard split into 2 tiles, TagMaintenanceCard into 4. Moved VideoDedupCard + GatedPurgeCard from the Maintenance tab here (both are destructive content cleanup). All card logic unchanged — only the chrome. Maintenance tab tiling is pass 2 (TODO noted in MaintenancePanel). Co-Authored-By: Claude Opus 4.8 --- .../components/cleanup/MinDimensionCard.vue | 93 +++-- .../cleanup/SingleColorAuditCard.vue | 147 ++++--- .../cleanup/TransparencyAuditCard.vue | 121 +++--- .../src/components/common/MaintenanceTile.vue | 121 ++++++ .../components/settings/GatedPurgeCard.vue | 14 +- .../components/settings/MaintenancePanel.vue | 8 +- .../settings/PostMaintenanceCard.vue | 182 +++++---- .../settings/TagMaintenanceCard.vue | 373 +++++++++--------- .../components/settings/VideoDedupCard.vue | 96 ++--- frontend/src/views/CleanupView.vue | 75 +++- 10 files changed, 697 insertions(+), 533 deletions(-) create mode 100644 frontend/src/components/common/MaintenanceTile.vue diff --git a/frontend/src/components/cleanup/MinDimensionCard.vue b/frontend/src/components/cleanup/MinDimensionCard.vue index 632a6e2..e0aa65d 100644 --- a/frontend/src/components/cleanup/MinDimensionCard.vue +++ b/frontend/src/components/cleanup/MinDimensionCard.vue @@ -1,49 +1,50 @@ - - diff --git a/frontend/src/components/cleanup/SingleColorAuditCard.vue b/frontend/src/components/cleanup/SingleColorAuditCard.vue index 31467cc..35b958c 100644 --- a/frontend/src/components/cleanup/SingleColorAuditCard.vue +++ b/frontend/src/components/cleanup/SingleColorAuditCard.vue @@ -1,79 +1,82 @@ - - diff --git a/frontend/src/components/cleanup/TransparencyAuditCard.vue b/frontend/src/components/cleanup/TransparencyAuditCard.vue index 7ff5dd0..26389ba 100644 --- a/frontend/src/components/cleanup/TransparencyAuditCard.vue +++ b/frontend/src/components/cleanup/TransparencyAuditCard.vue @@ -1,66 +1,69 @@ - - diff --git a/frontend/src/components/common/MaintenanceTile.vue b/frontend/src/components/common/MaintenanceTile.vue new file mode 100644 index 0000000..fd0c54b --- /dev/null +++ b/frontend/src/components/common/MaintenanceTile.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/frontend/src/components/settings/GatedPurgeCard.vue b/frontend/src/components/settings/GatedPurgeCard.vue index 64d2a3b..e1e0a30 100644 --- a/frontend/src/components/settings/GatedPurgeCard.vue +++ b/frontend/src/components/settings/GatedPurgeCard.vue @@ -4,9 +4,13 @@ matches by content hash, so real content downloaded when access existed is provably spared. Preview first, then apply (destructive: deletes the matched blurred-preview files). --> - - Clean up gated-post previews - +

Removes the blurred locked-preview images that were grabbed from tier-gated Patreon posts before they were filtered out. It re-walks every @@ -74,7 +78,6 @@ - @@ -92,13 +95,14 @@ - + - - diff --git a/frontend/src/components/settings/VideoDedupCard.vue b/frontend/src/components/settings/VideoDedupCard.vue index 3ff9cd4..9e26862 100644 --- a/frontend/src/components/settings/VideoDedupCard.vue +++ b/frontend/src/components/settings/VideoDedupCard.vue @@ -3,54 +3,57 @@ duration + aspect (the same clip re-encoded / pulled from multiple sources). Preview first, then apply (destructive: removes the redundant copies, keeping the highest-resolution one). --> - - Deduplicate videos - -

- Finds videos of the same artist that are the same content across - re-encodes (matching duration + aspect ratio) and keeps the - highest-resolution copy. Preview first to see what would - be removed; Apply re-points each post to the kept copy, - then deletes the redundant videos and their files. The first run also - computes durations for older videos, so it may take a while. -

+ +

+ Finds videos of the same artist that are the same content across + re-encodes (matching duration + aspect ratio) and keeps the + highest-resolution copy. Preview first to see what would + be removed; Apply re-points each post to the kept copy, + then deletes the redundant videos and their files. The first run also + computes durations for older videos, so it may take a while. +

-
- - mdi-magnify Preview - - - mdi-content-duplicate Apply - -
- - + - - Removed {{ summary.deleted }} redundant video(s) across - {{ summary.groups }} group(s); re-pointed {{ summary.relinked_posts }} - post link(s); reclaimed {{ humanBytes(summary.reclaim_bytes) }}. - - - {{ summary.redundant }} redundant video(s) across {{ summary.groups }} - group(s) — {{ humanBytes(summary.reclaim_bytes) }} reclaimable. Click - Apply to remove them (keeping the best copy). - - No duplicate videos found. - + mdi-magnify Preview + + + mdi-content-duplicate Apply + + - -
+ + + Removed {{ summary.deleted }} redundant video(s) across + {{ summary.groups }} group(s); re-pointed {{ summary.relinked_posts }} + post link(s); reclaimed {{ humanBytes(summary.reclaim_bytes) }}. + + + {{ summary.redundant }} redundant video(s) across {{ summary.groups }} + group(s) — {{ humanBytes(summary.reclaim_bytes) }} reclaimable. Click + Apply to remove them (keeping the best copy). + + No duplicate videos found. + + + @@ -68,13 +71,14 @@ -
+