Changelog
What's new
Every release, with notes. Pulled from GitHub.
0.22.0 (2026-09-21)
Features
- sync: sync notes, tags, flags and per-title reader overrides across devices (b9b7a4e)
- tracking: mark chapters read when opened on the source site (129508e)
Bug Fixes
- discover: search a suggestion's alternate titles so romaji-only manhwa resolve (295096d)
- reader: read downloaded chapters offline instead of erroring (d12044e)
- sync,library: stamp updatedAt on edits so they push; caught-up un-pauses (6669283)
- updates: bucket retired/unlinked/unparseable sources as 'needs relink', not eternal failures (59479df)
0.21.0 (2026-09-16)
Features
- account: link a weeb.ltd account and sync the library (9e2f739)
- account: link the community id to the weeb.ltd account (3dcfb42)
- app: IA refresh - Discover replaces Home, Activity tab, start-page setting (4965cfc)
- app: move the weeb.ltd account link into Settings so the site's instructions match (b2a56e9)
- app: nicer placeholder covers for titles with no/broken image (49c5a82)
- app: settings hub with section rail, find-a-setting filter, and card grid (2b85d24)
- app: unify On Hold and Paused; detail modal status cleanup (272e9d3)
- app: weeb.ltd Community nav + footer link, gated on setting and reachability (cdeb65f)
- community: affiliate click tracking + admin aggregate (75c4699)
- community: consent-gated data collection, GDPR controls, and install counts (094647b)
- community: owner announcements + admin dashboard API (9f48bd9)
- community: per-chapter read counts, genre backfill across events, and source-suffix title cleanup (7ca6242)
- data: optional passphrase-encrypted backups (AES-GCM) (a190efe)
- discover: add community-trending rail (2385322)
- discover: add continue-the-series rail from AniList sequels (6574d7f)
- discover: backfill thin suggestion pools with top-genre picks (0640cb7)
- discover: confirmation toast on quick-add (mark read / plan-to-read) (c81f674)
- discover: Find + More menu to log a suggestion as read or plan-to-read (2ad6ec5)
- discover: source search in a popover, clearable, self-timing add notice (92df068)
- discover: weight by AniList rec strength, add hidden-gems rail (fa8ab49)
- discover: weight recs by rating/status, add not-interested + mix-it-up (f5a9a2a)
- library: bulk set status in Select mode (e80e0aa)
- library: escalate the filter box to an all-source search (e0f6949)
- library: manual genre/metadata backfill; tags vs genres finalized (0a1adc3)
- library: updates-first default, status counts, New/New-ch badges, Tools menu (d3da2a1)
- popup: unread-first library overview in the toolbar popup (330f48e)
- reader: default view setting, per-title page-width override, fix fast-click page jump (ab652cd)
- sources: add DragonTea with novel URLs and per-site Ko-fi links (6a5fe74)
- sources: add Nyanu Kafe (nyanukafe.com) (a309361)
- sources: tip links for LHTranslation, MangaSushi, Nyanu Kafe, Tritinia, Flame Comics (4ff95f0)
Bug Fixes
- app: center Community nav entry to match other sidebar items (27b1e22)
- community: allowlist title normalization, safe chapter dedup, rating alignment (b119269)
- community: guard /events shape, serialize tombstones, fix sync boundary, guard json_each (8532287)
- deps: bump hono 4.13.5 + @hono/node-server 1.19.17 (moderate CVEs) (4f8001a)
- discover,library,updates: podium sizing, select-mode checkbox + bulk caught-up, de-conflate bot-block skips (2e0186e)
- discover: don't blank the page when a refresh can't reach AniList (acd3764)
- discover: fixed-size centered podium, full-width layout, centered top controls (00a41cd)
- discover: keep quick-added titles out of suggestions (no stale-cache flash-back) (d732952)
- discover: quick-add sent a Svelte $state proxy array (unclonable) - spread genres to a plain array (fbc1b0d)
- discover: stop full-width main overflowing the shell horizontally (625c0e4)
- discover: visible Mix it up toggle, editor-picks cold-start empty state (0dc64c2)
- library: don't flag already-read Discover adds as needing a source (61921cf)
- library: responsive duplicate merge + keep-source picker (9327468)
- nyanukafe: parse the full chapter anchor (real inners are ~1.4KB, not <400) (07a5544)
- privacy: point policy URL at the live host privacy.weeb.ltd (2613b11)
- reader,discover: bughunt fixes - preserve per-title width, show empty search, onboarding on cold start (989dcda)
- reader: capture JS-injected pages in tab render (MangaHub truncation) (1ddfd44)
- reader: immersive top bar so it stops limiting image size (6888a54)
Performance Improvements
- suggestions: cache AniList recommendations per seed to stop hammering AniList (e6726f4)
The biggest release since 0.19.0: a reworked Discover tab, a much better reader, AniList two-way status sync, and a long tail of source, tracking, and data-safety fixes. 49 user-facing changes.
Highlights
Discover (was Suggestions)
- The Suggestions tab is now Discover: it leads with a "Top picks for you" podium based on the genres and authors you read, plus a genre-chip filter and a "because you read X, try Y" rail.
- Find-similar from any title (card button + drawer), and filter suggestions by genre, title, community, and sort order.
- Loading the sample data now populates Discover, so you can see what it does before building a library.
Reader
- Fit width now actually fills the screen, with a Page-width slider for fine control.
- New Actual-size fit (native resolution) and a configurable double-page gap.
- Double-page is now a proper paged flip view (arrow keys + mouse wheel), not a scroll.
- Chapter list and prev/next can be filtered by your preferred language.
AniList
- Bidirectional reading-status sync (push and pull, last-writer wins).
- Import completed titles as completed, with an opt-out for planning entries.
Library & updates
- New Updates filter for titles that have new chapters.
- The merge tool now detects rotated-slug duplicates (Asura-style domain hoppers).
- In-app download button for the matching browser build when an update is available.
Fixes
Sources
- comix.to: next-chapter now works both on-page and in the reader (the chapter list is populated from the page and chapter ids are canonicalised so prev/next line up).
- MangaHub: resolves every chapter page instead of only the lazy-load preload window; heals locally-poisoned chapter numbers and drops a phantom "next" chapter that broke tracking and sync.
- MangaDex: dedupes chapters to one row per number and threads the reading language.
- Asura: stops duplicate/renamed library entries under slug rotation and tracks reader progress correctly.
- Thunderscans: follows the site's path move (/manga -> /comics).
- Recovers ts-variant chapter lists via an anchor fallback; retired 4 dead adapters.
Reading data & safety
- Fixes the "lost progress" mislabels: correct New-chapter badge and the real chapter number in the reader.
- Backs up before a library merge; closed four paths that could orphan rows after a concurrent remove.
- Reader now captures chapter identity before offline export/remove, fixing stale-chapter races.
- Bookmarks star the right page/chapter, guard against orphans, and toggle atomically.
Stats & diagnostics
- The Stats tab no longer goes dead when you leave and come back.
- The diagnostic log now records update-check runs and embeds a library/unread snapshot, so an export reflects what's actually in your library; the public community username is no longer redacted, and the log holds more entries.
Other
- Reader page-fit: double-page completion, page-index clamp, and a single-page broken-image banner.
- Search counts source settlements (not matches) in the progress indicator and guards the chapter list against stale responses.
- AniList/Webtoons: dedupes custom-list import entries and scopes the Webtoons next-page.
- Metadata: treats AniList's 404 as a genuine no-match; rejects combining-mark-only usernames.
Hardening
- Network requests are stream-bound and fail closed on an unverifiable redirect.
- Source-controlled tab opens are funneled through an http(s) scheme gate.
- Concurrent downloads of the same chapter are de-duplicated.
- The metadata and community read endpoints are rate-limited and free-text input is capped.
Both the Chrome and Firefox zips plus SHA256SUMS.txt are attached automatically by the release workflow.
What's new in 0.19.0
Reader
- New Strip / Single / Double view control with scrollable double-page spreads and page navigation.
- Seamless 0-gap continuous toggle, fit-height clipping, and a top-bar autohide hotkey.
- Original-size pages are now centered instead of hugging a corner.
- A failed page image retries with backoff before falling back to alt text.
Library & reading status
- Per-title status: paused / dropped / planning, with AniList status mapping and optional auto-pause after N idle days.
- Status filters (default Ongoing). "Completed" now requires a genuinely finished and caught-up series, so caught-up ongoing titles stay under Ongoing.
- Wider detail modal (no more scrolling to reach controls) and a reorganized toolbar.
Search & mirrors
- Primary-click a search result to add it straight to your library from any source; modifier-click opens the site.
- Preferred mirrors: per-source search toggle on the Sources tab.
- Unicode-aware title matching; bulk-search timeout raised so it stops missing sources a manual search finds.
Suggestions & Stats
- Stats now shows a genre breakdown of what you read.
- Suggestions shows a genre-weighted top-3 podium built from your library.
- Paginated infinite-scroll with lazy cover images; cached list served instantly, then revalidated.
New / fixed sources
- Added mangak.io, GD Scans (Madara, volume-path URLs), and Tritinia (ch- prefix + old-domain alias).
- Adapter parsing fixes: MangaDex, Comix, Fanfox, Manganato, Mgeko, WeebCentral, Asura, plus dash-decimal chapter numbers.
- MangaHub: internal-id chapter numbers rejected and healed, so the Updates page shows real chapter numbers.
AniList
- Import by romaji title first, so more mirrors match.
- Reconcile hardened: it never mass-drops the library and only removes titles you genuinely removed on AniList.
Community
- Reserved-name blocklist (admin/root/mod/staff/... including spaced and separator-obfuscated forms) and emoji-safe usernames, enforced on both the client and the server.
Reliability & security
- v11 DB migration heals Infinity / poisoned chapter numbers and clears dangling read ids on source switch.
- Diagnostic-log secret/JWT redaction, http(s)-only URL guard, control-char stripping in cbz filenames.
- Daily automatic restore points with partitioned retention.
Full changelog
0.19.0 (2026-08-08)
Features
- anilist: import titles by romaji first so mirror search matches more sources (91396fa)
- backup: daily automatic restore point with partitioned retention (0b6f6a0)
- community: reserved-name blocklist + emoji-safe username validation (1c384f6)
- insights: Stats genre breakdown + Suggestions top-3 podium from the library genre profile (3492eec)
- library: persist sort, cap suggestions, auto-backup on update (ed6f063)
- library: reading-status filters, per-title status control, auto-pause + import settings (46aef94)
- library: reading-status model (paused/dropped/planning), AniList status mapping, auto-pause, sync reconcile (70a9c92)
- reader: seamless 0-gap spread toggle, fit-height clip, top-bar autohide hotkey (7430af5)
- reader: Strip/Single/Double view control, scrollable double spreads, page nav (f2b8d5d)
- reader: tighten the double-page spread and add a first-page offset (84cbbda)
- search: add library:add so primary click adds any source unread (0db5688)
- search: per-source search toggle on Sources tab (preferred mirrors) (0357774)
- search: primary click adds result to library, modifier-click opens site (7cecd8b)
- sources: add GD Scans (Madara) with optional volume-path chapter URLs (2efeab6)
- sources: add mangak.io adapter (Next.js SSR: search + chapter list + reader scrape) (86c3404)
- sources: alias tritinia.com to recover old-domain imports (83dc229)
Bug Fixes
- anilist: make sync reconcile safe (up-front fetch, empty-guard, pre-existing-id snapshot) so it never mass-drops the library (8d4e8b6)
- anilist: track known-membership across syncs so reconcile only drops genuine removals, never enrichment-stamped titles (47d6726)
- asura: strip 'Chapter N' suffix from resolved series title (568e9e8)
- background: reset stuck update-progress on throw; update-pending latch; ensureAlarm no period-reset; focus existing dashboard tab (1cb21aa)
- capture: mark-read adds a distinct library entry per title (7f7fd05)
- community-server: vendor username rules so the isolated Docker build resolves (5d3162f)
- db: preserve anilistId/genres/metadataUpdatedAt/latestChapterAt on chapter recapture (7c74241)
- db: v11 heals Infinity lastReadChapterNumber; guard latest-chapter pick; clear dangling read id on switch; backup signature covers metadata (755c872)
- insights: emphasize 1st podium pick with an accent ring instead of scale (no overlap) (a403e6c)
- library: Completed requires a finished series (caught-up ongoing stays reading) so mark-read titles stay visible in Ongoing (a5393c5)
- library: don't mark read titles Completed when latest is unknown; status-aware Surprise Me + updates badge (1d11914)
- mangahub: reject internal-id chapter numbers in external-track + heal poisoned lastReadChapterNumber so Updates shows real numbers (827958b)
- reader: center image at original page-fit (center + margin-auto, not safe-center) (d543202)
- reader: retry a failed page image (backoff) before stranding it on alt text (6bceff7)
- search: honor per-source race timeout in streaming; force refreshes suggestions; validate library:add input (1f31380)
- search: raise bulk-search race timeout to 10s so it stops missing sources a manual search finds (b0c3593)
- search: unicode-aware matchesQuery + normalizeTitle (NFC/strip); chapterIdToken uses query key for webtoons (5c26458)
- security: redact encoded secrets + JWTs in diag log; http(s)-only url guard; strip control chars from cbz filename (1b10c70)
- sources: dash-decimal chapters, weebcentral year misparse, asura bare-chapter title, sortkey edge cases (1d64bb0)
- sources: mangadex newest-500, comix chapter-0, fanfox search dupe-slug, manganato genre scoping, mgeko unnumbered (b6e0d48)
- tritinia: use ch- chapter prefix so reader resolves chapter URLs (115768b)
- weebcentral: parse Episode-labeled chapters so numbers stop collapsing to 0.NNN (2b59073)