fc3g(ext): bootstrap extension/ skeleton (manifest, package, icon, README)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
node_modules/
|
||||||
|
web-ext-artifacts/
|
||||||
|
.web-ext-id
|
||||||
|
.amo-upload-uuid
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# FabledCurator Firefox Extension
|
||||||
|
|
||||||
|
Self-hosted Firefox extension that pushes session cookies from supported
|
||||||
|
platforms (Patreon, SubscribeStar, Hentai-Foundry, Discord, Pixiv,
|
||||||
|
DeviantArt) 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.
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" width="96" height="96">
|
||||||
|
<rect width="96" height="96" rx="16" fill="#14171A"/>
|
||||||
|
<text x="48" y="62" font-family="Georgia, serif" font-size="56" font-weight="500"
|
||||||
|
fill="#F4BA7A" text-anchor="middle">F</text>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 284 B |
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"manifest_version": 3,
|
||||||
|
"name": "FabledCurator",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Export cookies from supported platforms to FabledCurator and add creators as sources in one click.",
|
||||||
|
|
||||||
|
"browser_specific_settings": {
|
||||||
|
"gecko": {
|
||||||
|
"id": "fabledcurator@fabledsword.com",
|
||||||
|
"strict_min_version": "115.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"permissions": [
|
||||||
|
"cookies",
|
||||||
|
"storage",
|
||||||
|
"tabs",
|
||||||
|
"activeTab",
|
||||||
|
"webRequest",
|
||||||
|
"webRequestBlocking"
|
||||||
|
],
|
||||||
|
|
||||||
|
"host_permissions": [
|
||||||
|
"*://*.patreon.com/*",
|
||||||
|
"*://*.subscribestar.com/*",
|
||||||
|
"*://*.subscribestar.adult/*",
|
||||||
|
"*://*.hentai-foundry.com/*",
|
||||||
|
"*://*.discord.com/*",
|
||||||
|
"*://*.pixiv.net/*",
|
||||||
|
"*://*.deviantart.com/*",
|
||||||
|
"*://app-api.pixiv.net/*",
|
||||||
|
"*://oauth.secure.pixiv.net/*",
|
||||||
|
"*://*/*"
|
||||||
|
],
|
||||||
|
|
||||||
|
"action": {
|
||||||
|
"default_popup": "popup/popup.html",
|
||||||
|
"default_icon": "icons/icon.svg",
|
||||||
|
"default_title": "FabledCurator"
|
||||||
|
},
|
||||||
|
|
||||||
|
"background": {
|
||||||
|
"scripts": ["lib/platforms.js", "lib/cookies.js", "lib/api.js", "background/background.js"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"options_ui": {
|
||||||
|
"page": "options/options.html",
|
||||||
|
"browser_style": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
|
"matches": [
|
||||||
|
"*://*.patreon.com/*",
|
||||||
|
"*://*.subscribestar.com/*",
|
||||||
|
"*://*.subscribestar.adult/*",
|
||||||
|
"*://*.hentai-foundry.com/*",
|
||||||
|
"*://*.deviantart.com/*",
|
||||||
|
"*://*.pixiv.net/*"
|
||||||
|
],
|
||||||
|
"js": ["lib/platforms.js", "content/content-script.js"],
|
||||||
|
"css": ["content/content-script.css"],
|
||||||
|
"run_at": "document_idle"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"icons": {
|
||||||
|
"48": "icons/icon.svg",
|
||||||
|
"96": "icons/icon.svg"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "fabledcurator-extension",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "Firefox extension for FabledCurator",
|
||||||
|
"scripts": {
|
||||||
|
"lint": "web-ext lint --source-dir=.",
|
||||||
|
"start": "web-ext run --source-dir=. --firefox=firefox",
|
||||||
|
"build": "web-ext build --source-dir=. --overwrite-dest",
|
||||||
|
"sign": "web-ext sign --source-dir=. --channel=unlisted --api-key=$WEB_EXT_API_KEY --api-secret=$WEB_EXT_API_SECRET"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"web-ext": "^8.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
module.exports = {
|
||||||
|
sourceDir: '.',
|
||||||
|
artifactsDir: './web-ext-artifacts',
|
||||||
|
ignoreFiles: [
|
||||||
|
'package.json',
|
||||||
|
'package-lock.json',
|
||||||
|
'web-ext-config.cjs',
|
||||||
|
'web-ext-artifacts',
|
||||||
|
'node_modules',
|
||||||
|
'README.md',
|
||||||
|
'.gitignore',
|
||||||
|
],
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user