Commit Graph

  • 14c4dd1ea0 test(patreon): adjust deterministic clock for the new per-media should_stop read bvandeusen 2026-06-06 22:26:27 -04:00
  • 619e7712c2 fix(patreon): enforce the backfill time-box mid-post (stop overrunning to the soft limit) bvandeusen 2026-06-06 22:20:05 -04:00
  • 01e5ce1410 Merge pull request 'Patreon: resolve creator campaign from a single-post URL' (#77) from dev into main bvandeusen 2026-06-06 21:38:33 -04:00
  • 416d8d71cd feat(patreon): resolve the creator's campaign from a single-post URL bvandeusen 2026-06-06 21:32:15 -04:00
  • 3bb94674cf Merge pull request 'Patreon download concurrency cap + immediate backfill kickoff on create' (#76) from dev into main bvandeusen 2026-06-06 21:27:22 -04:00
  • a3c9499e93 feat(subs): kick off the first backfill walk immediately on source create bvandeusen 2026-06-06 21:22:32 -04:00
  • 87c7318125 feat(downloads): serialize same-platform downloads (Patreon concurrency cap) bvandeusen 2026-06-06 21:22:32 -04:00
  • a75c602175 Merge pull request 'Subscriptions UX overhaul + Patreon /cw/ vanity fix' (#75) from dev into main bvandeusen 2026-06-06 21:12:02 -04:00
  • e4e35163ab feat(subs): subscriptions UX batch — error reasons, single-source rows, health sort, bulk backfill bvandeusen 2026-06-06 21:00:47 -04:00
  • b7d07324ee fix(subs): stop the lock/reload on source actions + regroup the row buttons bvandeusen 2026-06-06 20:48:01 -04:00
  • c65da42593 fix(patreon): handle the /cw/ creator-URL prefix in vanity extraction bvandeusen 2026-06-06 20:34:15 -04:00
  • ef8f4f7193 Merge pull request 'Tag-casing acronym fix, Patreon resolver hardening, archive diagnostics, post-card strip' (#74) from dev into main bvandeusen 2026-06-06 19:59:32 -04:00
  • 19eb4e9388 feat(import): surface WHY an archive was captured without extracting images bvandeusen 2026-06-06 19:01:22 -04:00
  • a559fabdd5 feat(patreon): scrape creator-page HTML as a campaign-id resolution fallback bvandeusen 2026-06-06 18:57:39 -04:00
  • 711fd2bb75 style: drop aliased cross-module import (I001) — use a local _CAMPAIGNS_API constant bvandeusen 2026-06-06 17:46:09 -04:00
  • 3556a54260 feat(patreon): surface source URL + vanity in campaign-id resolution errors bvandeusen 2026-06-06 17:39:54 -04:00
  • df2310bc70 fix(tags): preserve acronym casing in tag normalization (DC, NSFW) bvandeusen 2026-06-06 17:39:54 -04:00
  • 9374f63953 fix(posts): post-card thumbnail strip spans the full hero width bvandeusen 2026-06-06 17:04:23 -04:00
  • ec3d27b219 Merge pull request 'Tag-maintenance sweep + bug-fix batch: #699 #700 #701 #709 #711 #712 #713 #714' (#73) from dev into main bvandeusen 2026-06-06 16:49:00 -04:00
  • 6332ae13fd style(tags): C416 — use dict(members) instead of identity comprehension (#714) bvandeusen 2026-06-06 16:32:24 -04:00
  • 3c89223dcb feat(tags): retro-normalize existing tags to Title Case + merge case-collisions (plan #714) bvandeusen 2026-06-06 16:28:34 -04:00
  • 23f452021f fix(tags): Title-Case operator-entered tags at create endpoint only (plan #701) bvandeusen 2026-06-06 15:57:29 -04:00
  • 62cca64dce feat(downloads): live per-file progress on running events — #709 bvandeusen 2026-06-06 15:48:31 -04:00
  • 89dfa42e18 fix(showcase): over-sample + random-order to break near-dup clustering — #699 bvandeusen 2026-06-06 15:44:04 -04:00
  • 2b69540ecc feat(tags): Title-Case normalization on create/rename — #701 (core) bvandeusen 2026-06-06 15:42:20 -04:00
  • 4fe53cdf6b fix(modal/tags): fandom list, modal kebab, ESC-after-accept — #712 #711 #700 bvandeusen 2026-06-06 15:15:02 -04:00
  • cb9b286c53 fix(maintenance): stage re-extract under the artist dir so members link — #713 part 2 fix bvandeusen 2026-06-06 14:51:22 -04:00
  • a497104661 feat(maintenance): re-extract archive attachments + link to post — #713 part 2 bvandeusen 2026-06-06 14:43:26 -04:00
  • 5bb25245a5 fix(archive): magic-byte archive detection so mis-named archives extract — #713 part 1 bvandeusen 2026-06-06 14:33:24 -04:00
  • 911d535f56 fix(artists): card preview dead-space + empty-state flicker on first load bvandeusen 2026-06-06 13:45:03 -04:00
  • 03bd3b2eda Merge pull request 'Native Patreon ingester + download-engine ownership (plans #697, #703–#708)' (#72) from dev into main bvandeusen 2026-06-06 12:57:31 -04:00
  • e82c2ee57b feat(subscriptions): dry-run backfill preview — B4 preview (plan #708) bvandeusen 2026-06-06 12:18:08 -04:00
  • cd43439401 feat(ingester): graceful mid-walk cancel on Stop — B4 cancel (plan #708) bvandeusen 2026-06-06 12:10:24 -04:00
  • bde19944db test(patreon): fix _BoomSession stub for the B5 headers kwarg bvandeusen 2026-06-06 11:41:48 -04:00
  • 402086c34c feat(patreon): resume partial media downloads via HTTP Range — B5 (plan #708) bvandeusen 2026-06-06 11:38:11 -04:00
  • fb7383eea7 feat(downloads): platform cooldown honors server Retry-After — B1 (plan #708) bvandeusen 2026-06-06 11:34:37 -04:00
  • e47fa0cf4b refactor(downloads): unify phase-2 dispatch in download_backends — A5 (plan #707) bvandeusen 2026-06-06 11:22:48 -04:00
  • b211900390 refactor(downloads): DRY the ingester/gallery-dl seam — A1–A4 (plan #707) bvandeusen 2026-06-06 11:11:25 -04:00
  • 697a86d31c fix(ingester): close #5 within-chunk live posts + #8 video transient retry bvandeusen 2026-06-06 09:56:26 -04:00
  • 9a2cd569c3 refactor(ingest): extract platform-agnostic Ingester core — roadmap #9 (plan #706) bvandeusen 2026-06-06 00:24:23 -04:00
  • d592e0ca02 feat(patreon): within-pass transient retry for media GETs — #8 (was overstated as done) bvandeusen 2026-06-06 00:15:48 -04:00
  • 7a872a3619 feat(patreon): dead-letter ledger for permanently-failing media — #705 step 2 (#7) bvandeusen 2026-06-06 00:04:24 -04:00
  • 4bb11ce7dc feat(patreon): incremental cursor checkpoint mid-walk — #705 step 1 (#6) bvandeusen 2026-06-05 23:58:16 -04:00
  • e42a86d995 test(patreon): fix #704 — quarantine status + budget-cut cursor assertions bvandeusen 2026-06-05 23:46:02 -04:00
  • b2e59e7e17 feat(subscriptions): live posts-processed progress on backfill/recovery — #704 step 2 bvandeusen 2026-06-05 23:43:23 -04:00
  • e53f8959af feat(patreon): structured ingester results + quarantine surfacing — #704 step 1 bvandeusen 2026-06-05 23:39:28 -04:00
  • 5b615b7ded feat(sources): pre-flight credential verify on backfill/recovery arm — #703 step 2 bvandeusen 2026-06-05 23:21:05 -04:00
  • d6c15f4ea0 test(patreon): fake gdl needs real _rate_limit for native pacing — #703 step 1 fix bvandeusen 2026-06-05 23:21:05 -04:00
  • 3b2f7a41c3 feat(patreon): ingester rate-limit resilience — #703 step 1 bvandeusen 2026-06-05 23:13:46 -04:00
  • 218bfebb92 feat(downloads): native Patreon verify + uniform backend dispatch (plan #697) bvandeusen 2026-06-05 22:49:43 -04:00
  • ec43e823e1 feat(patreon): recovery UI + gallery-dl cutover — build step 5 (plan #697) bvandeusen 2026-06-05 22:18:03 -04:00
  • 682beafbc5 feat(patreon): drift detection + error categorization — build step 4 (plan #697) bvandeusen 2026-06-05 21:56:58 -04:00
  • 96c30eba13 feat(patreon): phase-2 ingester integration — build step 3 (plan #697) bvandeusen 2026-06-05 21:38:42 -04:00
  • 2ec7d86a3b feat(patreon): native media downloader — ingester build step 2b (plan #697) bvandeusen 2026-06-05 19:39:12 -04:00
  • 6222928746 feat(patreon): seen-ledger table + model — ingester build step 2a (plan #697) bvandeusen 2026-06-05 19:26:57 -04:00
  • 1bdaa04aa2 test(patreon): fix self-contradictory attachment/postfile dedup assertion bvandeusen 2026-06-05 19:17:56 -04:00
  • 1c2dc7659a feat(patreon): native JSON-API client — ingester build step 1 (plan #697) bvandeusen 2026-06-05 19:16:20 -04:00
  • 7395e77d75 Merge pull request 'Smarter backfill: time-boxed chunks, run-until-done (plan #693)' (#71) from dev into main bvandeusen 2026-06-05 16:33:06 -04:00
  • 618dafde85 feat(subscriptions): smarter-backfill UI — Start/Stop + state badge bvandeusen 2026-06-05 15:06:30 -04:00
  • 96fffaff64 feat(download): smarter backfill — time-boxed chunks, run-until-done (backend) bvandeusen 2026-06-05 15:02:46 -04:00
  • 575d817919 Merge pull request '#70 dev→main: cursor-paged backfill + mobile modal fixes' from dev into main bvandeusen 2026-06-05 11:10:02 -04:00
  • add1c1ad14 fix(modal): mobile — no tag autofocus + sticky image over scrolling panel bvandeusen 2026-06-05 08:35:22 -04:00
  • 593f65c9cc feat(download): cursor-paged Patreon backfill for large catalogs bvandeusen 2026-06-04 23:44:31 -04:00
  • 2a8f7cd8b6 Merge pull request '#69 dev→main: release v26.06.04.0' from dev into main v26.06.04.0 bvandeusen 2026-06-04 23:16:12 -04:00
  • 86efbf7f2c fix(modal): kebab menus open via explicit v-model, not activator click bvandeusen 2026-06-04 23:01:55 -04:00
  • 3a0cca5aca fix(tags): allow creating a character with no fandom bvandeusen 2026-06-04 22:50:19 -04:00
  • 83f8af8090 Merge pull request 'dev→main: surface near-duplicate (pHash) control + reorder import tab' (#68) from dev into main bvandeusen 2026-06-04 21:39:44 -04:00
  • a5b3702863 feat(settings): surface the near-duplicate (pHash) control + reorder import tab bvandeusen 2026-06-04 17:42:32 -04:00
  • 9a2617c1a2 Merge pull request 'dev→main: post-card redesign (images→modal, in-place text expand)' (#67) from dev into main bvandeusen 2026-06-04 17:32:50 -04:00
  • 509a7958cf feat(posts): images open the modal; only text expands in place bvandeusen 2026-06-04 17:29:19 -04:00
  • 81688815a0 Merge pull request 'dev→main: similar-search render fix + reset-content-tagging + scan persistence' (#66) from dev into main bvandeusen 2026-06-04 16:59:52 -04:00
  • 5a6a95682d fix(cleanup): library scans survive navigation, reconnect on return bvandeusen 2026-06-04 16:55:20 -04:00
  • 91b0145bc8 feat(tags): 'Reset content tagging' admin action bvandeusen 2026-06-04 16:47:36 -04:00
  • 26e47a86cb fix(gallery): render similar-mode results (flat list when no date groups) bvandeusen 2026-06-04 16:24:52 -04:00
  • 773128c3bf Merge pull request 'dev→main: purpose-built mobile layout for subscriptions hub' (#65) from dev into main bvandeusen 2026-06-04 13:43:56 -04:00
  • 928e3037f0 fix(ui): purpose-built mobile layout for subscriptions hub bvandeusen 2026-06-04 13:40:25 -04:00
  • ce7b154ae9 Merge pull request 'dev→main: subscriptions table mobile card layout' (#64) from dev into main bvandeusen 2026-06-04 12:56:58 -04:00
  • b08b12eb8f fix(ui): subscriptions table → card layout on mobile bvandeusen 2026-06-04 12:53:40 -04:00
  • 9430a9d9c3 Merge pull request 'dev→main: gallery similarity search (Phase 3) + UI/mobile polish' (#63) from dev into main bvandeusen 2026-06-04 11:21:26 -04:00
  • 4fd6d4cc29 fix(ui): mobile pass 2 — Posts & Subscriptions filter bars bvandeusen 2026-06-04 09:26:56 -04:00
  • 304e8aa878 fix(ui): mobile responsiveness — nav hamburger + primary-path fixes bvandeusen 2026-06-04 09:06:33 -04:00
  • 0497394710 feat(ui): double showcase cadence + filter bar matches TopNav frost bvandeusen 2026-06-04 09:02:21 -04:00
  • 21a73cd1dc feat(gallery): visual 'more like this' UI (Phase 3 frontend) bvandeusen 2026-06-04 08:52:42 -04:00
  • 79cd1234e2 feat(gallery): visual 'more like this' search (Phase 3 backend) bvandeusen 2026-06-04 08:47:43 -04:00
  • 23aee56ce3 Merge pull request 'dev→main: showcase cascade + filter styling + DB maintenance + gallery filter Phase 2 + showcase decode-gate + CI perf' (#62) from dev into main bvandeusen 2026-06-04 08:27:47 -04:00
  • 3f6ea601f8 perf(ci): collapse the 3 integration shards into one job bvandeusen 2026-06-04 08:17:50 -04:00
  • 6a25db4b8b perf(ci): relax Postgres durability in integration shards (fsync off) bvandeusen 2026-06-04 07:45:21 -04:00
  • c802b26406 perf(ci): reuse a session-scoped engine for the per-test DB reset bvandeusen 2026-06-04 07:35:28 -04:00
  • 3a4270e6be fix(showcase): reveal each tile only once its image is fully decoded bvandeusen 2026-06-04 07:19:44 -04:00
  • ae569c0f9a fix(gallery): ruff C408 (dict literal) + panel auto-open on deep-link bvandeusen 2026-06-04 07:14:15 -04:00
  • 1adc47f59c feat(gallery): faceted refine panel UI (Phase 2 frontend) bvandeusen 2026-06-04 07:06:51 -04:00
  • 9fe534139a feat(gallery): faceted filter params + /facets counts endpoint (Phase 2 backend) bvandeusen 2026-06-04 07:01:07 -04:00
  • 16e0268da7 fix(modal): next arrow clears metadata panel + arrows work in empty tag input bvandeusen 2026-06-04 06:37:16 -04:00
  • 1f4ce8513b style: ruff I001 — keep _sync_engine as-import on its own line (combine-as-imports=false) bvandeusen 2026-06-04 00:59:26 -04:00
  • 5a116ca9d0 style: ruff I001 — aliased _sync_session_factory sorts before get_sync_engine bvandeusen 2026-06-04 00:55:18 -04:00
  • ef3ee5aceb feat(maintenance): DB maintenance UI card + fix ruff I001 bvandeusen 2026-06-04 00:52:36 -04:00
  • 914033db29 feat(maintenance): scheduled + manual DB VACUUM ANALYZE + bloat readout bvandeusen 2026-06-04 00:49:39 -04:00
  • d495605c12 style(gallery): hazey filter bar attached to the TopNav bvandeusen 2026-06-04 00:40:32 -04:00
  • 76d8ad42a8 fix(showcase): buffered producer/consumer for a steady cascade bvandeusen 2026-06-04 00:35:25 -04:00
  • 711abea567 Merge pull request 'Gallery speed + fandom editing + filters + pinned filter bar' (#61) from dev into main bvandeusen 2026-06-04 00:07:19 -04:00