Skip to content

fix(english/cherrymistcafe): rewrite for new JSON API with cipher decoding - #2565

Open
RibatTRW wants to merge 1 commit into
lnreader:masterfrom
RibatTRW:fm/lnreader-plugins-2563-cherrymist-rewrite
Open

RibatTRW wants to merge 1 commit into
lnreader:masterfrom
RibatTRW:fm/lnreader-plugins-2563-cherrymist-rewrite

Conversation

@RibatTRW

@RibatTRW RibatTRW commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Rewrite

Closes #2563. The site left WordPress/Fictioneer for a Vite SPA backed by a public JSON API: every HTML route now serves an identical 4091-byte shell, so the old generated plugin's selectors matched nothing (empty listings, empty chapters). The app reader scrapes raw HTML while WebView executes the SPA JS, which is why chapters rendered in WebView but not in the reader.

  • Removes the dead cherrymistcafe entry from the fictioneer generator (sources.json, custom chapterTransform.js, icon) so it stops building.
  • Adds standalone plugins/english/cherrymistcafe.ts (same id, v1.0.0) on the public JSON API: popular/search via /api/series, detail by slug, chapter listing by numeric series id with numeric chapter ids in paths, chapter bodies via /api/chapters. resolveUrl maps to the human /story/ and /chapter/ routes.
  • Decodes the per-chapter PUA-substitution cipher (seeds 0–15, stable per chapter) with offline-solved seed tables matched from webfont glyph outlines, cached per seed at runtime, plus sentence-start and standalone l-to-I restoration passes validated with zero false positives across 13 chapters.

Verification

check:plugin passes all four steps live (20 popular, search, 203-chapter novel, 16782-char chapter). The issue novel decodes end to end: found by search, 132 chapters ascending, covers resolve, status Completed, chapter 118 as fluent English HTML. build:compile passes; changed files clean under eslint/prettier (remaining repo-wide findings pre-existing).

Limitations: coin-locked chapters return empty content (paywalled, no cipher payload served); saved libraries under old paths must be re-added. AI-implemented change; cipher tables machine-solved and verified by reading decoded chapters.

…oding

The site migrated off WordPress/Fictioneer to a Vite SPA backed by a
public JSON API, so every HTML route now serves an identical SPA shell
and the old selectors return empty popular/search/chapters.

Remove the dead cherrymistcafe entry from the fictioneer generator
(sources.json + custom chapter transform + generator icon) and add a
standalone API plugin: popular/search via /api/series, novel detail by
slug, chapter listing by numeric series id, chapter bodies by numeric
chapter id. Chapter bodies are PUA-substitution-ciphered per-chapter
seeds (0-15); the plugin ships offline-solved seed tables and restores
I in the two seeds whose fonts carry no I artwork.

Closes lnreader#2563.

Co-Authored-By: Muse Spark (AI agent, supervised by firstmate worker lane)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[cherrymistcafe] Empty chapter: Diary of a D-Rank Guide on the Run — DDR | Chapter 118

1 participant