This website requires JavaScript.
7b2a2051e9
refactor(services): shared race-safe get_or_create helper (DRY backend sweep)
bvandeusen and Claude Opus 4.8
2026-06-09 23:46:01 -04:00
9deebfa133
refactor(ui): CardHeading primitive for icon+title card/dialog headings (DRY pattern sweep)
bvandeusen and Claude Opus 4.8
2026-06-09 23:22:01 -04:00
4854d74c5a
refactor(ui): SampleNameGrid primitive for maintenance-card previews (DRY pattern sweep)
bvandeusen and Claude Opus 4.8
2026-06-09 23:08:15 -04:00
409bbd43db
feat(series): rename a series from the management view
bvandeusen and Claude Opus 4.8
2026-06-09 23:05:01 -04:00
4e83b4225a
refactor(ui): single global .fc-muted token (DRY pattern sweep)
bvandeusen and Claude Opus 4.8
2026-06-09 22:42:26 -04:00
c774042a85
refactor(ui): consolidate 7 hand-rolled kebabs into one KebabMenu (DRY pattern sweep)
bvandeusen and Claude Opus 4.8
2026-06-09 22:25:11 -04:00
d5d23a92f2
feat(nav): consolidate Posts/Artists/Tags into a Browse hub
bvandeusen and Claude Opus 4.8
2026-06-09 21:18:02 -04:00
2bfc9936a1
Merge pull request 'UI batch: tagging flow, series browse, fandom chips, nav' (#89 ) from dev into main
bvandeusen
2026-06-09 20:48:19 -04:00
a50902071a
feat(nav): pin Settings to the right edge, separated from content nav
bvandeusen and Claude Opus 4.8
2026-06-09 20:37:50 -04:00
c999c64cbe
feat(suggestions): tag-input dropdown searches the full prediction set
bvandeusen and Claude Opus 4.8
2026-06-09 20:22:24 -04:00
978f49adcc
feat(tags): show a character's fandom on its chip (truncated)
bvandeusen and Claude Opus 4.8
2026-06-09 19:35:59 -04:00
e4cebf70d1
feat(series): browse search + per-card kebab (rename/delete)
bvandeusen and Claude Opus 4.8
2026-06-09 18:56:45 -04:00
4958e8f7d4
feat(modal): return focus to tag input after accepting a suggestion
bvandeusen and Claude Opus 4.8
2026-06-08 21:59:08 -04:00
4c6406ee18
Merge pull request 'fix(posts): link duplicate items to every post + prune bare shells' (#88 ) from dev into main
bvandeusen
2026-06-08 19:42:31 -04:00
a8f624a0f1
fix(posts): link duplicate items to every post + prune bare shells
bvandeusen and Claude Opus 4.8
2026-06-08 19:28:33 -04:00
bb47e80b3e
Merge pull request 'fix(cleanup): unused-tags delete must use the same predicate as the preview' (#87 ) from dev into main
bvandeusen
2026-06-08 18:17:49 -04:00
df76bc0f58
test(cleanup): fix prune-spares-fandom fixture — used character keeps fandom alive
bvandeusen and Claude Opus 4.8
2026-06-08 18:09:27 -04:00
de4ef6ae74
fix(cleanup): live prune uses the same predicate as the preview (data loss)
bvandeusen and Claude Opus 4.8
2026-06-08 18:04:02 -04:00
dc1083b5e0
Merge pull request 'Unused-tag fandom fix + ML-worker logging/tuning + unified dropdown Enter' (#86 ) from dev into main
bvandeusen
2026-06-08 17:27:55 -04:00
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