Lucas Winther and Claude Opus 5.5
a5700ef607
Merge branch 'feat/kakaopage': KakaoPage source (spec 004), per-host request headers
...
Continuous Integration / lint-and-test (push) Successful in 7s
Continuous Integration / docker-build-and-push (push) Successful in 24s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:31:25 +02:00
Lucas Winther and Claude Opus 5.5
4afd812ea6
docs: remove the finished plan 004 (the spec is the record)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:31:25 +02:00
Lucas Winther and Claude Opus 5.5
f79343ceb9
docs: deferred KakaoPage review minors in TODO
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:31:25 +02:00
Lucas Winther and Claude Opus 5.5
cfa0376bdb
docs: plan 004 ticked
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:23:24 +02:00
Lucas Winther and Claude Opus 5.5
5b2ad867b3
feat: KakaoPage source (웹툰 and 웹소설), registered; correct the Tapas cookie claim
...
KakaoPage is read from its data endpoint (current covers) and from archived
server-rendered pages under both addresses (history). The userscript never sent
Tapas cookies (anonymous: true): docs and the age-check warning now say so.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:20:29 +02:00
Lucas Winther and Claude Opus 5.5
1d48796d05
feat(core): parse KakaoPage's overview answer and archived pages
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:19:07 +02:00
Lucas Winther and Claude Opus 5.5
a47151c785
feat: per-host request headers (Referer for KakaoPage's data endpoint) in the proxy and the userscript
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:18:26 +02:00
Lucas Winther and Claude Opus 5.5
cd3a7b869a
feat(core): KakaoPage links, image URLs and same-series check
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:17:49 +02:00
Lucas Winther and Claude Opus 5.5
899e8a0d54
docs: spec 004 (KakaoPage source), its plan, and captured KakaoPage fixtures
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 14:17:16 +02:00
Lucas Winther and Claude Opus 5.5
80185210ac
Merge branch 'chore/analytics'
...
Continuous Integration / lint-and-test (push) Successful in 6s
Continuous Integration / docker-build-and-push (push) Successful in 24s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:27:11 +02:00
Lucas Winther and Claude Opus 5.5
91d32352e4
chore(web): page views via our Shynet instance (page only, not the userscript panel)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:27:11 +02:00
Lucas Winther and Claude Opus 5.5
e0bd630bb6
Merge branch 'feat/tapas': Tapas source, comics and novels (spec 003)
...
Continuous Integration / lint-and-test (push) Successful in 7s
Continuous Integration / docker-build-and-push (push) Successful in 25s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:12:44 +02:00
Lucas Winther and Claude Opus 5.5
6e97e95ce9
docs: remove the finished plan 003 (the spec is the record)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:12:44 +02:00
Lucas Winther and Claude Opus 5.5
d16bdf7545
docs: deferred Tapas review minors in TODO
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:12:44 +02:00
Lucas Winther and Claude Opus 5.5
bc81fc3282
docs: plan 003 ticked; possible early-click race noted
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 12:09:53 +02:00
Lucas Winther and Claude Opus 5.5
556a365071
feat: Tapas in the copy, userscript @connect and docs
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:56:37 +02:00
Lucas Winther and Claude Opus 5.5
187e85fcaa
feat(core): Tapas source (comics and novels), registered
...
Series by slug, id or episode link; portrait original and banner; age-checked
mature series resolve with a warning and no current covers; Wayback history
keeps only this series' captures.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:56:03 +02:00
Lucas Winther and Claude Opus 5.5
f914c85545
feat(core): parse Tapas series, reader and age-check pages
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:54:52 +02:00
Lucas Winther and Claude Opus 5.5
137402072e
feat(core): Tapas links, image URLs and same-series check
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:54:19 +02:00
Lucas Winther and Claude Opus 5.5
d5c07465da
docs: spec 003 (Tapas source), its plan, and captured Tapas fixtures
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:53:36 +02:00
Lucas Winther and Claude Opus 5.5
a7253940fa
Merge branch 'feat/download-and-history': download covers as a ZIP, history of searches (spec 002)
...
Continuous Integration / lint-and-test (push) Successful in 6s
Continuous Integration / docker-build-and-push (push) Successful in 24s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:47:11 +02:00
Lucas Winther and Claude Opus 5.5
a7ff9ae20d
docs: remove the finished plan 002 (the spec is the record)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:46:05 +02:00
Lucas Winther and Claude Opus 5.5
49c9efa704
docs: history keeper in architecture; deferred review minors in TODO; plan ticked
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:46:05 +02:00
Lucas Winther and Claude Opus 5.5
0d4a1a61fa
fix: final review — cached links keep their expiry; history removal sticks; saves flushed
...
- A link reused from the rehost cache keeps the expiry it was uploaded with, and
links near expiry are uploaded again (a dead litterbox link could be filed).
- History saving moves into HistoryKeeper (tested): removing an entry or clearing
the history cancels a pending save and stops tracking the series on screen;
a pending edit is saved before a new search, before opening another entry and
when the page is hidden; opening an entry no longer re-saves the current one.
- The "couldn't be saved" line sits outside the History list, so it shows even
when the list is empty; a refused IndexedDB says history is off.
- Recently searched bands wrap their meta line instead of cutting the count.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:45:48 +02:00
Lucas Winther and Claude Opus 5.5
1cf31b26cf
fix(web): history focus rings inside the rows, aligned Clear history, no duplicate reopen note; DESIGN.md
...
From the impeccable finish review.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:41:52 +02:00
Lucas Winther and Claude Opus 5.5
2a0e786e6f
docs: download and history in README, architecture, decisions; test refused storage
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:38:34 +02:00
Lucas Winther and Claude Opus 5.5
2da992fd81
feat(web): history of searches on the page
...
Each search is kept in IndexedDB with its covers and edits; the History list and
a shelf of recent series on the start screen reopen it instantly. Searching a
series again keeps the edits of covers that are still there.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:35:06 +02:00
Lucas Winther and Claude Opus 5.5
81ee5f0efa
feat(web): download the selected covers as a ZIP
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:32:51 +02:00
Lucas Winther and Claude Opus 5.5
01c2253051
feat(web): history view helpers
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:31:51 +02:00
Lucas Winther and Claude Opus 5.5
2293d2810f
feat(core): saved searches for the history
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:31:32 +02:00
Lucas Winther and Claude Opus 5.5
414a272d40
feat(core): remember where and until when a cover is hosted
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:30:27 +02:00
Lucas Winther and Claude Opus 5.5
7569c0bb29
feat(core): download bundle of the selected covers
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:29:56 +02:00
Lucas Winther and Claude Opus 5.5
3eb0332c87
feat(core): store-only ZIP writer
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:29:04 +02:00
Lucas Winther and Claude Opus 5.5
d1b8350263
feat(web): old covers from the Wayback Machine start off
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:28:27 +02:00
Lucas Winther and Claude Opus 5.5
e7af273a6d
docs: spec 002 (download covers, history of searches) and its plan
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:28:13 +02:00
Lucas Winther and Claude Opus 5.5
6c9bc62186
Merge branch 'fix/main-band-selection'
...
Continuous Integration / lint-and-test (push) Successful in 6s
Continuous Integration / docker-build-and-push (push) Successful in 24s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:24:27 +02:00
Lucas Winther and Claude Opus 5.5
a68159c958
fix(web): visible text selection on the main-cover band
...
The page-wide highlight is band red at 30%, invisible on the red band, so its
text looked unselectable. Reverse the band's colours for the selection there.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:24:27 +02:00
Lucas Winther and Claude Opus 5.5
9ae2ba3241
Merge branch 'fix/darkreader'
...
Continuous Integration / lint-and-test (push) Successful in 6s
Continuous Integration / docker-build-and-push (push) Successful in 23s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:07:43 +02:00
Lucas Winther and Claude Opus 5.5
a64b2009df
fix(web): use the page's own dark theme when Dark Reader is on
...
Dark Reader marks <html data-darkreader-scheme="dark">; the page then sets
data-theme="dark" and adds <meta name="darkreader-lock"> so Dark Reader
removes its generated styles.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 11:07:43 +02:00
Lucas Winther and Claude Opus 5.5
f6d27aa5cc
Merge branch 'chore/docker': Docker image and Gitea CI
...
Continuous Integration / lint-and-test (push) Successful in 9s
Continuous Integration / docker-build-and-push (push) Successful in 26s
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 10:46:09 +02:00
Lucas Winther and Claude Opus 5.5
ec51b7b5fc
chore: Dockerfile, Gitea CI image build, docker-compose example
...
The server now stops on SIGTERM/SIGINT so docker stop is immediate.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 10:45:13 +02:00
Lucas Winther and Claude Opus 5.5
2282897b4b
Merge branch 'feat/webtoons-covers': mangabaka-seeder v0.1
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:55:11 +02:00
Lucas Winther and Claude Opus 5.5
b2eb621ebb
docs: remove the finished plan (the spec is the record)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:50:01 +02:00
Lucas Winther and Claude Opus 5.5
baa3476b73
fix(server): inert proxy responses, API-call header, image-only uploads; origin check by host
...
From the final review: proxied archived HTML could run on our origin and read a
remembered token; /api/upload accepted any Wayback URL and GIF-prefixed bytes; the
origin check broke behind a TLS proxy; one unreadable snapshot could fail a run.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:49:52 +02:00
Lucas Winther and Claude Opus 5.5
5084f8c557
docs: v0.1 README, architecture and TODO
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:40:39 +02:00
Lucas Winther and Claude Opus 5.5
df7e1bcd42
feat(userscript): Seed covers panel on MangaBaka series pages
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:40:04 +02:00
Lucas Winther and Claude Opus 5.5
162ab4afb0
feat(userscript): GM_xmlhttpRequest transport, GM storage, metadata banner and build
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:38:20 +02:00
Lucas Winther and Claude Opus 5.5
17ecebc4a4
feat(web): Obi Shelf design in a console layout, with a timeline view; record DESIGN.md
...
The user chose the direction over two mockup rounds (samples/mockups, gitignored):
the Obi Shelf's shelf and colours, Graphite Console side panels, the Annotated
Edition timeline as a second view, and warm off-colour grounds in both themes.
Selects look editable; labels are source-neutral. impeccable finish review: ship.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 01:38:00 +02:00
Lucas Winther and Claude Opus 5.5
aea4a1a35c
fix(server): keep connections open 240 s; Bun's 10 s default cut slow Wayback lookups off
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 00:43:47 +02:00
Lucas Winther and Claude Opus 5.5
6f43ef0615
feat(web): working page (two links → review cards → rehost → copy or preview/confirm)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:44:58 +02:00
Lucas Winther and Claude Opus 5.5
9a13111589
feat(server): Bun.serve entry with folder storage and daily sweep; document running it
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:39:53 +02:00
Lucas Winther and Claude Opus 5.5
2debb3d513
feat(server): web-standard handler (config, allowlisted fetch proxy, upload, covers, assets)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:39:19 +02:00
Lucas Winther and Claude Opus 5.5
4197b174b5
feat(server): config from env, trusted client IP, per-IP rate limiter, safe asset paths
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:39:13 +02:00
Lucas Winther and Claude Opus 5.5
9019d99c59
feat(server): size-capped covers folder with a 30-day sweep; in-memory storage for tests
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:39:06 +02:00
Lucas Winther and Claude Opus 5.5
260ae2f5c0
feat(core): shared review session (cards, main cover, rehost, manual text, token flow)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:38:54 +02:00
Lucas Winther and Claude Opus 5.5
0ed017056f
feat(core): compose the pipeline (links → series → current + history → inspect → compare)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:38:48 +02:00
Lucas Winther and Claude Opus 5.5
a6c02cb548
feat(core): image hosts (server, litterbox, catbox, direct) and per-image rehosting
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:38:22 +02:00
Lucas Winther and Claude Opus 5.5
1e548701ca
feat(core): build the cover seed (whole set, one default) and manual-entry text
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:38:15 +02:00
Lucas Winther and Claude Opus 5.5
dd1604ea91
feat(core): MangaBaka client (paginated public reads; snapshot, preview, save for review)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:38:08 +02:00
Lucas Winther and Claude Opus 5.5
7247e096f7
feat(core): Wayback history with 1/3/6/12-month granularity; stop on refusal
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:37:59 +02:00
Lucas Winther and Claude Opus 5.5
8f2109471c
feat(core): merge, dedupe, compare with MangaBaka, pick the default, write notes
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:37:48 +02:00
Lucas Winther and Claude Opus 5.5
6c846f80d8
feat(core): inspect images (size from headers, sha256, shape incl. landing-page art)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:37:41 +02:00
Lucas Winther and Claude Opus 5.5
5cc317ea26
feat(core): Source interface, registry and the Webtoons source
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:37:30 +02:00
Lucas Winther and Claude Opus 5.5
470424e0d1
feat(core): parse Webtoons series pages (current and archived) into cover candidates
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:37:03 +02:00
Lucas Winther and Claude Opus 5.5
995b0178d5
feat(core): parse MangaBaka and Webtoons links; normalise Webtoons image URLs
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:36:52 +02:00
Lucas Winther and Claude Opus 5.5
dfb21a6c01
feat(core): model types and transport policy (pacing, retries, timeouts, token scope)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:36:34 +02:00
Lucas Winther and Claude Opus 5.5
8912fe74ef
test: keep fixtures byte-exact (no line-ending conversion)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:36:04 +02:00
Lucas Winther and Claude Opus 5.5
ed97c789a5
test: capture Webtoons, Wayback and MangaBaka fixtures
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:35:58 +02:00
Lucas Winther and Claude Opus 5.5
a76926b999
chore: scaffold Bun + TypeScript with core boundary test; record verified commands
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:34:18 +02:00
Lucas Winther and Claude Opus 5.5
a4ab7ad914
docs: implementation plan 001 (draft, awaiting approval)
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:31:20 +02:00
Lucas Winther and Claude Opus 5.5
3e927099c5
docs: amend spec 001 from tests against real Webtoons, Wayback and MangaBaka
...
History granularity, honest Wayback User-Agent and 10 s pacing, tall
landing-art class, one default cover per series, paginated public
images. Ignore samples/.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 23:03:15 +02:00
Lucas Winther and Claude Opus 5.5
34e671932a
docs: cap the covers folder size; refuse uploads when full
...
MBSEED_STORAGE_MAX_BYTES (default 1 GiB) limits the folder. Uploads past
it get 507 and nothing is evicted early, since older files may still be
under MangaBaka review.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 22:12:55 +02:00
Lucas Winther and Claude Opus 5.5
7d7a82e291
docs: store rehosted covers in a folder on the server
...
Server storage is a plain folder (MBSEED_STORAGE_DIR) served at /covers/
with a daily sweep deleting files older than 30 days. S3/R2 remains a
later Storage option.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 22:11:50 +02:00
Lucas Winther and Claude Opus 5.5
dd2d5a94bc
docs: approve spec 001; self-hosted Bun server, defer password gate
...
The user signed off the spec. The server runs self-hosted under Bun;
the password gate and the Cloudflare Workers entry stay designed but
deferred until abuse or traffic calls for them.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 22:10:20 +02:00
Lucas Winther and Claude Opus 5.5
54cd626f21
docs: add catbox/litterbox hosts, password gate and self-hostable server to spec
...
Image hosts are now server storage (30 days), litterbox (<=72h, direct
from the browser), catbox (permanent) and direct. The server becomes one
web-standard fetch handler with Cloudflare Workers and Bun.serve entries,
and an optional shared password gates every route, assets included.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 22:06:53 +02:00
Lucas Winther and Claude Opus 5.5
219a05c039
chore: bootstrap agent-ready docs and rules; revise design for web page + userscript
...
Revise the covers spec: both links given directly, static page served by a
Cloudflare Worker plus a userscript on one pure core, Bun instead of Node,
and R2 rehosting with a 30-day expiry. Move the spec to docs/specs/, merge
HANDOVER.md into docs/DECISIONS.md, the spec and docs/TODO.md, and add
AGENTS.md, pointer files, PERMISSIONS.md and agent permission configs.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 22:02:39 +02:00
Lucas Winther and Claude Opus 5.5
a9c049993a
docs: add handover and TODO; correct observed cover sizes
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 05:00:09 +02:00
Lucas Winther and Claude Opus 5.5
f17831f3bf
docs: add image rehosting and user-chosen content rating to spec
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 04:57:04 +02:00
Lucas Winther and Claude Opus 5.5
9eca8f4f82
docs: add README and architecture spec for cover seeder
...
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-14 04:53:30 +02:00