Repository navigation
Releases
v0.9.3
Highlights
- Update without leaving Opal. A small corner prompt offers background downloads and a separate Restart button. Writable macOS app bundles install and reopen automatically, with checksum and bundle verification and rollback if the new app cannot launch. Updated apps reopen reliably while background services start. Automatic checks can be turned off in Settings → About; other platforms use their installer or package manager.
- Browse directly inside Opal on macOS. A native browser replaces the remote-view path, with an aligned address bar, up to 32 tabs, tab pinning, and Command-W closing the tab while keeping Opal open. Browser now sits below Home; pairing and shared streams live beside the extension controls.
- A useful new-tab page. Search, bookmarks, favicon cards for recents, connection controls, and session privacy measurements appear in the app's theme. Private browsing hides regular history.
- Browser extensions and connection controls. Install the verified uBlock Origin Lite package or compatible WebExtensions, pin their icons, and open native popups. Canvas protection, Tor, and a verified pool of saved proxies are available in browser settings. Extensions require macOS 15.4 or later.
- Continue YouTube playback in Opal. A Play in Opal button carries the page's position, speed, volume, mute and pause state. Captured requests retain their browser headers and connection route, with contextual extraction when capture is unavailable.
- Read comics discovered on the web. Recognized comic pages offer Read in Opal. Series, year and issue signals search configured sources, open confident matches with chapter navigation, and keep ambiguous editions selectable. More western comic sources and a compact reader toolbar improve browsing.
- Better playback and desktop wallpapers. Restore YouTube quality controls, clear stale lyrics when switching media, and apply macOS live wallpapers on the desktop layer. Video wallpaper discovery and gallery interactions are improved.
- Smoother navigation and typing. Sidebar hover overlays content, ordinary website addresses stay in the browser, webpage typing no longer duplicates characters, and browser tab/layout work is reduced to avoid UI stalls.
A look at this release
Browse inside Opal on macOS. Tabs, extensions, recent pages and connection controls sit beside the player and reading library. Native UI capture with public demo recents.
Download in the background, then restart to install and reopen. Native UI preview with an illustrative next-version number; no live download is shown. Seamless restart installation is available for writable macOS app bundles.
Changes
Other
- Fix update restart startup crash and release v0.9.3 (
f5274f9) - Release v0.9.2: native browser, prompted updates and visual highlights (
e0df2c1) - Recognize comic pages and continue reading in Opal (#147) [skip ci] (
c4882a1) - Polish browser navigation, extension popups and YouTube handoff (#146) [skip ci] (
e68155e) - Compact comic controls and open Browser directly (#145) [skip ci] (
a58c559) - Compact browser connections and scope close shortcuts to tabs (#144) [skip ci] (
eca82dc) - Add browser start page, pinned tabs and privacy connections (#143) [skip ci] (
833c9b1) - Fix browser typing duplication and UI stalls (#142) [skip ci] (
0c18d91) - Add live browser tabs and align address controls (#141) [skip ci] (
262ad26) - Unify browser chrome and overlay sidebar hover navigation (#140) [skip ci] (
b71f230) - Fit native extension popups to their content (#139) [skip ci] (
2096f97) - Add native browser extensions and privacy controls (#138) [skip ci] (
07be4bc) - Embed macOS browser and fix desktop live wallpapers (#137) [skip ci] (
280d8e2) - Add Image Comics and GlobalComix western comic sources (#136) [skip ci] (
a821f9d) - Restore YouTube quality controls and clear stale lyrics (#135) [skip ci] (
451a664) - Polish navigation, reading sources, and video wallpapers (#134) [skip ci] (
cf93aa8)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.9.1...v0.9.3
v0.9.1
Highlights
- More reliable audio output recovery. Recover playback when an output device disconnects or a forced device refuses to open, while preserving each player's audio-disable preference.
- Quicker closing. Cancel catalog retry waits during shutdown and hide the window promptly when quitting.
- Clearer audio switching. A compact output-device prompt follows the app theme and keeps playback paused until you resume.
- Cleaner rendering. Toasts overlay the page correctly without triggering a red diagnostic border, including at larger UI scales.
- Streaming and media robustness. Size the startup buffer from the file's bitrate and handle malformed AVI/MP4 metadata more safely.
- Updated native toolkit. Move to Zig 0.17 and DVUI 0.6-dev, with verified desktop UI, playback and packaging checks on macOS, Windows and Linux. Building from source now requires Zig 0.17.x.
Changes
Fixes
- initialize audio intent and reconcile browse feature checks (
cef7b81) - release — use macOS 15 for supported Homebrew dependencies (
c075c51)
Other
- Bump version to 0.9.1 (
657a169) - Upgrade to Zig 0.17 and DVUI 0.6-dev (#133) (
4ae2bdd) - Cancel catalog retry waits and hide the window promptly during shutdown (
e3167cd) - Fix malformed media handling, player audio isolation, and safe app installation (
e2f8f89) - clean-all: drop the whole Zig cache root, not just o/ and p/ (
c0ba4fc) - Compact the audio-output prompt and give it a real window header (
40b7985) - Add dev scripts for clean, build, install and UI debugging (
ce49d3a) - Recover audio when a forced output device refuses to open (
2762260) - Derive the stream start threshold from the file's own bitrate (
876fa53) - Recover playback when audio output disconnects (
d56c55e)
Internal (1 commit — tests, refactors, CI, docs)
- chore: commit local working-tree changes (
db15b7d)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Highlights
- Wallpapers in Opal. Browse Wallhaven and configured gallery-dl sources with infinite scrolling, open full-resolution images in a gallery, navigate with the keyboard, and hide the thumbnail strip for more viewing space.
- Wallpaper previews and desktop controls. Preview looping videos and GIFs, download originals, and apply wallpapers with Fill/Fit controls. Live desktop playback uses mpv or mpvpaper and runs while Opal is open. Windows/Linux desktop application still needs on-device verification; GNOME/KDE Wayland animation is not supported.
- More useful media browsing. Expanded anime sources and source ranking, improved episode artwork, country filters for live TV, radio and podcasts, YouTube podcast discovery, and a combined music view with duplicate handling.
- Better artwork and library controls. Improved YouTube thumbnail handling and card presentation, episode header artwork, and removal controls for Continue items.
- Cleaner pages and shared components. Refined Connect, Web, RSS, Sources and Settings, compact source controls, service logos, shared card surfaces and country selectors.
- Loading and reliability fixes. Updated provider parsing, source catalog handling, HTTP processing and asynchronous publication, with regression coverage for browsing and native layouts.
Changes
Features
- expand media browsing and wallpaper gallery; release v0.8.10 (
1b06dc0)
Fixes
- release — correct version to v0.9.0 (
ac6ed2c)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.9...v0.9.0
v0.8.8
Highlights
- Ubuntu 20.04 and other older Debian/Ubuntu systems can install Opal. A
separate package builds current media libraries against glibc 2.31 and keeps
them private. The installer selects it for older hosts; playback uses software
decoding and X11/XWayland. System libraries stay under distro control. - Browse gains more torrent, reading and audio sources. NekoBT, Shana,
Public Domain Torrents, Royal Road, NovelFire, Weeb Central, Comic Book Plus
and Audius join the catalog, along with NASA, BBC and NPR podcasts. Anime,
comics and novels have repaired discovery, reader and source handoffs. - macOS builds and bundles are more reliable. CI uses a supported runner,
dependency setup repairs stale OpenSSL links, and bundled playback libraries
reserve enough space for relocated paths. Torrent search also works with
Ubuntu 20.04's Python 3.8.
Changes
Features
- sources — expand torrent, reading and audio providers (#101) (
a079827) - tv — redesign season detail as responsive episode gallery (
c603cb1) - torrents — add bounded memory-only streaming (
42d49c0)
Fixes
- release — support older Linux hosts and repair macOS CI (#103) (
70b11ea) - installer — reject incompatible Linux release runtimes (#102) (
46bbbb2) - browse — enrich sources and repair discovery flows (#99) (
5913eeb) - ci — support libtorrent 2.1 and unlink legacy runner OpenSSL (
4f7193e) - downloads — make removals durable and restore transfers paused (
ce782f9) - windows — bootstrap browser without system Python (#95) (
15b6292)
Other
- Fix anime episode browsing and playback lifecycle (
5208bd3) - Fix Windows YouTube seeks with seekable extractor streams (
455ae66) - Publish Homebrew formula for v0.8.7 (#94) (
24d4676)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.7...v0.8.8
v0.8.7
Highlights
- YouTube starts faster and plays at the requested quality. Browse cards,
filters and player controls now match the rest of Opal; cancellation remains
responsive while a stream resolves, 1080p is preferred, and quality changes
switch immediately without exposing unavailable formats. - Every browse surface is smoother and more resilient. Movies, TV, anime,
Asian drama, audio, reading, live TV and connected libraries share bounded
paging, responsive cards, cover placeholders and reliable cached fetches.
Temporary provider failures keep existing content and offer recovery instead
of presenting an empty library. - The player stays responsive under demanding video and torrent workloads.
Frame buffers and render targets are reused, redundant redraws are coalesced,
torrent range seeks prioritize the requested pieces, and fallback streams are
tried without blocking the controls. - Home and season pages use the available window. Continue items preserve
privacy until hover, artwork is restored, compact sections fit more content,
and episode lists scroll independently inside an immersive season view. - Remote access and account management are dependable. Web UI registration,
password changes, scoped administration, card actions, keyboard navigation and
screen reader behavior now work through the complete native-to-web flow. - Arch and Omarchy gain a direct Pacman package. Releases now include a
checksum-covered.pkg.tar.zstalongside the AUR source and binary packages,
.deb,.rpm, AppImage, self-extracting Linux installer, macOS app and DMG,
Windows MSI and portable zip, and both browser extensions.
Changes
Fixes
- keep detail routes alive through fetch failures (
98e1c08)
Performance
- bound settings worker repaints (
4b2dc52) - size video renders to visible viewport (
83d56f1) - coalesce redundant playback redraws (
3522e64) - eliminate repeated web polling work (
9ecd411)
Other
- Update IPTV fetch regression check (
f540790) - Update novel fetch regression checks (
18e2280) - Update music fetch regression check (
ecb01ac) - Update podcast fetch regression checks (
61eab43) - Update radio fetch regression check (
0525e8a) - Bound smart collection listing to one query (
fdaa931) - Use reliable fetch for IPTV ingestion (
1dc47f6) - Use reliable fetch for novel sources (
eb88995) - Keep podcast timing dependency (
f8575d3) - Add live smart history collections (
082156b) - Probe remote playback health by default (
2fd103e) - Use reliable fetch for music servers (
83e08dd) - Route podcast requests through reliable fetch (
88fbcc2) - Route radio requests through reliable fetch (
8d3a7f8) - Add bounded stream fallback chain (
567250d) - Reuse player frame buffers (
c1bec5b) - Prioritize torrent pieces for range seeks (
cda82a5) - Fix native Web UI account actions (
0ab8723) - Fix macOS media open panel layout (
0c9d304) - Complete web keyboard and screen reader pass (
74b1495) - Add scoped web account management (
e28d7de) - Clarify web card playback destinations (
6289713) - Make TV season view immersive (
2ed72b2) - Update player contrast feature assertion (
59b5646) - Centralize player contrast colors (
9cf7ed5) - Align self-hosted library navigation (
97f2c1c) - Add authenticated OPDS cover gallery (
bcbd492) - Polish secondary browse galleries and loading states (
c02e3ed) - Unify Home continue shelf and restore covers (#66) (
b1d9b05) - Add custom source management lifecycle (
7da2347) - Polish home player and transient scrollbars (
6249a05) - Strengthen anime NSFW filtering (
6ad9ea8) - Improve anime and drama browse resilience (
7b49977) - Start YouTube at real 1080p and switch quality instantly (
a4986d5) - Keep player chrome interactive while loading (
252dc33) - Refine YouTube toolbar and player glyphs (
46a10c9) - Polish player controls and accelerate YouTube startup (
0446dde) - Fix YouTube playback and cancellation (
77c0c03) - Make YouTube browsing smooth and race-safe (
3298a26) - Add smooth paging to remaining browse views (
8f749ee) - Retry empty Movies and TV catalog loads (
c19170a) - Virtualize connected reading libraries (
83b6a51) - Fix browse menu and narrow layouts (
bdb437b) - Polish audio browse surfaces (
5ab7625) - Add Internet Archive novel browsing (
8ea57f9) - Harden media browse surfaces and torrent player responsiveness (#59) (
d1ff9c0) - Polish player controls and fix interaction bugs (#58) (
9871fff) - Fix Auto video framing and add crop presets (#57) (
bd8dde8) - Install bundled macOS app through Homebrew for v0.8.6 (
19ba4a2)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): prepare v0.8.7 (#93) (
a0c7de4)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.6...v0.8.7
v0.8.6
Highlights
- The Linux AppImage opens on Arch again. Packaging keeps the bundled
libtorrent runtime but uses the host's OpenSSL pair alongside host libcurl,
avoiding the older bundled OpenSSL symbol mismatch. Release verification
checks the extracted libraries and starts the packaged app. - First launch is optional and usable in short windows. A centered welcome
dialog offers keyless Movies & TV browsing or Home, with one optional starter
source install action; it stays reachable after a window resize. - Movies & TV is easier to browse. Poster cards remain readable instead of
collapsing into tiny columns, the icon toolbar stays aligned and scrolls on
narrow windows, and card actions and Details remain reachable while scrolling.
Source and More menus close after selecting a destination. - Universal results are denser without hiding actions. Long titles wrap,
torrent quality and seed counts appear once, trailers are grouped separately,
and the Play and Queue controls remain visible. Adding a torrent to the queue
no longer starts playback. - Deleting a playing torrent clears the player. Stopping the stream
cancels pending reads and clears its last frame before removing downloaded
files; the empty player offers a local file picker or universal search. - Windows playback controls fit scaled displays. The native titlebar
hitboxes follow DPI scaling, compact navigation stays accessible, and an
optional VLC handoff is available under Playback settings. - Source installation explains progress and failures. Its current stage,
final status, redacted logs, and recovery steps are visible in the catalog. - Cinemeta poster artwork loads from full image URLs. Movies & TV no
longer truncates long cover URLs, including those in Thor searches.
Changes
Features
- bring custom IPTV management to desktop (
8bbbdf6) - manage multiple custom IPTV sources (
8a930be) - complete Suwayomi server lifecycle (
8a91fb2) - complete debrid credential lifecycle (
86e0c6a) - expose explicit playback destinations (
9f05ae1) - retain ranked playback fallbacks (
b2e9f9a) - index and manage local libraries (
89bc9c6) - bring collections to desktop (
2541e65) - add reusable queue collections (
bb6999c) - persist movie preferences (
76a48ed) - unify direct media actions (
1119a59) - restore reading server sessions (
de78231) - persist and manage RSS sources (
d59fbaf) - harden accessible web reflow (
519607a) - enforce web performance budgets (
6c133c8) - persist Plex favorites (
3119ab9) - unify playable source details (
fd51fc9) - complete catalog item details (
31ea12a) - expand unified content details (
e3145b0) - unify self-hosted media details (
288fb92) - sync Plex ratings (
1741e07) - sync Plex watched state (
53c44e6) - add hierarchical Plex browsing (
49f7ad7) - sync Jellyfin user state from web (
37caa6c) - surface AniList authorization recovery (
949f721) - manage transfer history from web (
5abad7c) - add safe web download file actions (
e35f0c5) - bound web library rendering (
202c22d) - persist library view preferences (
0f14f1b) - synchronize web movie history removal (
366e91e) - sync verified movie history removal (
3046a39) - converge episode history sync (
e347620) - sync verified movie completion (
41ae0d8) - harden Trakt account recovery (
90d85ed) - add durable SIMKL watched sync (
cc40a37) - add durable AniList progress sync (
6fd39e2) - make Trakt history sync durable (
cab890e) - add executable plugin permission review (
21bfd21) - add web subtitle discovery controls (
f61a1e4) - add installed plugins to universal search (
32d2a74) - add Plex to universal search (
3537d29) - restore typed catalog search (
bfe62f8) - redesign TV episode browsing (
a2d38c8) - unify web and native media search (
374e920) - make web playback failures actionable (
d102538)
Fixes
- restore AppImage startup and polish browse UX (v0.8.6) (#55) (
9d5d0aa) - hold stall position on torrent EOF-reload, skip EOF-parked history saves (#53) (
73931eb) - keep self-hosted credentials out of URLs (
6560f04) - stabilize Plex web playback identity (
02b169b) - route Jellyfin cards by media type (
8ef5561) - bind AI subtitles to playback identity (
71078c7) - isolate resolver result consumers (
b214445) - bind episode picks to resolver generation (
7d2bd9b) - bound torrent detail resolution (
4f26359) - make cold queue playback deterministic (
874fff0) - make yt-dlp discovery race free (
9319f41) - supervise universal search fanout (
515a059) - bound playback helper probes (
70f1462) - make live stream resolution stale safe (
330537c) - close the activity flush wakeup race (
6eacb9a) - supervise playback enrichment workers (
e4549da) - bound plugin artwork transport (
70bdd96) - supervise shared artwork workers (
4737f83) - bound browser and comic image decoding (
1004abe) - bound all provider cover decoding (
a70f351) - preflight queue thumbnail decoding (
3ec8387) - bound and cancel torrent stream reads (
9955d04)
Performance
- instrument web responsiveness (
6b98a75) - paginate web library responses (
ad2575e) - cache TV detail library state (
a2f63c8) - sleep while python discovery is shared (
61ee5cb) - coalesce periodic resume persistence (
6d544a3) - persist resume state off the frame loop (
4bf2fb3) - issue new media before resume bookkeeping (
7f8fbe0) - keep preference writes off playback (
0253aaa) - enforce the global artwork fetch cap (
cc60366) - measure in-app playback from click (
cf9c465) - defer playback until prewarm inputs are ready (
8cbf247) - keep first playback action non-blocking (
9c95e56) - bound shared artwork decoding (
84b7d57)
Other
- Fix streamed-torrent teardown, small-screen playback and release packaging (
2f46b08) - Add Donate chip to top nav (shell wiring) (#52) (
2f68278) - Harden browse catalog, TV detail, and resolver sources (#51) (
10b0079) - Pin verified 0.8.5 packages (
a2f8970)
Internal (5 commits — tests, refactors, CI, docs)
- refactor: stabilize movie library identity (
d106cdf) - chore: ignore isolated build checks (
cb320b1) - docs: record TV detail quality gates (
2192a6f) - refactor: simplify TV library status control (
cd4e45f) - refactor: consolidate TV season controls (
fa5551d)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.5...v0.8.6
v0.8.5
Highlights
Releaser: Palash Debnath
- Files open like a media player should. Opal presents a finished first
frame instead of exposing the startup shell, overlaps safe initialization,
prepares libmpv early, and keeps local-file loading off unrelated database,
model and network work. Measured Windows ReleaseFast baselines are 171 ms
startup p95 and 121 ms local-video first-frame p95. - Now Playing is an immersive, responsive surface. Video occupies the full
client area while glass controls and navigation float above it, remain
legible over bright scenes, hide smoothly when idle, and avoid overlapping
close actions. Back, Settings, Close and track pickers respond on the first
click; outside clicks dismiss popovers without consuming the intended action. - Windows behavior is native again. The custom title bar exposes caption
hit testing, resize borders, maximize/restore behavior and Aero Snap while
preserving drag from safe background regions. File and magnet associations
now cover the common video, audio, playlist and torrent formats. - Playback choices survive the next file and restart. Aspect mode, speed,
hardware decoding, audio/subtitle language and track choices are restored
safely. Direct, playlist, queue and torrent playback have explicit ownership,
actionable pre-playback fallback, and honest hardware-decoder feedback. - The omnibox finally adapts to intent. Links and paths open, normal text
searches the visible source or universal catalog,?recalls local memory,
and>or a question invokes the assistant. Slow semantic recall runs in a
generation-safe worker instead of freezing the interface, and Browse uses a
compact grouped source menu. - Queues, torrents and self-hosted libraries recover cleanly. Queue order,
repeat/shuffle and cold-start actions are durable; torrent opens wait for the
engine without needing a second click and restart from privacy-safe swarm
identity plus bounded fast-resume data. Jellyfin, Plex and Audiobookshelf
regain authenticated resume, alternate-version recovery and non-blocking
progress reporting. - Credentials and helpers are safer. Windows secrets use current-user DPAPI
with legacy migration, credential-bearing playback URLs are scrubbed from
persistent identity, and yt-dlp/model downloads are explicit, HTTPS-only,
checksum-aware staged updates that cannot replace a working helper on a bad
download. - The release has measurable gates. Startup, playback, close and resource
probes are checked alongside Zig unit tests, web lifecycle tests and 442
whole-product feature checks using an isolated generated database fixture.
Changes
Features
- harden playback and content workflows (
2c3c8f3)
Fixes
- support libtorrent 2.0 checkpoints (
257e513)
Other
- Pin verified 0.8.1 packages (
48c5180)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): 0.8.5 (
4fcc68e)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.1...v0.8.5
v0.8.1
Highlights
- YouTube plays on Windows again, and picks the right stream. The bundled
yt-dlp path never reached mpv (a malformed option made mpv drop it), so
YouTube links failed unless a system yt-dlp happened to be on PATH. Fixed.
HDR uploads now play their SDR rendition — the correct picture on Opal's
8-bit render path, ~20% less bandwidth, and 4K60 at a steady 60 fps. - 4K HDR files play smoothly. Video is rendered on a per-player worker
thread and uploaded in place into a persistent texture, and HDR sources no
longer rebuild mpv's scaler every frame. A 4K Dolby Vision file that ran at
~4 fps now holds its native rate. - Works with Ubuntu 22.04's mpv 0.34. Playback no longer hangs on
"Opening stream" on libmpv older than 0.38; a rejected load is now reported
in the log and as a toast instead of silently. Minimum versions (libmpv,
SDL, glibc for the AppImage) are documented in the README. - Pair a phone with one scan. Settings › Web UI shows a QR code of the LAN
address (carrying the one-time setup code on first use) when the server is
bound to your LAN, plus a README walkthrough. opal <file-or-url>opens the file again on the desktop build.- Movies/TV catalog search is always visible, and "Find" is now "Search".
Changes
Other
- Cast mpv_client_api_version() to u32 for the loadfile shape check (
9527730) - Fix loadfile on mpv < 0.38 and add a phone-pairing QR to Settings (
6d8106e) - Make the feature suite green after the render-worker and transport changes (
f70a32f) - Make 4K HDR playback smooth on the software render path (
f08ad7b) - Fix YouTube loading on Windows and prefer SDR renditions (
76d9711) - Make Movies/TV catalog search always visible, rename Find to Search (
17c005c) - Local changes: http transport extraction, worker shutdown, player and service refactors (
8afd53b) - Pin verified 0.8.0 packages and record passing feature checks (
0f94a55)
Internal (1 commit — tests, refactors, CI, docs)
- chore(release): 0.8.1 (
80b344b)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.8.0...v0.8.1
v0.8.0
Highlights
- TV browsing fits small and short windows. Episode thumbnails, titles,
descriptions and controls adapt to available space, with a single page
scroller and a themed, scrollable season picker. Selecting a season dismisses
the menu; Retry can recover a failed season fetch. - Continue watching shows episodes, not raw filenames. Home offers one
landscape card per tracked show, episode artwork when available, and an exact
next-episode action. Keyless episode metadata works after restarting too. - Navigation is compact and search is unified. The source picker sits by
the logo, and one field handles questions, searches and pasted links. Narrow
windows retain navigation and wrap their controls. - Episode startup and tracking are more reliable. Playback enters its
loading state promptly, tries bounded fallback sources, selects the requested
torrent episode, and tracks actual viewing rather than counting seeks as
watched time. Large season libraries and specials retain their identities. - Restore your session with confirmation. Closing saves playback position
and episode identity; reopening asks before restoring playback. - Update checks and Linux packaging are hardened. Update work uses bounded,
cancellable processes and synchronized state; subprocesses inherit the
environment, and Linux.runpackages include required runtime resources.
Changes
Other
- Improve responsive TV browsing, episode continuity and update reliability (
13da8f2) - fix release workflow reruns (
8bfb6fd) - fix headless shutdown compilation (
82e9ccd)
Internal (2 commits — tests, refactors, CI, docs)
- chore(release): 0.8.0 (
a4f982e) - chore: pin Homebrew checksum for 0.7.0 (
e7bd106)
Install: curl -fsSL https://raw.githubusercontent.com/debpalash/Opal/main/scripts/install.sh | sh
Verify a download against SHA256SUMS.txt below.
Full Changelog: v0.7.0...v0.8.0
v0.7.0
Highlights
- Closing Opal is immediate and final, even during active playback. Native
window close,Ctrl+W, andCtrl+Qnow share one bounded teardown path;
playback stops before the surface disappears, raw SDL/Wayland close events
cannot leave a windowless stream behind, and stuck workers cannot keep the
process alive indefinitely. - Background work no longer races the UI during shutdown. Resolver, search,
poster, HTTP, and stream-proxy work receives cancellation before teardown,
UI refreshes carry the real window, and the worker supervisor drains owned
tasks before shared state is released. - Linux AppImages launch through an explicit runtime entry point. The
release pipeline now packages the expected AppRun launcher and validates the
resulting image, alongside the existing tarball, DEB, RPM, and.run
formats. - The keyless Movies & TV flow is documented end to end. A new guide shows
how Cinemeta browsing, search, posters, and TV season/episode navigation work
without a TMDB key, with clearer privacy and provider-boundary documentation.
Changes
Features
- add AppImage launch support and keyless guide (
eb1619b)
Other
- chore update test results (
414416c) - stop playback when closing the app (
d8a12cb) - fix keyboard and native window close responsiveness (
81cfeb2) - fix unresponsive app shutdown path (
6a09f51) - fix shutdown freezes and worker refresh races (
f0e6274)
Internal (2 commits — tests, refactors, CI, docs)
- chore(release): 0.7.0 (
b6ede5a) - chore(brew): pin the v0.6.6 artifact checksum (
3bfed7e)
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.6...v0.7.0

