Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 18:41

Highlights

  • Podcasts as a new media class — search, browse, stream, with cover art
    and now-playing metadata.
  • Internet radio via RadioBrowser, also a new media class.
  • More sources: Stremio addon pack, Knaben aggregator, NASA, Wikimedia
    Commons, Internet Archive audio.
  • OMDb ratings (IMDb / Rotten Tomatoes / Metacritic) on the detail view.
  • Keyless subtitle providers extended (Subdl, Stremio OpenSubtitles-v3).
  • Broad performance pass: virtualized grids, poster failure latches, cheaper
    per-frame polling.
  • Persisted Settings toggles now actually take effect.

Changes

Features

  • audio — cover art + now-playing metadata for podcasts & radio (11f85f4)
  • subtitles — Subdl provider with in-process ZIP extraction (wave-2) (12160c1)
  • sources — NASA + Wikimedia Commons + Internet Archive audio (legal, default-on) (099ee96)
  • subtitles — keyless Stremio OpenSubtitles-v3 provider in the search chain (df56077)
  • sources — RadioBrowser internet radio — new Radio media class (cefb302)
  • sources — OMDb ratings enrichment (IMDb / RT / Metacritic) on detail view (57912f9)
  • sources — Stremio addon pack + Knaben aggregator; raise manifest cap (09769c0)
  • art — podcast cover images + web Jellyfin poster cards (4a39e93)
  • podcasts — new media class — search, browse, stream audio (desktop + web) (0ab5b88)
  • anime — enrich anime tab with AniList metadata (SFW-gated) (c436db1)
  • tv — TVmaze episode air-dates + next-episode countdown (66a1b22)
  • sources — Internet Archive — legal public-domain video search (cef9193)
  • sources — generic Torznab/Prowlarr/Jackett adapter (ships inert) (b036d65)
  • web — Jellyfin, Anime, and RSS tabs on the web companion (7fae32b)
  • dev — give the dev binary a real macOS app identity (Opal + logo + About) (a39a050)
  • web — queue reorder (up/down) via /queue/move (5b4bc48)
  • web — SSE status push (/events) replaces 1s polling (746651c)
  • home — Coming-up rail uses poster cards (like Trending tonight) (4b1bf9d)
  • safety — never auto-select/open executables or archives in torrents (138a3ba)
  • web — browser-first setup + live torrent progress + history rerun (159090f)
  • web — live torrent progress in Activity (/api/torrents) (2cc7383)
  • hosting+perf — headless web hosting, browser streaming, CPU fixes (a8648c8)
  • smart TV playback, cloud LLM, web companion, CPU + UX overhaul (027a77e)

Fixes

  • build — explicit piece_index_t casts for newer libtorrent (macOS CI) (f2959a4)
  • build — source libtorrent TLS defines from pkg-config (fixes macOS CI) (9d56a7f)
  • onboarding — redesign the welcome modal — logo, cards, wrapping copy (61880ba)
  • startup — first-launch "Nothing loaded" race in Movies&TV / Trending (2ed7efb)
  • settings — make persisted toggles actually take effect (audit fixes) (0b0a701)
  • torrent — proportional piece-map downsample + guard dead torrent_destroy (P2) (974f1e3)
  • torrent — erase removed torrents — stop unbounded dead-slot growth (P1-2) (33c12db)
  • torrent — lock wrapper vector access (P0 data race), atomic session, proxy leak (1d4457c)
  • threads — atomic-ize cross-thread control bools; snapshot jellyfin auth (b57b377)
  • stability — comics download UAF, extractor player race, player panics (c36e79f)
  • playback — letterbox video instead of stretch in fullscreen/full-height (20d0b68)
  • build — give libtorrent_wrapper.so a SONAME (790fed3)
  • web — history items are search strings — render + tap-to-rerun (6192169)
  • docker — correct zig 0.16 tarball name; drop unused onnxruntime deps (965c2ca)

Performance

  • youtube — virtualize the results grid (ad0247b)
  • posters — add missing thumbnail/poster failure-latches (stop per-frame respawn) (d24a840)
  • comics — virtualize the discovery grid + add a cover failure-latch (fdffd35)
  • footer — cache per-frame libtorrent + mpv chrome polls at ~2Hz (1c8dc75)
  • isInList pointer-capture, poster_cache index, search status memoization (5d970ad)
  • lang-learn — move the TTS health probe off the render thread (4af5c9a)
  • web — bound the jellyfin poll loop + skip no-op DOM rebuilds (32df888)
  • playback — throttle interactive chrome repaint 120Hz -> 30fps (eb376d6)
Internal (5 commits — tests, refactors, CI, docs)
  • chore(release): bump to 0.2.0 + reconcile version, add CHANGELOG (fcb5ee7)
  • chore(tests): refresh results.json (140 passed, 0 failed) (42e932d)
  • refactor(ui): extract control-bar picker popovers into ui/pickers.zig (8a52180)
  • refactor(settings): move About into its own tab (out of Playback) (8cc7fd3)
  • docs: mark headless H3 shipped (df3befb)

Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.

Full Changelog: v0.1.2...v0.2.0