v0.4.0
Highlights
- Comics, manga and novels at scale: Madara (~332 sites), MangaThemesia
(~143), plus lightnovelwp/readwn engines (~120) — one framework per site
family rather than one scraper per site. - Anime video extractors (MegaCloud/HiAnime, StreamWish, Dood, Mp4Upload …)
hand off straight to mpv. - Anti-block fetching: source scrapers route through an anti-detect browser
when they hit Cloudflare or a captcha. - Encrypted persistent content cache with stale-while-revalidate — cold
start shows content immediately, then refreshes. - Opal Connect, a cross-browser extension: play/read/download/scrape into
the local app, and add the site you are on as a source. - Infinite scroll across drama/vndb/novels/jellyfin/plex/opds/audiobookshelf/radio.
Changes
Features
- browse — infinite scroll on drama/vndb/novels/jellyfin/plex/opds/audiobookshelf/radio (
d533f4e) - anime — TV-show-parity detail view — rich header + polished episode rows + type/year/status (
4ee2a34) - cache — SWR seed/store for comics, anime, podcasts, radio browse listings (
b2fe73a) - cache — encrypted persistent content cache — instant cold-start views + SWR refresh (
afb6a0a) - anime — DooPlay + AnimeStream site-framework engines (
c801796) - sources — opt-in SFW manga source catalog (Madara/MangaThemesia/HeanCms, classified from keiyoushi) (
383b849) - extension — deep Opal integration — add-site-as-source, typed send, player remote (
0643147) - scrape — route source scrapers through the anti-block fetch layer (
5f35d62) - anime — video extractors (MegaCloud/HiAnime, StreamWish, Dood, Mp4Upload…) → mpv (
c7bc64e) - novels — Madara/lightnovelwp/readwn source engines (~120 sites) (
fca5cce) - scrape — anti-block fetch via the anti-detect browser (Cloudflare/captcha fallback) (
5e556e4) - extension — cross-browser Opal Connector (play/read/download/scrape → local Opal) (
92add7f) - comics — Madara source engine (~332 sites) (
2a9eee4) - comics — MangaThemesia source engine (~143 sites) (
b0d6ed7) - comics — HeanCms/Iken JSON source engine (
43feef6) - reading — OPDS-PSE page streaming for Komga/Kavita comics (
af8b939) - audiobooks — resume at server-saved position (
8c06e08) - anime — manual Skip button in player control bar (
c44aa1e) - anime — airing-schedule view + Anime News Network feed (
74f42a4) - browse — live-action Asian drama + tokusatsu (
1bc0052) - browse — VNDB visual-novel catalog (SFW-filtered) (
1cb45a4) - downloads — gallery-dl backend for image galleries (
c23b006) - anime — Anime-Skip integration — auto-skip intros/recaps/credits (
fb29a4f) - reading — light-novel / web-novel reader (
5515d4a) - reading — OPDS client — Komga/Kavita/Calibre-Web/LANraragi (
a95a049) - reading — Audiobookshelf client — self-hosted audiobooks (
2e806fd) - downloads — paste-a-URL affordance in the transfers control bar (
83a6848) - browser — CloakBrowser engine option + find-in-page, zoom, downloads, history (
2aa9327) - downloads — segmented downloads, resume, speed limit, scheduler (
6c90281) - ai — local-only taste engine — activity log + sqlite-vec For You suggestions (
e0c5e2a) - search — scam-torrent heuristics — flag and block risky results (
4ab6f73) - security — user-triggered VirusTotal lookups for torrents and downloads (
d4046e7) - playlist — shuffle, repeat modes, reorder, m3u save (
23ac5ea) - player — seconds-accurate, path-keyed resume with schema migration (
2fbaa9b) - OS file associations + single-instance open forwarding (
b409822) - audio — audio-delay controls + output device picker (
d0398e7) - macos — Now Playing integration + hardware media keys (
c898209) - youtube — search suggestions, clickable channels, play → player view (
b7ecf5c)
Fixes
- anime — posters no longer blank out on the SWR revalidate (
1668a03) - posters — fetch images via curl so anime (MAL CDN) covers load (
1e40d70) - youtube — use TVHTML5 player client to bypass bot wall + 429 (
f78551e) - anime — load data despite Jikan 504s on sfw/filtered endpoints (
1eb9f7c) - http — seed Client.now so TLS fetches don't panic (
fa3fb82) - comics — don't destroy GPU textures after the frame loop ends (
fbd7785)
Performance
- http — shared keep-alive client + enforce request timeout (no more hangs) (
09f561d) - startup — warm the common browse routes at launch (
1a9d0bf) - net — bound connect time on curl content fetchers (
b09d464)
Internal (3 commits — tests, refactors, CI, docs)
- refactor(browse): remove tokusatsu lane — Asian drama tab is drama-only (
2f18c50) - refactor(tests): chunk test_features.py into per-category modules (
bd955af) - chore: credit Palash Deb on copyright surfaces (
af6e9da)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.3.0...v0.4.0