This website requires JavaScript.
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
bvandeusen and Claude Opus 4.7
2026-05-30 23:15:07 -04:00
e3a7aff7a3
ux(showcase): pipeline fetches in-order, chunk size 3, keep the trickle
bvandeusen and Claude Opus 4.7
2026-05-30 22:52:55 -04:00
9cd6d09e60
ux(showcase): smooth one-at-a-time cadence + earlier infinite-scroll trigger
bvandeusen and Claude 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)
bvandeusen and Claude Opus 4.7
2026-05-30 21:48:51 -04:00
44bb12a93d
fix(thumbnails): derive URL from stored thumbnail_path, not (sha256, mime)
bvandeusen and Claude Opus 4.7
2026-05-30 16:55:38 -04:00
1eefed9ab3
fix(ui): finish showcase store batching (PAGE 60 → 5, INITIAL_BATCHES 12)
bvandeusen and Claude Opus 4.7
2026-05-30 14:53:24 -04:00
adeee64a2d
feat(ui): batch initial showcase/gallery loads into smaller chunks
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-30 14:16:54 -04:00
77f7a23410
feat(scheduler): order due sources by last_checked_at — most overdue first
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-30 11:25:36 -04:00
61ce1ce13c
feat(scheduler): platform-wide cooldown on RATE_LIMITED — burst prevention
bvandeusen and Claude Opus 4.7
2026-05-30 11:01:40 -04:00
d28db32012
fix(download): align gallery-dl subprocess timeout to Celery soft limit
bvandeusen and Claude Opus 4.7
2026-05-30 02:25:04 -04:00
77e9859da3
fix(downloads): rewire MaintenanceMenu to the downloads pipeline
bvandeusen and Claude 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
bvandeusen and Claude 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
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-29 15:34:20 -04:00
8649a13118
refactor(I5): remove one-and-done GS/IR migration tooling
bvandeusen and Claude Opus 4.7
2026-05-29 14:38:59 -04:00
8979e0e377
refactor(I4): extract useInfiniteScroll composable; migrate 6 consumers
bvandeusen and Claude Opus 4.7
2026-05-29 14:03:49 -04:00
00e2608ba1
feat(I3): always-on pipeline status indicator in the top nav
bvandeusen and Claude Opus 4.7
2026-05-29 13:24:11 -04:00
9ab5d709c8
fix(test): DownloadEventRow row shows platform, not artist name
bvandeusen and Claude Opus 4.7
2026-05-29 13:16:33 -04:00
44410db492
test(I2): vitest component smoke tests for high-risk UI
bvandeusen and Claude Opus 4.7
2026-05-29 12:34:58 -04:00
e76aa36a29
ci(I1): dedicated fast-fail ruff lint lane
bvandeusen and Claude Opus 4.7
2026-05-29 12:22:33 -04:00
c95b760294
feat(posts): in-context anchored feed with bidirectional infinite scroll
bvandeusen and Claude Opus 4.7
2026-05-28 21:12:18 -04:00
35fe420701
feat(maintenance): live queue-depth bar under the backfill buttons
bvandeusen and Claude Opus 4.7
2026-05-28 20:03:32 -04:00
9e74c80e2f
feat(downloads): front-and-center "active now" panel with live elapsed timers
bvandeusen and Claude Opus 4.7
2026-05-28 19:36:49 -04:00
c87e8e0932
fix(ui): render absolute timestamps in the viewer's local timezone
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-28 19:01:04 -04:00
972d9014ce
feat(showcase): IR-parity hover animation on masonry thumbnails
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-28 18:18:34 -04:00
42ddac9996
fix(subscriptions): fixed-height hub so only the tab content scrolls
bvandeusen and Claude 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
bvandeusen and Claude 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
bvandeusen and Claude 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)
bvandeusen and Claude Opus 4.7
2026-05-28 14:08:24 -04:00
171c486939
refactor(dry-B2): ImportSettings.load()/load_sync() classmethods for the singleton row
bvandeusen and Claude Opus 4.7
2026-05-28 14:03:26 -04:00
21c1b0a81c
refactor(dry-B4): extract shared async_session_factory for Celery tasks
bvandeusen and Claude Opus 4.7
2026-05-28 13:15:04 -04:00
597c6d48d3
refactor(dry-B1): consolidate duplicated _bad error helper into api/_responses.py
bvandeusen and Claude Opus 4.7
2026-05-28 13:10:04 -04:00
a37dad33c7
refactor(dry-F1): shared useAsyncAction lifecycle helper for stores
bvandeusen and Claude 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
bvandeusen and Claude Opus 4.7
2026-05-28 12:43:08 -04:00
def967a1a8
refactor(dry-S1): hoist app/client test fixtures into conftest
bvandeusen and Claude Opus 4.7
2026-05-28 11:33:05 -04:00
eebc8e2413
refactor(dry-F2): centralize shared UI primitives (relative-time, toast, download-status)
bvandeusen and Claude 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
bvandeusen and Claude 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)
bvandeusen and Claude 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