This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Summary
AI summaryUpdates Highlights, What's new, and New API endpoints None across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Hentai source matching upgrades titles to content_type=hentai when MU and nhentai match exactly with is_explicit=true. Hentai source matching upgrades titles to content_type=hentai when MU and nhentai match exactly with is_explicit=true. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Medium |
MatchSourcesAsync now queries nhentai for manga titles with is_explicit=true, ensuring chapter data from hentai sources is never missed. MatchSourcesAsync now queries nhentai for manga titles with is_explicit=true, ensuring chapter data from hentai sources is never missed. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Medium |
WuxiaWorld sync now retrieves all chapters (e.g., 1620 for ISSTH) by parsing `chapterGroups` from React Query state. WuxiaWorld sync now retrieves all chapters (e.g., 1620 for ISSTH) by parsing `chapterGroups` from React Query state. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Discover UI shows animated source chips with per‑source result feedback (green/dim) during search fan‑out. Discover UI shows animated source chips with per‑source result feedback (green/dim) during search fan‑out. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Full library‑flow end‑to‑end tests added for manga, hentai, manhwa, and novel authorities. Full library‑flow end‑to‑end tests added for manga, hentai, manhwa, and novel authorities. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Performance | Medium |
MatchSourcesAsync HttpClient timeout reduced to 20 s from 100 s default, making CF‑protected source failures fast. MatchSourcesAsync HttpClient timeout reduced to 20 s from 100 s default, making CF‑protected source failures fast. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
CloakBrowser Docker deployment now correctly connects using host from CLOAKBROWSER_WS_URL, fixing ECONNREFUSED errors. CloakBrowser Docker deployment now correctly connects using host from CLOAKBROWSER_WS_URL, fixing ECONNREFUSED errors. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Low |
Sync log now writes "Sync complete" before setting `sync_status` to `ready`, fixing race condition. Sync log now writes "Sync complete" before setting `sync_status` to `ready`, fixing race condition. Source: llm_adapter@2026-06-03 Confidence: high |
— |
Full changelog
*ARRgh v0.1.6 — Hentai source matching, novel chapters, plugin fixes
Released: 2026-06-03
Highlights
- Hentai source matching — titles classified as manga by MangaUpdates but confirmed by nhentai (exact title match +
is_explicit=true) are automatically upgraded tocontent_type=hentaiin discover results. Fixes the case where adding a hentai doujinshi from MU would miss nhentai chapters. - Explicit manga widening —
MatchSourcesAsyncnow also queries nhentai for manga titles withis_explicit=true, so chapter data is never missed when MU mis-classifies a hentai title. - WuxiaWorld all chapters — now syncs all chapters (e.g. 1620 for ISSTH) instead of only chapter 1. Chapter list is derived from
chapterGroupsin the embedded React Query state. - CloakBrowser Docker fix — plugin-host now correctly connects to CloakBrowser in Docker-to-Docker deployments (was hardcoding
localhost, causing ECONNREFUSED for nhentai). - CF source timeout —
MatchSourcesAsyncuses a 20 s HttpClient timeout (down from 100 s default), so CF-protected sources that lack CloakBrowser fail fast instead of blocking sync for 100 s. - Discover progress UI — searching now shows animated source chips (MangaUpdates, AniList, MangaDex, NovelUpdates, WuxiaWorld, nhentai) instead of a generic skeleton. When results arrive, each chip turns green (or dims if that source returned nothing), staggered one by one.
- Sync log race condition fix — "Sync complete" is now written to the log before
sync_statusis set toready. - Full library-flow test coverage — live end-to-end tests for all four content-type authorities (manga/MangaDex, manhwa/AsuraScans, novel/WuxiaWorld, hentai/nhentai).
What's new
Hentai upgrade in MergeFanOut
When the fan-out discovers the same title from both MangaUpdates (as manga) and nhentai, and the MU result is already is_explicit=true, the result is upgraded to hentai and the standalone nhentai entry is dropped. Exact normalized-title match only — prefix matching was intentionally avoided to prevent false upgrades for popular titles (e.g. "Berserk") that happen to have nhentai parodies.
Explicit manga widening in MatchSourcesAsync
POST /discover/add for a manga title that is is_explicit=true now queries both manga and hentai sources when syncing chapters, ensuring nhentai is always tried even if the title entered the library via a MangaUpdates result.
WuxiaWorld full chapter list
chapters() now parses all chapterGroups from the __REACT_QUERY_STATE__ embedded in the novel page, returning the complete chapter list. Chapter 1 uses the real slug (SSR-readable); remaining chapters use {novelSlug}/chapter/{N} source IDs. Volume is assigned from the chapter group order.
WuxiaWorld does not expose a public API for individual chapter slugs — those are loaded by their SPA via a private endpoint. Chapters beyond chapter 1 appear in the list but may not serve text if WuxiaWorld serves them client-side only.
CloakBrowser host rewrite fix
getBrowser() previously hardcoded localhost when rewriting the CDP WebSocket URL, which worked for local dev (plugin-host on host OS, CloakBrowser in Docker) but caused ECONNREFUSED in Docker-to-Docker deployments. The fix extracts the host from CLOAKBROWSER_WS_URL and uses it directly — localhost:3001 stays local, cloakbrowser:3000 stays Docker. Extracted as rewriteCdpHost() with 3 unit tests.
CF source timeout
Source matching now uses a named "PluginHost" HttpClient with a 20 s timeout. Previously the 100 s default caused sync to stall for 100 s when a CF-protected source (e.g. novelfull) lacked CloakBrowser access.
Discover progress UI
While a search fan-out is in progress, the discover page shows a SearchProgress component: animated source chips appear staggered (one every 120 ms) with pulsing violet dots. When results arrive, chips turn green or grey (staggered 100 ms each) based on whether that source contributed results — giving clear feedback on which authorities responded.
Library-flow live tests (api-live-tests/)
Four parallel 8-step flows, one per content-type authority:
| Flow | Authority | CF? |
|---|---|---|
| manga | MangaDex | no |
| hentai | nhentai | yes (CloakBrowser) |
| manhwa | AsuraScans | no |
| novel | WuxiaWorld | no (official API) |
Each flow tests: discover → add → sync → chapters loaded → sync log → queue download → download completes → chapter viewable. Novel flow uses the /api/chapters/{id}/text endpoint instead of the page-image endpoint.
New API endpoints
None.
Upgrading
docker compose pull
docker compose up -d
No database migrations required.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About t2vi/arrgh](https:
All releases →Related context
Related tools
Earlier breaking changes
- v0.1.13 Removes the single `/api/discover/trending` endpoint; clients must use lane‑specific endpoints.
- v0.1.13 Removes `MangaFire` source entirely, including plugin and related code.
- v0.1.2 Rust/Axum server removed; replaced with .NET 9 ASP.NET Core Minimal API implementation.
- v.0.0.9 Drops manga.source and chapters.source_id columns from schema.
Beta — feedback welcome: [email protected]