This website requires JavaScript.
Explore
Help
Register
Sign In
bvandeusen
/
FabledCurator
Watch
1
Star
0
Fork
0
Code
Issues
2
Pull Requests
Actions
Packages
Projects
Releases
12
Wiki
Activity
Files
896e4f248c1443ad553aec6b7a2fbbb7e376fd8a
FabledCurator
/
backend
/
app
/
services
T
History
bvandeusen
896e4f248c
CI / lint (push)
Successful in 3s
Details
CI / frontend-build (push)
Successful in 22s
Details
CI / backend-lint-and-test (push)
Successful in 42s
Details
CI / integration (push)
Successful in 3m20s
Details
style(importer): fix ruff import ordering for link_extract
2026-06-14 13:19:51 -04:00
..
audits
feat(fc-cleanup): audits/single_color.py + tests — Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 01:18:38 -04:00
ml
fix(aliases): store modal alias under raw model key + make aliases visible/manageable
2026-06-12 13:05:58 -04:00
platforms
feat(download): tick/backfill modes + partial-success classifier (plan
#544
)
2026-06-01 18:23:28 -04:00
__init__.py
feat(fc2a): add TagService — find-or-create, autocomplete, image association
2026-05-14 12:04:48 -04:00
archive_extractor.py
fix(archive): magic-byte archive detection so mis-named archives extract —
#713
part 1
2026-06-06 14:33:24 -04:00
artist_directory_service.py
feat(artist): "new since last visit" badge + banner
2026-06-03 15:27:11 -04:00
artist_service.py
refactor(services): shared pagination cursor (DRY sweep)
2026-06-10 00:10:57 -04:00
attachment_store.py
feat(attachments): sha-addressed AttachmentStore
2026-05-19 11:11:07 -04:00
backup_service.py
fix(backup): compressed -Fc dumps + pg_restore; reconcile subprocess timeouts (
#739
)
2026-06-10 14:29:17 -04:00
bulk_tag_service.py
feat(bulk): BulkTagService (common_tags/bulk_add/bulk_remove) + 3 image bulk-tag routes
2026-05-16 18:02:01 -04:00
cleanup_service.py
feat(ml): drop image_record.tagger_predictions — image_prediction is sole store (
#768
step 3)
2026-06-11 18:52:33 -04:00
credential_crypto.py
fix(audit-g5c): refuse silent Fernet key regeneration on partial restore
2026-06-02 17:04:27 -04:00
credential_service.py
feat(credentials+downloads): real credential Verify button + live download-activity polling
2026-05-28 07:52:20 -04:00
db_helpers.py
fix(services): PEP 695 type params for get_or_create (ruff UP047)
2026-06-09 23:50:59 -04:00
download_backends.py
style: drop aliased cross-module import (I001) — use a local _CAMPAIGNS_API constant
2026-06-06 17:46:09 -04:00
download_service.py
fix(download): tolerate dl_result without post_record_paths
2026-06-14 12:50:34 -04:00
extension_service.py
refactor(services): shared race-safe get_or_create helper (DRY backend sweep)
2026-06-09 23:46:01 -04:00
file_validator.py
refactor(downloads): DRY the ingester/gallery-dl seam — A1–A4 (plan
#707
)
2026-06-06 11:11:25 -04:00
gallery_dl.py
feat(patreon): capture media-less/text-only posts (post-only records)
2026-06-14 12:44:46 -04:00
gallery_service.py
fix(images): percent-encode original-image URLs ('#' in paths 404'd)
2026-06-12 00:36:44 -04:00
importer.py
style(importer): fix ruff import ordering for link_extract
2026-06-14 13:19:51 -04:00
ingest_core.py
feat(patreon): capture media-less/text-only posts (post-only records)
2026-06-14 12:44:46 -04:00
link_extract.py
feat(posts): extract + record external file-host links (Phase 3)
2026-06-14 13:15:36 -04:00
page_number_parser.py
feat(series): post→series flows + browse list — backend (FC-6.2)
2026-06-07 18:34:11 -04:00
pagination.py
refactor(services): shared pagination cursor (DRY sweep)
2026-06-10 00:10:57 -04:00
patreon_client.py
feat(patreon): capture media-less/text-only posts (post-only records)
2026-06-14 12:44:46 -04:00
patreon_downloader.py
feat(patreon): capture media-less/text-only posts (post-only records)
2026-06-14 12:44:46 -04:00
patreon_ingester.py
feat(patreon): capture full post body via adaptive detail-fetch
2026-06-14 12:29:06 -04:00
patreon_resolver.py
feat(patreon): resolve the creator's campaign from a single-post URL
2026-06-06 21:32:15 -04:00
platform_lock.py
feat(downloads): serialize same-platform downloads (Patreon concurrency cap)
2026-06-06 21:22:32 -04:00
post_feed_service.py
feat(posts): extract + record external file-host links (Phase 3)
2026-06-14 13:15:36 -04:00
provenance_service.py
feat(model): nullable Post.source_id + denormalized Post.artist_id; retire sidecar synthetics
2026-06-01 14:17:52 -04:00
refetch_service.py
feat(download): tick/backfill modes + partial-success classifier (plan
#544
)
2026-06-01 18:23:28 -04:00
scheduler_service.py
feat(downloads): bulk retry respects cooldown; single-source RETRY overrides
2026-05-30 23:15:07 -04:00
series_match_service.py
feat(series): flat series sequence + cosmetic chapter dividers (
#789
Phase 1)
2026-06-11 21:30:01 -04:00
series_service.py
fix(images): percent-encode original-image URLs ('#' in paths 404'd)
2026-06-12 00:36:44 -04:00
showcase_service.py
fix(showcase): over-sample + random-order to break near-dup clustering —
#699
2026-06-06 15:44:04 -04:00
source_service.py
feat(subscriptions): live posts-processed progress on backfill/recovery —
#704
step 2
2026-06-05 23:43:23 -04:00
tag_directory_service.py
fix(thumbnails): derive URL from stored thumbnail_path, not (sha256, mime)
2026-05-30 16:55:38 -04:00
tag_query.py
refactor(tags): shared tag_query for fandom self-join + serialization (DRY sweep)
2026-06-10 00:19:17 -04:00
tag_service.py
feat(series): flat series sequence + cosmetic chapter dividers (
#789
Phase 1)
2026-06-11 21:30:01 -04:00
thumbnailer.py
feat(fc2a): add Thumbnailer service
2026-05-14 12:05:19 -04:00