bvandeusen
3531f373ee
feat(settings): move BrowserExtensionCard from Maintenance to Overview tab — Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 20:33:44 -04:00
bvandeusen
f657582f30
feat(import-ui): deep scan button, sticky settings tabs, tasks-above-filters, fix Scanning-undefined source_path — Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 17:37:10 -04:00
bvandeusen
3a359f6c5e
fix(ui): Quick scan button always visible (disabled when active batch present) + inline Clear stuck action — operator was clicking a spinner area thinking it was the button because activeBatch hid the Quick scan button entirely
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 12:43:37 -04:00
bvandeusen
b6a917ac81
feat(import): /api/import/clear-stuck endpoint + Clear stuck UI button — escape hatch for the autoretry-loop case the automatic sweep can't break
...
Operator hit 3 large PNGs stuck in 'processing' for 2 days 2026-05-25:
the existing recover_interrupted_tasks flips processing > 5min back to
queued + .delay(), but if the underlying file is unfixably broken (e.g.,
PIL OSError, also patched in 68cffce ), the loop never terminates and the
'Scanning...' banner sticks at 0/0 forever blocking new scans.
/api/import/clear-stuck:
- Flips every task in pending/queued/processing to 'failed' with a clear
marker error message
- Finalizes any 'running' ImportBatch that has no remaining active children
- Idempotent + non-destructive: rows survive, can be retried once the
underlying cause is resolved
UI button 'Clear stuck...' sits next to 'Retry failed' / 'Clear completed'
with a warning-tonal alert in the confirm dialog explaining what it does
and recommending Retry failed once the cause is fixed.
Tests: clears mixed non-terminal states, untouches complete rows,
finalizes orphan batch, no-op when nothing stuck.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 12:37:07 -04:00
bvandeusen
52445eb501
fix(ui): double directory card width (220px -> 440px) + bound preview slot height (min 150 / max 220 / overflow hidden / explicit display+object-position) so tall source images can't escape on browsers that don't compute aspect-ratio
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 02:32:05 -04:00
bvandeusen
de1a4b64b7
fc3k(ui): TagMaintenanceCard — preview-then-commit prune-unused under Settings → Maintenance
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 00:52:30 -04:00
bvandeusen
3f500e592e
fc3k(ui): per-tag dots-menu with Merge + Delete actions; Tier-B count-surfacing modal
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 00:51:51 -04:00
bvandeusen
d97e3f9b59
fc3k(ui): bulk-delete action in BulkEditorPanel with sha8 confirm token + projected counts modal
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 00:49:45 -04:00
bvandeusen
035c49f675
fc3k(ui): ArtistDangerZone card + slot at bottom of ArtistView with cascade-delete flow
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 00:48:17 -04:00
bvandeusen
42c6b642c2
fc3k(ui): rename + relocate BackupConfirmModal → modal/DestructiveConfirmModal; add tier + projectedCounts props
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-25 00:46:37 -04:00
bvandeusen
718cc79905
fix(fc3h): split semicolon-stacked statements (E702) and bridge v-dialog v-model to avoid prop write
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 23:37:06 -04:00
bvandeusen
83bd3b4b2d
fc3h(ui): slot BackupCard into Maintenance panel above migration card
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 23:06:22 -04:00
bvandeusen
aecedd9fe4
fc3h(ui): BackupCard.vue + BackupRunsTable.vue — combined card with DB + Images sub-sections
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 23:06:00 -04:00
bvandeusen
1e34b1b428
fc3h(ui): BackupConfirmModal.vue — typed-token confirmation for restore + delete
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 23:05:04 -04:00
bvandeusen
368613068a
fc3i(ui): SystemActivityTab.vue — queues + failures + all-activity panes
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 21:09:20 -04:00
bvandeusen
ddbb84d8aa
fc3i(ui): SystemActivitySummary.vue — Overview-tab quick summary card (5s poll)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 21:08:30 -04:00
bvandeusen
9b252948f9
fc3i(ui): QueuesTable.vue — shared queue/worker/recent table (compact + detailed)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 21:07:57 -04:00
bvandeusen
553567738e
fix: drop migration backup-gate (FC-3h supersedes) + modal Escape via document-level listener so video focus can't swallow it
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 14:38:33 -04:00
bvandeusen
538c1591e8
fc-3g-ext: IR Post/Provenance restore (tag_apply phase 4) + modal artist fallback
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 14:08:18 -04:00
bvandeusen
dd4874ae8d
fix: 30min wall-clock timeout on backup subprocess + global padding-top on .fc-content so views don't start under the sticky TopNav
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 11:10:04 -04:00
bvandeusen
d85c108cec
fc3g(ui): BrowserExtensionCard on Settings → Maintenance — one-click Firefox install + key copy/rotate
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 23:40:56 -04:00
bvandeusen
05b398c352
fix(ui): TopNav side cells use flex: 1 1 0 (equal weight) so middle link block stays centered regardless of action-slot content
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 22:24:41 -04:00
bvandeusen
38a45baad5
feat(ui): click outside the image in the viewer modal closes it (parity with IR)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 21:24:06 -04:00
bvandeusen
c9ddcd0f60
fix(ui): viewer modal — haze background through to the image, fit-to-view at zoom 1
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 21:21:02 -04:00
bvandeusen
95bc761a69
fix(ui): TopNav uses 1fr/auto/1fr grid so Gallery/Showcase action buttons don't shift the centered links
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 21:16:37 -04:00
bvandeusen
d6eba8e4bd
feat(ui): redesign /subscriptions as v-data-table with expandable source rows (GS-style)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-23 10:17:17 -04:00
bvandeusen
6f68bf5fa7
feat(ui): bump thumbnail sizes 1.5x, make Settings fluid, add subscription_count stat
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 23:18:22 -04:00
bvandeusen
a9b354780b
fc5: LegacyMigrationCard — file uploads + step buttons + active-run + history; slotted into MaintenancePanel
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-22 09:04:24 -04:00
bvandeusen
ab2847ad33
fc3f: ArtistCard — preview row + name + subscription chip + image count, clicks to /artist/:slug
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 22:15:06 -04:00
bvandeusen
b1a358c413
fc3e: PostCard — header + title + truncated-desc + thumbnail strip + attachment chips
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 18:56:14 -04:00
bvandeusen
a4f960c22c
fc3e: PostsFilterBar — artist autocomplete + platform v-select with URL-driven hydration
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 18:55:45 -04:00
bvandeusen
60492da2c2
fc3d: Settings — Download scheduling fieldset (default interval / retention / warning threshold)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 16:05:16 -04:00
bvandeusen
32b7ad143b
fc3d: SourceHealthDot — green/amber/red/grey badge with tooltip; embed in SourceRow
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 16:04:44 -04:00
bvandeusen
95df9be60e
feat(fc3c): SettingsView — Downloader section (rate limit + validate-files toggle)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 20:48:05 -04:00
bvandeusen
f309a1e79e
feat(fc3c): /subscriptions Check Now button — wires SourceRow → store.checkNow
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 20:47:36 -04:00
bvandeusen
d35605ab73
feat(fc3c): /downloads view + DownloadEventRow + DownloadDetailModal + FilterPills
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 20:46:48 -04:00
bvandeusen
408971a798
fix(fc3b): SourceFormDialog + SubscriptionsView read platforms store; drop sources.loadPlatforms
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 18:39:44 -04:00
bvandeusen
a0203f4727
feat(fc3b): /credentials view + ExtensionKeyBar + PlatformCredentialRow + UploadDialog
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 18:38:32 -04:00
bvandeusen
72b072e6b3
feat(fc3a): SourceFormDialog (structured+JSON tabs) + ArtistCreateDialog
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 12:57:50 -04:00
bvandeusen
79d6d74637
feat(fc3a): SubscriptionsView + ArtistSection + SourceRow + router
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-20 12:57:13 -04:00
bvandeusen
61b623de48
feat(integrity): ImageViewer badge for corrupt/unverified status
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-19 17:54:25 -04:00
bvandeusen
cba662a900
feat(attachments): downloadable attachments in ProvenancePanel + PostInfoHeader
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-19 11:17:14 -04:00
bvandeusen
9d61f0da44
feat(provenance): drop artist tag-kind affordances from the UI
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 21:37:18 -04:00
bvandeusen
8abdaa4393
feat(provenance): modal sidebar stacks ProvenancePanel above Tags
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 20:17:42 -04:00
bvandeusen
7e904f41b5
feat(provenance): always-on artist label on gallery thumbnails
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 20:17:17 -04:00
bvandeusen
06f4c81418
feat(provenance): PostInfoHeader for the post-filtered gallery
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 20:17:02 -04:00
bvandeusen
b69d637b77
feat(provenance): ProvenancePanel — peer post cards (read-only)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-18 20:16:46 -04:00
bvandeusen
c408ffd5fc
feat(phash): ImportFiltersForm exposes phash_threshold
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 22:07:44 -04:00
bvandeusen
d00379905e
feat(reader): Read entry points — TagCard icon, TagsView route, SeriesManageView button
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 16:31:40 -04:00
bvandeusen
f52c31367a
feat(reader): immersive series-read route + route-aware AppShell (suppress TopNav)
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-17 16:29:21 -04:00