Skip to content

feat(english): add Seirei Translations source plugin - #2680

Open
RibatTRW wants to merge 3 commits into
lnreader:masterfrom
RibatTRW:fm/lnreader-seireitranslations-160
Open

RibatTRW wants to merge 3 commits into
lnreader:masterfrom
RibatTRW:fm/lnreader-seireitranslations-160

Conversation

@RibatTRW

@RibatTRW RibatTRW commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #160

Summary

Adds a standalone English source plugin for https://seireitranslations.blogspot.com/ (a Blogger site).

  • Novels are the blog's labels. Chapters are the posts under each label, listed in publish order.
  • Excluded from the novel list: [Bahasa Indonesia] labels, untagged Indonesian labels (ChroNoiR, Lagu, Back Then I Adored You), and image-only manhwa labels (The Great Wish, Rainy Night). That leaves 11 novels.
  • Browse, search by novel name, novel chapter list, and chapter text.
  • Long series are only as complete as the blog: Chiyu Mahou no Machigatta Tsukaikata lists 163 posts, starting at chapter 215.
  • Icon: public/static/src/en/seireitranslations/icon.png (96x96, upscaled from the site's 32px favicon).

Testing

  • npm ci, then npm run build:full: exit 0.
  • npm run check:plugin -- plugins/english/seireitranslations.ts: all four steps PASS against the live site.
    • popularNovels: 11 novels
    • searchNovels: 2 results for "Bokutachi no Remake"
    • parseNovel: 169 chapters
    • parseChapter: 13,029 characters of chapter text
  • Prettier and ESLint pass on the new plugin file.

Screenshots

Captured headless in the repo's Plugin Playground (the Vite dev server UI), with the playground's proxy origin pointed at a local dev server. These are not screenshots from the LNReader app. The Android toolchain is not installed on the machine used, so no in-app test was run.

  1. Popular listing with covers (playground, Seirei Translations)

    Plugin playground: Seirei Translations popular novels

  2. Novel detail with its chapter list (Chiyu Mahou no Machigatta Tsukaikata, 163 chapters)

    Plugin playground: novel detail and chapter list

  3. Chapter readable text (Parse Chapter, Chiyu chapter 346)

    Plugin playground: chapter text

  4. Search results (Bokutachi)

    Plugin playground: search results

AI disclosure

This change was written with AI assistance (Claude). It has not been reviewed by a human maintainer.

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 1 issue found → auto-fixed ✅
  • ⚠️ plugins/english/seireitranslations.ts:33 - Hardcoded EXCLUDED_LABELS set (lines 33-39) and the image-only acceptance in parseChapter (line 202-203) are product-scope choices the intent does not require. The intent only asks for the site as a source with English chapter text. The set drops five Blogger labels by exact name, and the comment (lines 29-31) says manhwa labels are dropped because they hold only images, yet parseChapter still accepts image-only chapters. Any new non-novel label (music, tags, future manhwa) will show as a novel, and the list must be edited by hand. The smallest honest remedy is to remove EXCLUDED_LABELS and rely on the NON_ENGLISH_TAG filter plus the existing chapter text check, so the exclusion is not a second catalogue rule. Authorizing the removal or keeping the list is the author's call.

🔧 Fix applied.
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 9 of 9 scenarios driven live against the product
Scenario Result Live Evidence
Popular tab lists Seirei novels with covers after Fetch ✅ pass live seirei-1-popular.png; check:plugin popularNovels PASS (11 novels)
Search by title returns the matching novel ✅ pass live seirei-2-search.png; check:plugin searchNovels PASS
Parse Novel lists all 169 chapters in publish order with metadata ✅ pass live seirei-3-parse-novel.png; check:plugin parseNovel PASS (169 chapters)
Parse Chapter renders readable English text for the issue's chapter post ✅ pass live seirei-4-chapter-text.png (44496 characters); check:plugin parseChapter PASS
Adversarial: search with no matching title shows an empty state, not an error ✅ pass live Playground search 'zzqxnovelnotathing' -> 'No results found'
Adversarial: chapter path pointing to another origin is rejected ✅ pass live seirei-adv-cross-origin-rejected.png ('Seirei Translations: invalid page address.')
Adversarial: nonexistent chapter surfaces the HTTP error ✅ pass live seirei-adv-404.png ('Seirei Translations: HTTP 404.')
Adversarial: malformed novel path is rejected ✅ pass live Playground Parse Novel '/not-a-label/xyz' -> 'Seirei Translations: invalid novel address.'
Adversarial: excluded and [Bahasa Indonesia] labels never appear as novels ✅ pass live seirei-adv-search-exclusion.png; searches 'chronoir' and 'indonesia' return no results; 'great wish' returns only '[Novel] The Great Wish'
  • npm ci (dependency install, lockfile untouched)
  • npm run check:plugin -- plugins/english/seireitranslations.ts (live site: popularNovels 11, searchNovels 2 for 'Bokutachi no Remake', parseNovel 169 chapters, parseChapter 13029 chars: all PASS)
  • Playground served by vite on port 3917 (port 3000 was already occupied by another process, left untouched); playground's hardcoded localhost:3000 CORS-proxy calls rerouted to 3917 via Chromium CDP Fetch interception (no source edits)
  • Headless Chromium driven over CDP (/tmp/seirei-cdp/driver): Popular > Fetch shows 11 Seirei novels with covers
  • Search tab, term 'remake' returns 'Bokutachi no Remake' and 'Bokutachi no Remake Ver. β'
  • Parse Novel with /search/label/Bokutachi%20no%20Remake returns 169 chapters, first chapter Apr 28 2021, ordered oldest first
  • Parse Chapter with /2026/10/bokutachi-no-remake-volume-9-chapter5-2.html renders 44496 characters of English text with translator credits and body paragraphs
  • Adversarial: search 'zzqxnovelnotathing' shows 'No results found'
  • Adversarial: Parse Chapter with https://example.com/... shows 'Seirei Translations: invalid page address.'
  • Adversarial: Parse Chapter with /2026/10/does-not-exist-zz.html shows 'Seirei Translations: HTTP 404.'
  • Adversarial: Parse Novel with /not-a-label/xyz shows 'Seirei Translations: invalid novel address.'
  • Adversarial: search 'chronoir' and 'indonesia' show no results (excluded labels and [Bahasa Indonesia] labels hidden); search 'great wish' shows only '[Novel] The Great Wish'
  • Verified raw Blogger label list via curl: Bahasa Indonesia and excluded labels are present upstream and are filtered by the plugin
  • Review-round-1 decision: HEAD comment already states the real reason for label exclusion and does not claim image-only chapters are rejected; no further change needed
  • Test servers and Chromium stopped; worktree git status clean (node_modules and generated files are gitignored)
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

Adds a standalone English source for seireitranslations.blogspot.com, a
Blogger site. Each novel is one of the blog's labels, and its chapters
are the posts under that label. Browse, search, novel detail with the
full chapter list, and chapter text are all served from the Blogger
feeds and post pages.

Labels that are not English novel text are left out: the
"[Bahasa Indonesia]" translations, the untagged Indonesian labels, and
the image-only manhwa labels.

Closes lnreader#160
@RibatTRW
RibatTRW marked this pull request as draft October 15, 2026 12:09
@greptile-apps

greptile-apps Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no blocking issue was established.

Summary

Adds Seirei Translations as an English source.

  • Seirei novels now appear in browse and search results.
  • Opening a Seirei novel shows its chapters in publish order.
  • Seirei chapter pages open as cleaned chapter text.

No actionable issues were established.

Reviews (2) · Last reviewed commit: "no-mistakes(document): Clarify seirei la..." · Reviewed by Greptile

@RibatTRW
RibatTRW marked this pull request as ready for review October 15, 2026 13:12

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.

Seirei Translations

1 participant