CI / lint (push) Successful in 3s
CI / extension-version (push) Successful in 4s
CI / frontend-build (push) Successful in 23s
extension / lint (push) Successful in 26s
CI / backend-lint-and-test (push) Successful in 28s
CI / integration (push) Successful in 3m43s
Executes the 2026-07-05 product decision (FC downloaders = art-dedicated
services only), which removed Twitter/X and Bluesky but left deviantart
fully wired for seven weeks — the half-retired state rule 22 exists to
prevent.
Removed: the PlatformInfo module and its registry entry, the gallery-dl
extractor block, extension_service's artist-page pattern, the extension's
PLATFORMS + PLATFORM_ARTIST_PATTERNS entries, its manifest host permission
and content-script match, the frontend icon/colour/label, and the operator-
facing "supported platforms" list that still advertised it.
Two judgment calls, both recorded in migration 0088:
* existing `source` rows are DISABLED, not deleted. The row is the only
record of the artist's DeviantArt URL. Disabling is also required for
correctness rather than tidiness: with the platform unregistered the
download path falls through to gallery-dl, which carries its OWN
deviantart extractor, so an enabled row would have kept downloading
from a dropped platform.
* the `credential` row IS deleted — a live session cookie for a site FC
will never call again.
Adds the invariant whose absence is why manifest.json drifted in the first
place: nothing tied its domain lists back to the platform table. The
extension suite now asserts both directions, plus that no host permission
belongs to an unclaimed domain (`*://*/*` exempted — FC is self-hosted at
an operator-chosen URL the extension cannot enumerate).
Extension version 1.0.10 -> 1.0.11: ci.yml's guard hard-fails a packaged
extension change without a bump. No release is cut — build.yml's
sign-extension job only runs on main.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
# FabledCurator Firefox Extension
|
|
|
|
Self-hosted Firefox extension that pushes session cookies from supported
|
|
platforms (Patreon, SubscribeStar, Hentai-Foundry, Discord, Pixiv)
|
|
into FabledCurator, and lets you add a creator as a Source from their
|
|
page in one click.
|
|
|
|
## Install (operator)
|
|
|
|
The signed XPI is bundled into the FC Docker image. Open FC →
|
|
Settings → Maintenance → Browser extension → click "Install Firefox
|
|
extension". Firefox shows its native install prompt. After installing,
|
|
open the extension's options page (about:addons → FabledCurator →
|
|
Preferences) and paste in the FC URL + extension API key shown on the
|
|
same card.
|
|
|
|
## Develop
|
|
|
|
```sh
|
|
cd extension/
|
|
npm install --no-save # web-ext only
|
|
npm run lint # web-ext lint
|
|
npm run start # launches Firefox with extension loaded
|
|
npm run build # unsigned XPI in web-ext-artifacts/
|
|
```
|
|
|
|
## Smoke checklist (after every release that touches `extension/**`)
|
|
|
|
- [ ] `npm run lint` passes
|
|
- [ ] `npm run start` loads the extension in a clean Firefox profile
|
|
- [ ] Options page accepts FC URL + key, indicator turns green
|
|
- [ ] Cookie export: log into patreon.com, click Patreon card → "X cookies exported"
|
|
- [ ] Discord token: open discord.com, click Discord card → "Token captured"
|
|
- [ ] Pixiv OAuth: click Pixiv card → login redirects, token stored
|
|
- [ ] Add as source: visit patreon.com/<creator>, click floating button → toast
|
|
- [ ] Subscriptions list: popup → "Sources" tab → list renders
|
|
- [ ] Check now: click play icon on source row → no error toast
|
|
|
|
## Release
|
|
|
|
Bump `manifest.json` + `package.json` SemVer (both files) and commit
|
|
under `extension/**`. The `.forgejo/workflows/extension.yml` workflow
|
|
runs `web-ext sign` on main, commits the signed XPI to
|
|
`frontend/public/extension/`, and the next FC server build bundles it
|
|
into the Docker image.
|