Releases: debpalash/Opal
Release list
v0.6.5
Highlights
- Torrent search works from the desktop app again. Python's process pool
crashed when nova2 was launched through Zig's child runtime, so every
installed torrent source appeared to return zero results. Opal's bounded
search path now uses network threads, while the qBittorrent-compatible CLI
keeps its process pool. A dedicated CI job executes this exact Zig-to-Python
seam so it cannot silently regress. - Torrent files selected by hand start sooner and keep working. A chosen
episode now gets the same head-first priority as the automatic pick, old
buffer gates are released when switching files, and mpv no longer adds a
second three-second startup buffer on top of Opal's readiness gate. - Startup and shutdown are safer. Background services and process watchers
now have explicit lifetimes, responsive stop paths, and one owner for each
child-process handle instead of detached workers racing teardown. - Windows title-bar behaviour is native again. Double-click maximizes and
restores, maximize respects the current monitor's work area instead of
covering the taskbar, and normal PowerShell builds locate their MSYS2 shell
and toolchain without hand-editingPATH. - Windows releases can sign the whole payload. When Azure Artifact Signing
is enabled, the pipeline signs every executable and DLL, verifies that none
were missed, then signs the MSI itself—covering the modules Windows 11 Smart
App Control evaluates, not onlyopal.exe. - Opal Connect 0.4 has a real setup flow and a useful side panel. It finds
a local Opal, signs in or creates the first account without asking users to
find a token file, and adds live torrents, downloads, recent searches,
casting and watch-party controls, keyboard shortcuts, and the real Opal logo. - The new Opal website makes releases easier to install. The download flow
exposes every published format, detects the visitor's platform, retains
no-JavaScript links, and adds install help, screenshots, comparisons, search
metadata, and a proper project home at opal.palash.dev. - Browser transcoding no longer takes Opal down. ffmpeg's stdout now has one
close owner, eliminating the double-close that could panic the app or close
an unrelated client socket during "Play here".
Changes
Features
- windows — sign the whole release payload, not just opal.exe (
96ce9c4) - site — photographic bands, a real download flow, and a comparison matrix (
1485152) - site — opal.palash.dev — an Astro 7 + React landing page (
586c999) - extension — real logo, two-click setup, and the surfaces it was missing (
24a6dcf)
Fixes
- keep torrent search alive under Zig child runtime (
657a0ec) - harden startup shutdown and search workers (
cf7cfbf) - ci — the two Packaging tests that have been red on main (
33d61dc) - site — the star button links to the repo, not the stargazer list (
45ca5fa) - site — licence cells checked against each project's LICENSE file (
6526607) - torrents — a hand-picked file got no streaming window, and gates leaked (
5a10e9f) - windows — maximize covered the taskbar and double-click did nothing (
3ffb64a) - windows — zig build needed MSYS2 on PATH; now it finds it itself (
1985aea) - ci — read the smoke page into a file instead of piping it to grep (
88a299f) - transcode — stop double-closing the encoder's stdout (
800757a) - tests — the release-notes gate assumed history CI does not have (
0803a4d) - extension — the logo 404'd in the build; the icon now shows the connection (
8bb701b)
Other
- gitignore (
744f2cf)
Internal (8 commits — tests, refactors, CI, docs)
- chore(release): 0.6.5 (
1e21b4c) - test: follow joinable worker lifecycle (
b550e6a) - ci: fetch pinned DVUI from public upstream (
b2c9cf7) - ci: gate the torrent child-process seam (
08385f1) - docs(readme): link the site under the badges (
14d4461) - chore(git): ignore the Claude Code skills tooling (
30979ec) - docs(release): give every release highlights and a commit list (
a19192b) - chore(brew): point the formula at the v0.6.4 tarball (
0c6337a)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.6.4...v0.6.5
v0.6.4
Highlights
- Torrents play a second time. The metadata cache rebuilt the info dict on
write, which changed the info-hash, so every replay of an already-cached
torrent stalled at 0%. It now stores the original bencoded info dict
byte-for-byte. - An unlimited download rate means unlimited. The setting wrote
-1to
libtorrent, which reaches the bandwidth manager as a negative quota; and the
rate field mixed KB/s with bytes/s, so a4096typed in Settings became
4 KB/s. Both fixed, with the conversion behind a tested pure function. - "Play here" in the browser transcodes instead of refusing. MKV, AVI, TS
and H.265-in-MP4 releases now stream through ffmpeg as fragmented MP4.
Only what nothing can play (a disc image) is still turned away. - The Watching page got its Play and Remove buttons back. They had been
drawn past the bottom edge of their own card and clipped away — a card that
carries both a progress bar and an action row is now sized for both. - Remove watched items one at a time, from Watching and from the Home
"Jump back in" row. - Double-tap
Ffor real fullscreen. It used to expand the player inside
the window only; nothing had ever calledSDL_SetWindowFullscreen. - The releases calendar backfills yesterday by paging the EZTV API, and
buckets into three days instead of one. - Windows: the headless build compiles again.
Changes
Features
- web — "Play here" transcodes instead of refusing (
569f7db) - eztv — backfill yesterday by paging, and bucket into three days (
83db14b) - home — remove watched items one at a time (
d5f0095) - input — fullscreen needs a double-tap of F (
e9363db) - web — fold the Setup page; pct hid the difference between slow and dead (
d66bca3) - web — parity reaches 100%; lanIp never resolved outside a terminal (
e978709) - web — close five parity gaps; plugin secrets were sent in URLs and lost (
4fbfe3d) - web — desktop parity, in-browser playback, and access control (
3730729) - resolver — route results through a sink; warm the next episode (
ecef2f8) - sources — EZTV via its JSON API, sharing the Stremio IMDb lookup (
bbb03df) - library — remove items from Watching (
0b9806e) - browse — live search for Movies & TV (
5221ce5) - player — opt-in prefetch, audio passthrough and exclusive output (
56b8e80) - ui — command palette (Ctrl/Cmd+K), re-applied from the arch branch (
cfa7e36) - player — picture presets with HDR-aware Auto on the transport bar (
7c998fa) - scrape — carry POST through the anti-block path (
394e72b) - search — show size and swarm on result rows; pre-warm the scrape browser (
c78b51a) - ui — justify the window title — media name left, resource meters right (
4362d25) - sources — Prowlarr as its own source, therarbg failover (
071b389) - sources — live trackers, indexer failover, and a source upgrade path (
14bc6eb)
Fixes
- ui — the Watching page's Play and Remove controls had zero height (
3749b4a) - ui — fullscreen only expanded the player, never the window (
ab48305) - torrents — the metadata cache made a second play impossible (
38761d2) - windows — headless build did not compile; a label returned a dead stack slice (
57c56db) - torrents — proxy_url was a dead setting; first magnet after launch vanished (
302a1d3) - web — a magnet sent to /api/load went to mpv, so no torrent ever played (
b498c8b) - ui — settings labels named a path that does not exist on Windows (
2bf558f) - windows — config lived in two trees; route every path through configDir() (
8e0d82c) - ytdlp — "found" meant the file existed, not that it would run (
8ad220d) - windows — HOME is unset there, so 40 code paths silently did nothing (
25a6d3f) - dpi — the bypass proxy leaked one sidecar per restart, 57 of them (
96e3c07) - transcode,web — reap the encoder via pipe close; forms + console noise (
c8ec184) - web — repair broken page, add a JS syntax gate, silence favicon 401 (
30a8d36) - web — rank search results by seeds, not by which engine answered first (
f3b1a93) - ui,engines — two bugs found by driving the app as a user (
24a63e3) - torrents — the wall fallback and the stall watchdog were both off by default (
57047c7) - engines — eight engines hand-rolled their own fetch and bypassed everything (
3846724) - sources — retired sources stayed installed and live; verify Prowlarr for real (
728b62c) - engines — unbounded fetches hung the search; walls had no path at all (
5cc7ef0) - engines — retrieve_url never retried, so flaky hosts always read as dead (
f76f359) - engines — stray prints polluted the result stream; re-derive health table (
0ea138d) - engines — therarbg parser aborted on one bad magnet; drop orphan piratebay (
2273a05) - ci — smoke-windows was dying on a bare
powershell(88b4dbb) - sources — drop two retired Stremio addons, correct the TorrentFunk domain (
7a9e075) - ci — repair the smoke step, and prove the Windows AVX-512 hit was a misdecode (
89de9ae)
Internal (9 commits — tests, refactors, CI, docs)
- chore(release): 0.6.4 (
3731c8c) - test(build): fail the gate on AI attribution in a commit (
a5545df) - test(parity): the desktop⇄web number was hand-maintained, so it read high (
4245695) - test(web): verify torrent per-file streaming end to end (
d105d62) - refactor(resolver): extract resolveImdbId so EZTV can share it (
c9d7994) - ci: smoke-windows is blocking now that it passes (
e680f6f) - ci(windows): assert the CIM kill from a native pwsh step (
fedb3c9) - ci: keep the smoke trace on, and stop guessing where powershell lives (
0ce173f) - ci: trace the smoke step and simplify DLL staging (
8f7b187)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.6.3...v0.6.4
v0.6.3
Highlights
- Re-cut of v0.6.2 so Windows users get a build: v0.6.2's own ISA gate rejected
the Windows exe over a single isolated instruction, which turned out to be a
PE misdecode rather than real AVX-512 contamination. Same code otherwise.
Changes
Fixes
- ci — unblock the Windows release; explain what the ISA gate tolerates (
c318fe0)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): 0.6.3 (
f3f13b1)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.6.2...v0.6.3
v0.6.2
Highlights
- Storage page: see what Opal actually stores and reclaim it.
- Fixed the two bugs reported against the shipped release (#21, #22).
- Windows and Linux portability:
/tmpwrites were silently dead on
Windows, and every sidecar (Suwayomi included) now starts on both. Added a
Windows CI smoke run so this stops regressing. - Upcoming sorts by popularity rather than release date.
- Danger buttons no longer float over the Storage rows.
Changes
Features
- player — tested pure layer for the control bar; wire the clock through it (
35b37af) - storage — show what Opal actually stores, and let users reclaim it (
33fd547)
Fixes
- two shipped-release bugs, plus the UI work they surfaced (#21, #22) (
5c8bb42) - ui — danger buttons floated over the Storage rows (
7131d25) - portability — /tmp writes were silently dead on Windows; add Windows CI smoke (
1d72ae8) - portability — Suwayomi + every sidecar now work on Windows and Linux (
0b71713) - tmdb — sort Upcoming by popularity, not release date (
c8cbadd) - tests — CLAUDE.md is gitignored — don't hard-fail CI on its absence (
3b88a4b) - assets — social preview tagline ran off the canvas (
bc57040)
Internal (3 commits — tests, refactors, CI, docs)
- chore(release): 0.6.2 (
833a53a) - refactor(player): route the control bar through its tested pure layer (
bd02a6f) - chore(brew): point the formula at v0.6.1 (
7ff7c64)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.6.1...v0.6.2
v0.6.1
Highlights
- Windows: fixed the four bugs behind "crashes on almost anything" (#21).
- Every HTTPS fetch works again — the HTTP client never loaded a CA bundle,
so seeding the clock alone left TLS broken. - The arm64 Docker image builds and runs; IPTV reconnect was half-disabled.
Changes
Fixes
- docker,iptv — arm64 image builds and runs; IPTV reconnect was half-disabled (
05a3443) - http — load the CA bundle — seeding
nowalone broke every https fetch (127ee12) - windows — repair the four bugs behind "crashes on almost anything" (#21) (
81d1c1d)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): 0.6.1 (
accb23d)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Highlights
- Movies and TV work out of the box — default TMDB/OMDb keys ship with the
release, no sign-up before the first search. - Accounts for the headless/web build: register and sign in from the web UI,
with a session-aware bearer gate replacing the old pairing screen. - Web UI parity, tier 2: Comics, Novels, Drama, VNDB, Audiobookshelf, OPDS,
Plex, Music, Radio, Live TV, YouTube, the AI copilot, and the Logs tab. - Headless deployment: Caddy TLS and Tailscale access profiles.
- The browser extension is now Opal Connect, with cross-browser builds.
Changes
Features
- keys — ship default TMDB/OMDb keys; Movies/TV work out of the box (v0.6.0) (
ba172a9) - web — parity tier 2 — Comics, Novels, Drama, VNDB, Audiobookshelf, OPDS, Plex, Logs (
21031fe) - remote — make the placeholder routes real (recommendations, party, cast, comic pages) (
51937d8) - web — Music + Radio tabs and routes (parity P2) (
49557c6) - web — AI copilot tab + /api/ai route (parity P2) (
5f1b05c) - web — add-download box + comic/novel source catalog (parity P1) (
6bb2c90) - web — Sign out button in Setup (
5c2cdb6) - web — Live TV tab + /api/livetv catalog route (parity P2) (
c1f3a51) - headless-deploy — Caddy TLS + Tailscale access profiles (A5) (
35ff27e) - headless-auth — web UI account login/register, drop pairing screen (A4) (
ec16012) - headless-auth — auth routes + session-aware Bearer gate (A3) (
7f1308f) - headless-auth — DB user + session store (A2) (
5d63cdd) - headless-auth — bcrypt password core (A1) (
71d91ce) - web — scrollable bottom nav so parity verticals scale (
79d377d) - web — YouTube tab in the headless web UI (parity P1) (
a88b521) - extension — rebrand to Opal Connect, composite logo, browser builds (
be43934) - extension — expose Opal's full remote API (
35c8559)
Fixes
- calendars — route eztv fetches through the DPI-bypass sidecar (
e91088b) - opds — fetch through curl — std.http could not reach a live OPDS server; retire web/app; pin container UID (
61e3160) - eztv,headless — one dropped fetch no longer blanks the release rail for 15 min; headless drains deferred comic loads (
fb4006c) - aur — the publish job could not have worked even with a valid key (
1efa3bc) - ci — docker smoke no-token check — capture 401, don't -f on it (
ad01169) - reap orphaned nova2.py search subprocesses on clean shutdown (
c0b5caa) - docker — don't dockerignore the bundled data/*.json (
b7d44fd) - apply reference updates for the docs/deploy relocation (
875e16a)
Other
- headless — S1 slim build — the server binary links no dvui/SDL/X11 (
9c9b14a)
Internal (14 commits — tests, refactors, CI, docs)
- ci(docker): multi-arch — amd64 + arm64 on native runners (Phase S3) (
512e37b) - refactor: remove the pairing code — accounts are the only web auth (
3621efe) - docs(readme): tighter, more elegant — single-line feature bullets (
e1f4c10) - docs: document the browser extension + add verified side-panel screenshot (
95660ab) - ci: publish headless image to GHCR (ghcr.io/debpalash/opal) (
7daad85) - docs(readme): polish prose — cut filler and try-hard phrasing (
37702b9) - chore: relocate root docs + compose into folders (
d0bc2b5) - docs(readme): trim prose — tighter goal/under-the-hood/support/caveats (
f90b992) - refactor: move bundled data JSONs to data/ (
bdfc7be) - docs: move CONTENT_POLICY + DMCA into docs/, fix links (
e320e14) - docs: bump Live TV to ~40k, tighten headings, tidy repo root (
eab04ce) - docs(readme): cut the 11PM prose intro, tighten the pitch (
0752520) - docs(readme): v0.5.0 features + SEO/marketing pass (
9836135) - chore(release): set opal.rb sha256 to published v0.5.0 tarball (
d36885c)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.5.0...v0.6.0
v0.5.0
Highlights
- Live TV (iptv-org) as a first-class source in the Video group.
- DPI-bypass proxy sidecar with a Settings toggle — reaches sources that a
filtering ISP blocks; enabled on Windows too. - Browse's 15 sources fold into collapsible groups.
- YouTube search and channel paging.
Changes
Features
- YouTube search/channel paging + channel parse path, fix remote.zig grid JSON (
6356701) - iptv — Live TV source (iptv-org) in the Video group (
3158ad2) - ui — fold the Browse rail's 15 sources into collapsible groups (
0b08342) - net — DPI-bypass proxy sidecar with a Settings toggle (
109cbc6)
Fixes
- net — enable the DPI-bypass sidecar on Windows (
568f7e1) - windows — make every network-backed source load (
37c95d7) - test — stop the Windows unit-test runner stalling on trace output (
e356f01) - formula — pin v0.4.1's real tarball checksum (
9677de6)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): bump version to 0.5.0 (
25af481)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.4.1...v0.5.0
v0.4.1
Highlights
- Windows: DPI scaling, the console window, plugins, and the custom title
bar all fixed; the formula builds from source there. - Plex: a restored session loads its library again.
- Loading a
.torrentfile no longer dead-ends in the web browser.
Changes
Features
- ui — group the plugins catalog + compact the logs view (
938fd96) - anime — extract AllAnime endpoint to opal-plugins (gated source) (
d545284) - anime — repoint lists id-map data at opal-plugins (
dc175f0)
Fixes
- windows — build from source + fix DPI, console, plugins, custom title bar (
44e9462) - plex — restored session loads its library; harden stale-append guards (
3f8d1b7) - torrent — loading a .torrent file dead-ended in the web browser (
2de8b21) - formula — pin v0.4.0's real tarball checksum (
5b94ecf)
Internal (3 commits — tests, refactors, CI, docs)
- test: make the feature suite runnable on Windows (
901740d) - ci: bump Homebrew formula to 0.4.1 to match build.zig.zon (
757d822) - ci: fix feature-suite + bump version to 0.4.1 (
cada568)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.4.0...v0.4.1
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
v0.3.0
Highlights
- Watching library — what you are part-way through, in one place.
- Full-duplex voice mode with live partial transcripts.
- Winamp-style audio visualizers, including mirrored gradient bars.
- Torrent streaming starts in seconds instead of hanging.
- The three download tabs merged into one list.
- Paged onboarding tour, replayable from Settings.
- The installer no longer needs Xcode.
Changes
Features
- player — mirrored gradient bars — the visualizer people actually mean (
208fede) - Winamp-style audio visualizers; Windows installer; podcast/greeting fixes (
cf466ea) - resource meters in the title bar, shared media card, richer calendar (
7265eb7) - Watching library, richer sources, and a calmer player control bar (
fe803ff) - downloads — merge the three tabs into one unified list (
6d036bf) - voice — full-duplex conversational mode with live partials (
0ff3b5b) - onboarding — paged feature tour + replay from Settings (
4eef0ba)
Fixes
- installer no longer needs Xcode; podcast episodes no longer hang (
38947b8) - player — torrent streaming — start in seconds, and stop hanging (
16d41d3) - ui — kill the red line under the player, bare play/pause button (
e46a81c) - repo — track tools/lang_server.py explicitly + guard test (
d771aeb)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.2.0...v0.3.0