Commit Graph

  • 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
  • e1fc65bd1b feat(provenance+tags): collapse provenance descriptions; purge retired-kind tags bvandeusen 2026-05-28 01:12:20 -04:00
  • 104cac5dca fix(ui): tooltip readability — dark bg + parchment text (was light-on-light) bvandeusen 2026-05-28 00:56:47 -04:00
  • 319e8c1d18 Merge pull request 'v26.05.28.0: downloads dashboard + task-resilience overhaul (timeouts, archive split, 3-layer poison-pill defense)' (#31) from dev into main v26.05.28.0 bvandeusen 2026-05-28 00:45:00 -04:00
  • dcfe55d731 feat(import-resilience L2): one-shot re-download for corrupt downloaded files bvandeusen 2026-05-28 00:08:03 -04:00
  • e3cdd0f92b feat(import-resilience L3): subprocess-isolated probes for video + archive bvandeusen 2026-05-28 00:01:32 -04:00
  • e77afe8295 feat(import-resilience L1): poison-pill circuit breaker — cap stuck-task re-queues bvandeusen 2026-05-27 23:54:35 -04:00
  • 57a22d6098 fix(tests): repair test_maintenance — skips_fresh_running tail was orphaned at module scope by the inserted ml/archive sweep tests (F841/F821) bvandeusen 2026-05-27 23:06:00 -04:00
  • a85880f965 fix(import): split archive imports into their own task + budget; archive-aware recovery sweeps bvandeusen 2026-05-27 22:45:11 -04:00
  • 407de18ff6 fix(ml): video branch needs longer time limits; recovery sweep is now per-queue bvandeusen 2026-05-27 22:23:35 -04:00
  • b1b129ce9f feat(downloads-tab): A+B dashboard improvements — row restyle + date-grouped sections with failed-pinned bvandeusen 2026-05-27 22:18:02 -04:00
  • 9075d8eadd Merge pull request 'v26.05.27.2: subscribestar + HF cookie quirks, platforms package refactor, showcase IR-parity, secure-context audit' (#30) from dev into main v26.05.27.2 ext-1.0.5 bvandeusen 2026-05-27 21:34:02 -04:00
  • df6d89cb59 fix(secure-context): full audit — DestructiveConfirmModal.expectedTokenOverride + bulk-delete + min-dim use backend-computed tokens bvandeusen 2026-05-27 21:17:40 -04:00
  • 12be188ada feat(showcase): IR-parity R-key shuffle + stagger entry animation; fix(cleanup): min-dim Delete swallowed crypto.subtle TypeError on plain HTTP bvandeusen 2026-05-27 20:59:58 -04:00
  • 6d7116c090 fix(platforms): ruff I001 in base.py — one blank line between imports and module-level constant (was two) bvandeusen 2026-05-27 20:37:06 -04:00
  • b447c42853 fix(platforms): ruff I001 — drop unused __future__ import; switch __init__ to per-module imports for clean isort ordering bvandeusen 2026-05-27 19:52:50 -04:00
  • abafc3265e refactor(platforms): promote services/platforms.py → services/platforms/ package with per-platform quirk colocation bvandeusen 2026-05-27 19:46:05 -04:00
  • 2394e47370 fix(hentaifoundry): inject host-only PHPSESSID/CSRF duplicates + extension preserves browser hostOnly bvandeusen 2026-05-27 19:12:51 -04:00
  • 8243740a04 fix(subscribestar): inject 18_plus_agreement_generic age cookie to bypass server gate bvandeusen 2026-05-27 18:18:04 -04:00
  • 88e53e5b86 Merge pull request 'v26.05.27.1: subscriptions hub + post-card merge + sidecar audit' (#29) from dev into main v26.05.27.1 bvandeusen 2026-05-27 17:12:48 -04:00