This website requires JavaScript.
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