Commit Graph

  • 98673d4dca fix(audit-g5a): small architectural cleanups bundle bvandeusen 2026-06-02 16:46:46 -04:00
  • 89b48f8f35 Merge pull request 'audit-g4: status-enum miss batch' (#52) from dev into main bvandeusen 2026-06-02 16:15:00 -04:00
  • 4bff1d8558 fix(audit-g4): status-enum miss batch bvandeusen 2026-06-02 16:04:59 -04:00
  • d60e0b9494 Merge pull request 'audit-g3: lifecycle batch — recovery sweeps, retention, timeouts' (#51) from dev into main bvandeusen 2026-06-02 14:49:28 -04:00
  • e30f50e6fe fix(audit-g3): lifecycle batch — recovery sweeps, retention, timeouts bvandeusen 2026-06-02 14:30:46 -04:00
  • 9c27a2d3c7 Merge pull request 'audit-g2: async race / state-leak fixes across eight stores' (#50) from dev into main bvandeusen 2026-06-02 14:17:12 -04:00
  • e66987f092 fix(audit-g2): async race / state-leak across eight stores bvandeusen 2026-06-02 14:07:58 -04:00
  • 93e37681b7 Merge pull request 'audit-g1: six one-liner drift fixes from 2026-06-02 audit' (#49) from dev into main bvandeusen 2026-06-02 13:29:17 -04:00
  • 80ef9bce48 fix(test): credentials.upload reflects record into cache (not invalidate) bvandeusen 2026-06-02 13:11:39 -04:00
  • 3898ce7be4 fix(audit-g1): six one-liner drift fixes from 2026-06-02 audit bvandeusen 2026-06-02 11:24:05 -04:00
  • 64ca858574 Merge pull request 'UX fixes: suggestion-accept chip refresh, showcase endless feed, non-media downloads' (#48) from dev into main bvandeusen 2026-06-02 08:26:58 -04:00
  • 91be9df671 fix(download): dispatch archive/non-media in attach_in_place; reshuffle showcase on mount bvandeusen 2026-06-02 08:16:13 -04:00
  • 412edec028 fix(showcase): don't exhaust on all-dupe batches; retry up to 8x bvandeusen 2026-06-01 23:37:21 -04:00
  • 937421485d fix(modal): refresh tag chips after accepting a suggestion bvandeusen 2026-06-01 23:02:57 -04:00
  • 9d0c0b7da8 Merge pull request 'fix(thumbnails): surface backfill counts + tighten validity check' (#47) from dev into main bvandeusen 2026-06-01 22:34:38 -04:00
  • 43b778aa04 fix(test): include 'scanned' in all backfill result assertions bvandeusen 2026-06-01 22:09:02 -04:00
  • 9cbdb70e13 fix(thumbnails): surface backfill results + tighten validity check bvandeusen 2026-06-01 21:57:29 -04:00
  • 8e4d252ae4 Merge pull request 'fix(downloads): enqueue thumbnail + ML per attached image' (#46) from dev into main bvandeusen 2026-06-01 21:52:42 -04:00
  • bd06794647 fix(downloads): enqueue thumbnail + ML tasks per attached image bvandeusen 2026-06-01 21:39:17 -04:00
  • fdd3e01f56 Merge pull request 'ux(failing-sources): visible row separators + clearer hover' (#45) from dev into main bvandeusen 2026-06-01 21:09:28 -04:00
  • f575cfb93b ux(failing-sources): visible row separators + clearer hover bvandeusen 2026-06-01 20:57:41 -04:00
  • c82fb308b6 Merge pull request 'Post.source_id refactor + tick/backfill modes + PARTIAL classifier + Mux fix + UX' (#44) from dev into main bvandeusen 2026-06-01 20:44:23 -04:00
  • 717b601c81 ux(failing-sources): zebra striping + hover highlight on rows bvandeusen 2026-06-01 20:14:48 -04:00
  • cfa4fb4084 fix(test): drop stale 'starts at 0' assertion after auto-arm-on-create bvandeusen 2026-06-01 20:12:55 -04:00
  • 2aa2002f22 feat(subscriptions): newly added enabled sources start in backfill mode bvandeusen 2026-06-01 20:02:19 -04:00
  • 66ff671f09 fix(downloads): forward Patreon Referer/Origin to yt-dlp for Mux videos bvandeusen 2026-06-01 19:00:50 -04:00
  • 19aece1fc4 feat(download): tick/backfill modes + partial-success classifier (plan #544) bvandeusen 2026-06-01 18:23:28 -04:00
  • c9089b1d03 fix(gallery+tests): alias Post inside artist EXISTS; tests stop asserting synthetic Source bvandeusen 2026-06-01 14:40:28 -04:00
  • 644d538bab fix(migration): use canonical fk_<table>_<col>_<ref> names per Base naming_convention bvandeusen 2026-06-01 14:23:18 -04:00
  • ff35da4743 fix(lint): drop unused Source import after Post.artist_id refactor bvandeusen 2026-06-01 14:19:37 -04:00
  • 2f66de2928 feat(model): nullable Post.source_id + denormalized Post.artist_id; retire sidecar synthetics bvandeusen 2026-06-01 14:17:52 -04:00
  • 8cf8d2ca4d Merge pull request 'Modal Esc/overflow polish, artist-scoped post scroll, failing-sources Logs button' (#43) from dev into main bvandeusen 2026-06-01 12:10:11 -04:00
  • 94e7d20792 feat(downloads): Logs button on failing-sources rollup rows bvandeusen 2026-06-01 10:04:22 -04:00
  • fb605af959 fix(posts): anchored view scroll inherits artist_id/platform filters bvandeusen 2026-06-01 08:24:43 -04:00
  • 4c56cf121f fix(modal): Esc closes from tag input; Provenance cards scroll at ~2.5 bvandeusen 2026-06-01 08:17:54 -04:00
  • b1d58bc3b8 Merge pull request 'fix(ci): POSIX-safe SHORT_SHA in build.yml' (#42) from dev into main bvandeusen 2026-06-01 08:03:17 -04:00
  • 9564d073b9 fix(ci): POSIX-safe SHORT_SHA in build.yml (runner uses dash, not bash) bvandeusen 2026-06-01 07:53:33 -04:00
  • 65386f02a0 Merge pull request 'View modal batch: autofocus, suggestions UX, post-title click, retire copyright/artist' (#41) from dev into main bvandeusen 2026-06-01 07:01:42 -04:00
  • f87a06a6bd feat(modal): post title is the primary click (artist-scoped) + suggestion rows look like buttons bvandeusen 2026-06-01 02:21:59 -04:00
  • 5d284aae9f fix(test): unpin general-threshold test from old 0.95 default (alembic 0029) bvandeusen 2026-06-01 02:18:54 -04:00
  • af7b5c95e9 feat(modal): autofocus tag input, expand general suggestions, retire copyright/artist categories bvandeusen 2026-06-01 02:08:10 -04:00
  • 667b05f14e Merge pull request 'Extension probe-and-add (v1.0.6) + per-commit image tags' (#40) from dev into main ext-1.0.6 bvandeusen 2026-06-01 01:44:03 -04:00
  • 8de7ccd07d build(ci): per-commit :c-<short_sha> tag on main-push per family rule #46 bvandeusen 2026-06-01 01:28:55 -04:00
  • d65f0b2091 feat(extension): probe shows current state before click; v1.0.6 bvandeusen 2026-06-01 00:41:17 -04:00
  • 856e9104b4 Merge pull request 'Sidecar synthetic anchor cleanup + tier-gated classifier fix' (#39) from dev into main v26.06.01.0 bvandeusen 2026-06-01 00:16:58 -04:00
  • 66f19d67f5 fix(download): tier-gated = warning, race subprocess timeout, install yt-dlp bvandeusen 2026-05-31 23:30:39 -04:00
  • 6fc8ae3106 fix(subscriptions): hide sidecar synthetic Sources + prefer real on lookup bvandeusen 2026-05-31 23:08:38 -04:00
  • 0397642b21 Merge pull request 'Showcase cadence tuning + cooldown-aware bulk retry' (#38) from dev into main bvandeusen 2026-05-30 23:50:36 -04:00
  • a5101494b6 feat(downloads): bulk retry respects cooldown; single-source RETRY overrides bvandeusenandClaude Opus 4.7 2026-05-30 23:15:07 -04:00
  • e3a7aff7a3 ux(showcase): pipeline fetches in-order, chunk size 3, keep the trickle bvandeusenandClaude Opus 4.7 2026-05-30 22:52:55 -04:00
  • 9cd6d09e60 ux(showcase): smooth one-at-a-time cadence + earlier infinite-scroll trigger bvandeusenandClaude Opus 4.7 2026-05-30 22:48:58 -04:00
  • 237575447d Merge pull request 'Thumbnail URL fix + archive daemon fix + batched initial loads' (#37) from dev into main bvandeusen 2026-05-30 22:01:43 -04:00
  • 810baf63ac fix(import): archive probe → subprocess (was multiprocessing.Process) bvandeusenandClaude Opus 4.7 2026-05-30 21:48:51 -04:00
  • 44bb12a93d fix(thumbnails): derive URL from stored thumbnail_path, not (sha256, mime) bvandeusenandClaude Opus 4.7 2026-05-30 16:55:38 -04:00
  • 1eefed9ab3 fix(ui): finish showcase store batching (PAGE 60 → 5, INITIAL_BATCHES 12) bvandeusenandClaude Opus 4.7 2026-05-30 14:53:24 -04:00
  • adeee64a2d feat(ui): batch initial showcase/gallery loads into smaller chunks bvandeusenandClaude Opus 4.7 2026-05-30 14:51:58 -04:00
  • ed358757dc Merge pull request 'Most-overdue-first scheduling + rich timeout diagnostics' (#36) from dev into main bvandeusen 2026-05-30 14:30:41 -04:00
  • 99b66aa85f fix(download): preserve partial output + classify timeouts richer bvandeusenandClaude Opus 4.7 2026-05-30 14:16:54 -04:00
  • 77f7a23410 feat(scheduler): order due sources by last_checked_at — most overdue first bvandeusenandClaude Opus 4.7 2026-05-30 12:08:43 -04:00
  • d181f4afb8 Merge pull request 'Downloads burst-prevention + maintenance-menu fix + gdl timeout' (#35) from dev into main bvandeusen 2026-05-30 11:43:18 -04:00
  • ff9e96e0e2 fix(tests): update scheduler-status shape pins for platform_cooldowns bvandeusenandClaude Opus 4.7 2026-05-30 11:25:36 -04:00
  • 61ce1ce13c feat(scheduler): platform-wide cooldown on RATE_LIMITED — burst prevention bvandeusenandClaude Opus 4.7 2026-05-30 11:01:40 -04:00
  • d28db32012 fix(download): align gallery-dl subprocess timeout to Celery soft limit bvandeusenandClaude Opus 4.7 2026-05-30 02:25:04 -04:00
  • 77e9859da3 fix(downloads): rewire MaintenanceMenu to the downloads pipeline bvandeusenandClaude Opus 4.7 2026-05-30 00:59:05 -04:00
  • 2886fa4997 Merge pull request 'Tooltip !important fix — 104cac5 follow-up after Vite CSS reorder' (#34) from dev into main bvandeusen 2026-05-30 00:02:24 -04:00
  • 36f8ec80fd fix(ui): tooltip override needs !important — Vite reorders CSS chunks bvandeusenandClaude Opus 4.7 2026-05-29 23:51:39 -04:00
  • f256f587ee Merge pull request 'UI batch + I1–I6 service passes + download-event recovery sweep' (#33) from dev into main bvandeusen 2026-05-29 22:46:16 -04:00
  • e35fb1edf7 fix(scan): recovery sweep for stranded download events bvandeusenandClaude Opus 4.7 2026-05-29 21:40:52 -04:00
  • 08420cd619 feat(I6): FE/BE enum contract test — pin JS mirrors to backend canon bvandeusenandClaude Opus 4.7 2026-05-29 15:34:20 -04:00
  • 8649a13118 refactor(I5): remove one-and-done GS/IR migration tooling bvandeusenandClaude Opus 4.7 2026-05-29 14:38:59 -04:00
  • 8979e0e377 refactor(I4): extract useInfiniteScroll composable; migrate 6 consumers bvandeusenandClaude Opus 4.7 2026-05-29 14:03:49 -04:00
  • 00e2608ba1 feat(I3): always-on pipeline status indicator in the top nav bvandeusenandClaude Opus 4.7 2026-05-29 13:24:11 -04:00
  • 9ab5d709c8 fix(test): DownloadEventRow row shows platform, not artist name bvandeusenandClaude Opus 4.7 2026-05-29 13:16:33 -04:00
  • 44410db492 test(I2): vitest component smoke tests for high-risk UI bvandeusenandClaude Opus 4.7 2026-05-29 12:34:58 -04:00
  • e76aa36a29 ci(I1): dedicated fast-fail ruff lint lane bvandeusenandClaude Opus 4.7 2026-05-29 12:22:33 -04:00
  • c95b760294 feat(posts): in-context anchored feed with bidirectional infinite scroll bvandeusenandClaude Opus 4.7 2026-05-28 21:12:18 -04:00
  • 35fe420701 feat(maintenance): live queue-depth bar under the backfill buttons bvandeusenandClaude Opus 4.7 2026-05-28 20:03:32 -04:00
  • 9e74c80e2f feat(downloads): front-and-center "active now" panel with live elapsed timers bvandeusenandClaude Opus 4.7 2026-05-28 19:36:49 -04:00
  • c87e8e0932 fix(ui): render absolute timestamps in the viewer's local timezone bvandeusenandClaude Opus 4.7 2026-05-28 19:36:42 -04:00
  • 8c3900b998 feat(showcase): dramatic 3D cascade entry — tiles tip back then settle into place bvandeusenandClaude Opus 4.7 2026-05-28 19:01:04 -04:00
  • 972d9014ce feat(showcase): IR-parity hover animation on masonry thumbnails bvandeusenandClaude Opus 4.7 2026-05-28 18:58:05 -04:00
  • 75b6b8056e feat(posts): plain bold titles; reserve View-original to the post card; provenance links to the posts feed bvandeusenandClaude Opus 4.7 2026-05-28 18:18:34 -04:00
  • 42ddac9996 fix(subscriptions): fixed-height hub so only the tab content scrolls bvandeusenandClaude Opus 4.7 2026-05-28 18:13:19 -04:00
  • 384d8d5e50 Merge pull request 'Dashboard insights + project-wide DRY pass' (#32) from dev into main bvandeusen 2026-05-28 15:38:26 -04:00
  • 1322056b22 refactor(dry-F5): useTabQuery composable for ?tab= query-param routing bvandeusenandClaude Opus 4.7 2026-05-28 15:20:30 -04:00
  • 32bdde049f refactor(dry-B3): extract _get_or_create race-safe find-or-create in Importer bvandeusenandClaude Opus 4.7 2026-05-28 15:02:55 -04:00
  • 9d18dacbe8 fix(lint): UP037 — drop quotes from ImportSettings.load return annotations (py3.14 deferred annotations) bvandeusenandClaude Opus 4.7 2026-05-28 14:08:24 -04:00
  • 171c486939 refactor(dry-B2): ImportSettings.load()/load_sync() classmethods for the singleton row bvandeusenandClaude Opus 4.7 2026-05-28 14:03:26 -04:00
  • 21c1b0a81c refactor(dry-B4): extract shared async_session_factory for Celery tasks bvandeusenandClaude Opus 4.7 2026-05-28 13:15:04 -04:00
  • 597c6d48d3 refactor(dry-B1): consolidate duplicated _bad error helper into api/_responses.py bvandeusenandClaude Opus 4.7 2026-05-28 13:10:04 -04:00
  • a37dad33c7 refactor(dry-F1): shared useAsyncAction lifecycle helper for stores bvandeusenandClaude Opus 4.7 2026-05-28 12:53:57 -04:00
  • cabd73287a fix(lint): S1 ruff fallout — collapse double blank after import block (I001) + strip W293 in test_suggestions_bulk bvandeusenandClaude Opus 4.7 2026-05-28 12:43:08 -04:00
  • def967a1a8 refactor(dry-S1): hoist app/client test fixtures into conftest bvandeusenandClaude Opus 4.7 2026-05-28 11:33:05 -04:00
  • eebc8e2413 refactor(dry-F2): centralize shared UI primitives (relative-time, toast, download-status) bvandeusenandClaude Opus 4.7 2026-05-28 11:20:07 -04:00
  • 2358cedf3e feat(dashboards): scheduler health strip, failing-source rollup, 24h activity sparkline, credential staleness nudge bvandeusenandClaude Opus 4.7 2026-05-28 08:30:14 -04:00
  • 215a8993a1 fix(lint): noqa ASYNC109 on gallery_dl.verify timeout (subprocess.run deadline, not coroutine) bvandeusenandClaude Opus 4.7 2026-05-28 08:18:33 -04:00
  • a459d21a65 feat(dashboards): 1600px max-width, richer Downloads filters, needs-attention + sticky headers bvandeusen 2026-05-28 08:10:04 -04:00
  • 73520b7cc3 feat(downloads): copy buttons in the download detail modal bvandeusen 2026-05-28 07:54:40 -04:00
  • 56970fb66d feat(credentials+downloads): real credential Verify button + live download-activity polling bvandeusen 2026-05-28 07:52:20 -04:00
  • bf8eb4468f feat(tags): legacy-tag purge also catches source:* general tags bvandeusen 2026-05-28 01:20:41 -04:00