github getmydia/mydia v0.15.0-beta.3

pre-release3 hours ago

43 PRs since v0.15.0-beta.2. This is a player-focused release: D-pad scrubbing and remote navigation on Android TV, native bitmap subtitle rendering during playback, per-show subtitle memory across devices, in-app release track switching, and frosted glass OSD styling.

Upgrade notes

  • Two additive migrations: the player remembers subtitle choices per show across episodes and devices via a new preferences table, and subtitle acquisition language is separated into downloads.subtitle_language (subtitles.subtitle_language now controls default playback) (#869)

Player

  • Android TV gains D-pad scrubbing with hold-to-accelerate seeking, thumbnail previews, and a focusable timeline (#865)
  • Android TV D-pad navigation reaches the sidebar and Home hero, traps focus in open dialogs, and trims unneeded touch controls from the playback OSD while keeping it open during remote input (#845, #846)
  • Bitmap subtitles (PGS, VobSub, DVB, XSUB) render natively during HLS streaming and direct play (#861)
  • Subtitle selections persist across quality switches and source fallbacks without racing background file transitions (#855, #860)
  • Auto quality mode optimistically attempts direct play and remembers recent stalls per connection path instead of falling back on throttled EWMA bandwidth estimates (#856)
  • Seeking or closing a stream cancels the upstream byte-range download immediately rather than spooling discarded data to disk (#841)
  • Large TV seasons load reliably over P2P by trimming unused fields under the response cap, and media segment requests no longer block on database liveness updates (#829, #830)
  • Web player streams HLS through hls.js to fix mid-file resume freezes, and renders HTML5 video track cues so subtitles display and toggle properly (#867, #868)
  • Player UI adopts consistent frosted glass styling across all on-screen surfaces, replacing Material SnackBars with a content-aware glass toast notification layer (#858, #862)
  • A live Stats for nerds overlay displays real-time playback metrics (resolution, bitrate, dropped frames, buffer health, link path) with a one-click debug copy button (#852)
  • The calendar gains a 7-day week view with device layout memory, and reserves bottom clearance so the mobile dock no longer obscures entries or settings (#842, #843)
  • Player remote control works end-to-end across peers, and the ambient device scan only probes online devices to prevent periodic connection storms (#832, #836)
  • Reconnecting a stored casting session preserves show context, and local playback stops displaying remote casting banners (#835, #837, #838)
  • Fixed player crashes caused by GraphQL timeout retries, auto-recovered corrupted playback memory boxes, and stopped up-next from jumping to S1E1 after completing a special (#833, #839)
  • The player can follow Stable, Beta, or Dev release tracks, enabling in-app switching and automatic self-updates on Android (#848)
  • Upgraded the player to Flutter 3.47.4, enabling Impeller rendering by default on Linux and Windows (#864)
  • On-demand and release player workflows package Android APK artifacts reliably, gate Play Store uploads on credentials, and publish dev builds to Cloudflare R2 (#834, #850, #871)

Library and search

  • Library sections and media pages display storage size for TV shows and seasons, support sorting by size on disk, and format sizes above 1 TB correctly (#844, #847)
  • Automatic release intake shadows a strict release identity check alongside title matching to prevent mismatched downloads for short or air-dated titles (#857)

Under the hood

  • The P2P core event loop is fully asynchronous, dispatching outbound requests and HLS stream writes into dedicated concurrent workers to eliminate head-of-line blocking (#831)
  • SQLite prepared-statement destructors in Exqlite avoid blocking connection locks during busy waits, preventing 30-second VM freezes (#828)
  • The Cloudflare Worker metadata relay supports KV-driven traffic cutover with shadow comparison, and caches routing config to minimize KV reads (#853, #863)
  • Upgraded toolchain to Elixir 1.20 and Erlang/OTP 29.1 across all build paths, resolving compiler warnings and updating Docker images to Alpine 3.24 (#849, #851, #854)
  • Player E2E tests are enforced as a required CI check, Nix PostgreSQL builds support structured attributes, and pre-commit hooks install cleanly across multiple worktrees (#840, #859, #866)

Incomplete release. Published without: ios (failure)

Don't miss a new mydia release

NewReleases is sending notifications on new releases.