4.5 KiB
TODO
Durable backlog. Agents append here instead of leaving TODO comments in source.
Small, specific, independently actionable. Remove only when actually done.
Design: specs/001-webtoons-covers.md.
Now
- Write the implementation plan with
superpowers:writing-plansintodocs/plans/001-webtoons-covers.md, and show it to the user before implementing (the user asked for this in the design session).
Next (rough order; the plan will refine it)
-
Scaffold with Bun.
package.json,bun.lock, TypeScript,.gitignore(already exists). Scripts for test, typecheck, build (page, Worker, userscript). Then fill the Commands inAGENTS.mdand the Verified commands indocs/PERMISSIONS.mdfrom runs that worked. -
Capture fixtures from real responses: Webtoons pages (Tower of God, crow-time canvas, title_no 6065 mature, a 2015 Wayback snapshot), Wayback CDX output, MangaBaka
series,links,imagesfor 9999, and a snapshot/preview if a token is available. -
Re-download the OpenAPI spec from
https://mangabaka.org/api.json; derivecore/mangabaka/types.ts(SaveSubmissionBody, series-images snapshot and preview,V1_Series_Cover_Image). -
core/: model, transport (rate limit, retries, timeouts, token scoping), links, sources + registry, webtoons (urls, parse, index), history/wayback, images, covers, mangabaka client, hosting (server, litterbox, catbox, direct), seed. -
server/:app.ts(assets,/api/config,/api/fetchallowlist,/api/uploadstore|catbox,/covers/*, per-IP rate limit),Storage+ folder storage with a daily 30-day sweep and a total size cap (507 when full), entrybun.ts. -
web/: two-link form, review cards, host picker with lifetimes, rehost, copy, token flow (preview → confirm → save). -
userscript/: panel on mangabaka.org series pages,GM_xmlhttpRequesttransport, token inGM_setValue, direct litterbox/catbox uploads, optional server URL, build tombseed.user.jswith metadata banner. -
Manual smoke test against Tower of God (9999 / title_no 95).
-
Update README,
docs/ARCHITECTURE.mdandPRODUCT.md/DESIGN.mdto match reality. -
Userscript: fill MangaBaka's cover form for users without a token (spec §4.9) — needs the logged-in form's markup and a check that it accepts programmatic input (spec §7.5). The panel offers copy-and-paste instead.
Verify with real services (once possible)
- Which of our servers and domain hosts it (
MBSEED_PUBLIC_URL); where the covers folder lives. - Does catbox accept uploads from our server?
- Does MangaBaka accept our storage URLs, litterbox/catbox URLs, and
swebtoon-phinf.pstatic.net(direct)? - Does MangaBaka copy images on submission or on approval?
- Is "main cover" really
is_default: true? Ask on the MangaBaka Discord if unclear. - Where are personal access tokens created in the MangaBaka UI? Add it to the README.
- Does the MangaBaka cover form accept fields filled by a userscript?
Someday
- S3-compatible bucket as a
Storageoption, if a single server's disk stops being enough. - Password gate (spec §4.11) — only if the open site gets abused or traffic grows too large.
- Cloudflare Workers entry (
server/worker.ts, R2 binding). If added: Workers serve static assets before the Worker unlessrun_worker_firstis set — needed for the gate to cover them. - Bun CLI on the same core.
- More sources: Tapas, Tappytoon, Lezhin, Manta.
- Following Webtoons language editions of the same series.
- Edits beyond covers (series fields, links), via other submission resources.
- CI: check
AGENTS.md,CLAUDE.md,GEMINI.mdand thedocs/paths exist; fail ifAGENTS.mdexceeds 150 lines.
Recurring
- Maintain
AGENTS.md:- Add a rule only in response to a real failure. When an agent repeatedly gets something wrong, that is a gap; add one line, ideally with a code example. Do not pre-empt hypothetical mistakes.
- Update in the same PR as the convention change. A stale rules file is worse than none — it actively misleads.
- Prune quarterly. Delete rules whose convention has changed or whose mistake no longer occurs.
- Optional, cheap validation: run the same task twice in clean sessions, with and without the file, and compare steps and token use.
Known issues
- None yet (no code).