This website requires JavaScript.
408fcd488a
refactor(ui): unify confirm-dropdown Enter behavior via useAcceptOnEnter
bvandeusen
2026-06-08 08:59:55 -04:00
f2fbe2ae6e
tweak(ml): default video frame samples 10 to 6
bvandeusen
2026-06-08 08:52:39 -04:00
b1778ca9f2
obs(ml): tag_and_embed logs file + phase + timing; failures name them
bvandeusen and Claude Opus 4.8
2026-06-08 08:49:37 -04:00
fe0ed52595
test: drop unused binding in find_unused_tags test (ruff F841)
bvandeusen and Claude Opus 4.8
2026-06-08 08:45:36 -04:00
fb05c5eef7
fix(cleanup): don't flag a character's fandom (or a chaptered series) as unused
bvandeusen and Claude Opus 4.8
2026-06-08 08:41:27 -04:00
e46893fefd
Merge pull request 'Migration lock safety + remove the merge's full-table scan (the real 0040-hang fix)' (#85 ) from dev into main
bvandeusen
2026-06-08 01:03:06 -04:00
e90e6b2c34
perf(tags): protective-alias uses tag kind, drops the image_record full scan
bvandeusen and Claude Opus 4.8
2026-06-08 00:15:40 -04:00
8e98e79968
fix(alembic): lock_timeout on migrations, drop the advisory lock
bvandeusen and Claude Opus 4.8
2026-06-07 23:58:14 -04:00
0666e15211
Merge pull request 'Series manage redesign (FC-6.4) + migration/normalize hardening + UX fixes' (#84 ) from dev into main
bvandeusen
2026-06-07 21:17:57 -04:00
a00a2786e3
fix(tags): normalize task fails fast on lock + logs progress
bvandeusen and Claude Opus 4.8
2026-06-07 21:02:39 -04:00
9770dd3474
fix(tags): rename-onto-existing in the image modal now merges, not errors
bvandeusen and Claude Opus 4.8
2026-06-07 20:56:45 -04:00
7daf90f41e
fix(allowlist): lower default auto-apply threshold 0.95 → 0.90
bvandeusen and Claude Opus 4.8
2026-06-07 20:48:43 -04:00
aaa375654b
fix(fandom): match change-fandom modal focus + Enter to FandomPicker
bvandeusen and Claude Opus 4.8
2026-06-07 20:37:02 -04:00
5bc8ef65ad
chore: gitignore the .superpowers working dir
bvandeusen and Claude Opus 4.8
2026-06-07 20:29:10 -04:00
978959bdc4
feat(series): manage-view redesign — big pages, editable Part #, slide-over picker (FC-6.4)
bvandeusen and Claude Opus 4.8
2026-06-07 20:29:10 -04:00
7309d1d6d4
fix(alembic): serialize concurrent migrators with an advisory lock
bvandeusen and Claude Opus 4.8
2026-06-07 19:59:45 -04:00
747390631d
Merge pull request 'FC-6 series authoring + backup/NFS hardening + UX fixes' (#83 ) from dev into main
bvandeusen
2026-06-07 19:31:04 -04:00
daaa7543a8
fix(backup,tags): unwedge backups on NFS (#739 ) + tag-standardize "0 groups" (#740 )
bvandeusen and Claude Opus 4.8
2026-06-07 19:20:16 -04:00
19a91a1641
feat(series): Suggestions tab + matcher controls — frontend (FC-6.3)
bvandeusen and Claude Opus 4.8
2026-06-07 19:02:19 -04:00
c0fd80e694
feat(series): assisted-continuation matcher + suggestion queue — backend (FC-6.3)
bvandeusen and Claude Opus 4.8
2026-06-07 18:58:18 -04:00
9e262cc5f0
feat(series): Add-to-series control + Series browse view + nav (FC-6.2)
bvandeusen and Claude Opus 4.8
2026-06-07 18:38:37 -04:00
db490e92df
feat(series): post→series flows + browse list — backend (FC-6.2)
bvandeusen and Claude Opus 4.8
2026-06-07 18:34:11 -04:00
8ad40da145
feat(series): chapter-aware manage view + reader — frontend (FC-6.1)
bvandeusen and Claude Opus 4.8
2026-06-07 16:43:10 -04:00
1804a2c622
feat(series): chapter layer over series_page — backend (FC-6.1)
bvandeusen and Claude Opus 4.8
2026-06-07 16:31:55 -04:00
43b02d79a4
fix(infra): size Postgres /dev/shm via tmpfs mount (shm_size ignored under Swarm)
bvandeusen and Claude Opus 4.8
2026-06-07 16:22:09 -04:00
677317244e
fix(modal): Enter accepts the fandom instead of reopening the dropdown
bvandeusen and Claude Opus 4.8
2026-06-07 12:38:33 -04:00
a92817677d
fix(router): reset tab title on navigation (artist name stuck on other tabs)
bvandeusen and Claude Opus 4.8
2026-06-07 12:34:28 -04:00
e0d2a20588
Merge pull request 'Modal focus/keyboard polish, Camie-in-autocomplete, re-extract self-resume' (#82 ) from dev into main
bvandeusen
2026-06-07 12:17:43 -04:00
394c7dcd67
test(maintenance): patterned images for re-extract resume test
bvandeusen and Claude Opus 4.8
2026-06-07 12:08:02 -04:00
a73d9327d8
fix(maintenance): time-box + self-resume the archive re-extract task
bvandeusen and Claude Opus 4.8
2026-06-07 12:03:13 -04:00
5201fab088
feat(modal): surface ML suggestions inline in the tag autocomplete
bvandeusen and Claude Opus 4.8
2026-06-07 11:56:50 -04:00
b79708524e
fix(modal): keyboard focus flow for the Pick-a-fandom dialog
bvandeusen and Claude Opus 4.8
2026-06-07 11:49:28 -04:00
1d84f67418
Merge pull request 'Modal: large centered spinner + kebab z-index fix' (#81 ) from dev into main
bvandeusen
2026-06-07 10:57:00 -04:00
1226d3b23a
fix(modal): kebab menus render BEHIND the modal — bump z-index above it
bvandeusen and Claude Opus 4.8
2026-06-07 10:52:48 -04:00
6c5dbfe4a0
feat(modal): large centered loading spinner
bvandeusen and Claude Opus 4.8
2026-06-07 10:42:05 -04:00
91265df3d6
Merge pull request 'Maintenance-queue health + modal/tagging keyboard pass' (#80 ) from dev into main
bvandeusen
2026-06-07 10:31:01 -04:00
68cda6114d
chore(compose): maintenance-long needs only /images; drop dead /downloads mounts
bvandeusen and Claude Opus 4.8
2026-06-07 10:26:36 -04:00
c217009425
feat(maintenance): dedicated maintenance_long lane for long one-shot tasks
bvandeusen and Claude Opus 4.8
2026-06-07 09:00:03 -04:00
f4f49d407e
fix(tags): move _NORMALIZE_CHUNK_SECONDS above the decorator (syntax error)
bvandeusen and Claude Opus 4.8
2026-06-07 00:10:03 -04:00
a183be7e6e
fix(infra): bump Postgres shm_size (vacuum DiskFull) + raise DB-backup time limit
bvandeusen and Claude Opus 4.8
2026-06-07 00:08:19 -04:00
f2e9ae07dc
fix(audit): chunk + self-resume library scans (stop the 2h queue-hog timeouts)
bvandeusen and Claude Opus 4.8
2026-06-07 00:08:19 -04:00
d9d502a60d
fix(tags): time-box + self-resume the tag standardization (stop the 40-min timeout)
bvandeusen and Claude Opus 4.8
2026-06-06 23:57:06 -04:00
1819caaf5b
feat(modal): keyboard-friendly tagging — fandom dialogs, Tab-accept, jump hotkey, cheatsheet
bvandeusen and Claude Opus 4.8
2026-06-06 23:46:46 -04:00
22dc516dc7
fix(modal): tag-chip kebab + ESC-after-accept + autocomplete scroll-into-view
bvandeusen and Claude Opus 4.8
2026-06-06 23:42:30 -04:00
11acdb0322
Merge pull request 'Patreon: a missing media file_name is a fallback, not API drift' (#79 ) from dev into main
bvandeusen
2026-06-06 23:14:25 -04:00
4c42a15fa1
fix(patreon): a missing media file_name is a URL-basename fallback, not API drift
bvandeusen and Claude Opus 4.8
2026-06-06 23:10:46 -04:00
2eb9fd5dd0
Merge pull request 'Patreon: enforce the backfill time-box mid-post (stop soft-limit overruns)' (#78 ) from dev into main
bvandeusen
2026-06-06 23:00:29 -04:00
14c4dd1ea0
test(patreon): adjust deterministic clock for the new per-media should_stop read
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
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 and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 21:22:32 -04:00
87c7318125
feat(downloads): serialize same-platform downloads (Patreon concurrency cap)
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 21:00:47 -04:00
b7d07324ee
fix(subs): stop the lock/reload on source actions + regroup the row buttons
bvandeusen and Claude Opus 4.8
2026-06-06 20:48:01 -04:00
c65da42593
fix(patreon): handle the /cw/ creator-URL prefix in vanity extraction
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 19:01:22 -04:00
a559fabdd5
feat(patreon): scrape creator-page HTML as a campaign-id resolution fallback
bvandeusen and Claude Opus 4.8
2026-06-06 18:57:39 -04:00
711fd2bb75
style: drop aliased cross-module import (I001) — use a local _CAMPAIGNS_API constant
bvandeusen and Claude Opus 4.8
2026-06-06 17:46:09 -04:00
3556a54260
feat(patreon): surface source URL + vanity in campaign-id resolution errors
bvandeusen and Claude Opus 4.8
2026-06-06 17:39:54 -04:00
df2310bc70
fix(tags): preserve acronym casing in tag normalization (DC, NSFW)
bvandeusen and Claude Opus 4.8
2026-06-06 17:39:54 -04:00
9374f63953
fix(posts): post-card thumbnail strip spans the full hero width
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 16:32:24 -04:00
3c89223dcb
feat(tags): retro-normalize existing tags to Title Case + merge case-collisions (plan #714 )
bvandeusen and Claude Opus 4.8
2026-06-06 16:28:34 -04:00
23f452021f
fix(tags): Title-Case operator-entered tags at create endpoint only (plan #701 )
bvandeusen and Claude Opus 4.8
2026-06-06 15:57:29 -04:00
62cca64dce
feat(downloads): live per-file progress on running events — #709
bvandeusen and Claude Opus 4.8
2026-06-06 15:48:31 -04:00
89dfa42e18
fix(showcase): over-sample + random-order to break near-dup clustering — #699
bvandeusen and Claude Opus 4.8
2026-06-06 15:44:04 -04:00
2b69540ecc
feat(tags): Title-Case normalization on create/rename — #701 (core)
bvandeusen and Claude Opus 4.8
2026-06-06 15:42:20 -04:00
4fe53cdf6b
fix(modal/tags): fandom list, modal kebab, ESC-after-accept — #712 #711 #700
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 14:51:22 -04:00
a497104661
feat(maintenance): re-extract archive attachments + link to post — #713 part 2
bvandeusen and Claude Opus 4.8
2026-06-06 14:43:26 -04:00
5bb25245a5
fix(archive): magic-byte archive detection so mis-named archives extract — #713 part 1
bvandeusen and Claude Opus 4.8
2026-06-06 14:33:24 -04:00
911d535f56
fix(artists): card preview dead-space + empty-state flicker on first load
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-06 12:18:08 -04:00
cd43439401
feat(ingester): graceful mid-walk cancel on Stop — B4 cancel (plan #708 )
bvandeusen and Claude Opus 4.8
2026-06-06 12:10:24 -04:00
bde19944db
test(patreon): fix _BoomSession stub for the B5 headers kwarg
bvandeusen and Claude Opus 4.8
2026-06-06 11:41:48 -04:00
402086c34c
feat(patreon): resume partial media downloads via HTTP Range — B5 (plan #708 )
bvandeusen and Claude Opus 4.8
2026-06-06 11:38:11 -04:00
fb7383eea7
feat(downloads): platform cooldown honors server Retry-After — B1 (plan #708 )
bvandeusen and Claude Opus 4.8
2026-06-06 11:34:37 -04:00
e47fa0cf4b
refactor(downloads): unify phase-2 dispatch in download_backends — A5 (plan #707 )
bvandeusen and Claude Opus 4.8
2026-06-06 11:22:48 -04:00
b211900390
refactor(downloads): DRY the ingester/gallery-dl seam — A1–A4 (plan #707 )
bvandeusen and Claude Opus 4.8
2026-06-06 11:11:25 -04:00
697a86d31c
fix(ingester): close #5 within-chunk live posts + #8 video transient retry
bvandeusen and Claude Opus 4.8
2026-06-06 09:56:26 -04:00
9a2cd569c3
refactor(ingest): extract platform-agnostic Ingester core — roadmap #9 (plan #706 )
bvandeusen and Claude Opus 4.8
2026-06-06 00:24:23 -04:00
d592e0ca02
feat(patreon): within-pass transient retry for media GETs — #8 (was overstated as done)
bvandeusen and Claude Opus 4.8
2026-06-06 00:15:48 -04:00
7a872a3619
feat(patreon): dead-letter ledger for permanently-failing media — #705 step 2 (#7 )
bvandeusen and Claude Opus 4.8
2026-06-06 00:04:24 -04:00
4bb11ce7dc
feat(patreon): incremental cursor checkpoint mid-walk — #705 step 1 (#6 )
bvandeusen and Claude Opus 4.8
2026-06-05 23:58:16 -04:00
e42a86d995
test(patreon): fix #704 — quarantine status + budget-cut cursor assertions
bvandeusen and Claude Opus 4.8
2026-06-05 23:46:02 -04:00
b2e59e7e17
feat(subscriptions): live posts-processed progress on backfill/recovery — #704 step 2
bvandeusen and Claude Opus 4.8
2026-06-05 23:43:23 -04:00
e53f8959af
feat(patreon): structured ingester results + quarantine surfacing — #704 step 1
bvandeusen and Claude Opus 4.8
2026-06-05 23:39:28 -04:00
5b615b7ded
feat(sources): pre-flight credential verify on backfill/recovery arm — #703 step 2
bvandeusen and Claude Opus 4.8
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 and Claude Opus 4.8
2026-06-05 23:21:05 -04:00
3b2f7a41c3
feat(patreon): ingester rate-limit resilience — #703 step 1
bvandeusen and Claude Opus 4.8
2026-06-05 23:13:46 -04:00
218bfebb92
feat(downloads): native Patreon verify + uniform backend dispatch (plan #697 )
bvandeusen and Claude Opus 4.8
2026-06-05 22:49:43 -04:00
ec43e823e1
feat(patreon): recovery UI + gallery-dl cutover — build step 5 (plan #697 )
bvandeusen and Claude Opus 4.8
2026-06-05 22:18:03 -04:00
682beafbc5
feat(patreon): drift detection + error categorization — build step 4 (plan #697 )
bvandeusen and Claude Opus 4.8
2026-06-05 21:56:58 -04:00
96c30eba13
feat(patreon): phase-2 ingester integration — build step 3 (plan #697 )
bvandeusen and Claude Opus 4.8
2026-06-05 21:38:42 -04:00