Nuvio Reshaped TV tester build
A test build for people helping to find bugs before changes reach Beta. Expect things to break.
Highlights
- Updated to upstream Nuvio TV 1.1.0-beta.9, including audio night mode and LFE downmix controls, HDR detection improvements, chapter/skip handling, and playback fixes.
- Retained Reshaped settings, AutoSync/AudioSync, seek previews, source recovery, pill navigation, and Arc format controls. The rebuilt decoder combines upstream audio changes with Reshaped end-of-stream and per-format transcode handling.
- Tester keeps grouped Reshaped settings and the latest held-seek TorBox filmstrip, cache, and colour-matching improvements.
Commits
- fix: name and state the remaining controls for screen readers
- fix: expose state on the catalog and genre picker rows
- Name and state the remaining TV controls for screen readers
- Add a fork-local CI job that runs the full unit suite on dev
- Fix stale StreamAutoPlaySelector binge-group assertion
- Stop profile overlays merging and name the remaining controls
- Announce seek position and stop the PIN overlay merging
- Announce auth, PIN and player errors to the screen reader
- Skip the Trakt refresh test when the build has no credentials
- chore: configure Dependabot version updates
- a11y: synopsis and settings tab semantics (#2)
- Merge accessibility-name-media-and-catalog-controls
- Eliminate playback tracking CPU and memory spikes for Simkl and MDBList
- fix: resolve accessibility merge conflicts
- Add unit tests for tracking playback and scrobble scenarios
- fix: add missing comma in EpisodesSidePanel semantics
- fix: reorder semantics before onFocusChanged in EpisodesSidePanel
- fix: restore back button focus/key handling in EpisodesSidePanel
- fix: remove literal backslash-n merge artifact in StreamAutoPlaySelectorTest
- Persist Simkl playback sessions separately from library snapshot
- Persist MDBList playback sessions separately from watched and dropped history
- fix: propagate cancellation instead of converting to IOException in Trakt refresh
- fix: name and state the remaining controls for screen readers
- fix: expose state on the catalog and genre picker rows
- Name and state the remaining TV controls for screen readers
- Stop profile overlays merging and name the remaining controls
- Announce seek position and stop the PIN overlay merging
- Announce auth, PIN and player errors to the screen reader
- test(a11y): cover settings tab semantics
- a11y(Synopsis): name truncated read-more action and overlay body
- fix: preserve accessibility semantics after rebase
- fix(a11y): drop duplicate content descriptions on card images and nav icons
- Optimize playback pause scrobble allocations in Simkl and MdbList
- build: enable Gradle caches and tune worker and JVM memory limits
- fix: allow a single local ABI for device builds behind nuvio.localAbi
- docs: record the October 4 accessibility handover
- chore: declare the gitignored local files worktrees should copy
- fix: restore upstream Gradle JVM args to stop fullDebug packaging OOM
- chore: drop non-accessibility changes from the a11y PR
- Parse Simkl and MDBList timestamps without regex or exceptions
- fix(ui): align server URLs to the left in RTL layouts
- feat(player): dim player controls on HDR video
- fix(player): don't save resume progress for live streams
- fix(player): sample the mpv duration growth from the tick, once mpv reports the new media
- Separate MDBList and Simkl playback DataStore and reuse MDBList projection index during scrobble
- Use empty sentinel in playback storage and clear playback before saving snapshot
- Avoid copying MDBList sibling map on pause and normalize completed scrobbles via media index
- Add Simkl entry index for constant-time scrobble and projection lookups
- Add unit tests for indexed Simkl and MDBList scrobble and projection paths
- Preserve existing media identifiers when applying completed MDBList scrobbles
- Reuse updated Simkl entry index when building projection after completed scrobble
- Add parametric equivalence tests for indexed Simkl and MDBList scrobble paths
- Avoid copying Simkl entry identifier arrays when only title changes
- Add DataStore unit tests for MDBList and Simkl playback tombstone and write ordering
- Scope MDBList playback overrides by account and preserve incremental projections with dropped shows
- Tie Simkl playback overrides to snapshot revision and invert save write ordering
- Allow retrying watch progress metadata hydration with bounded backoff
- fix(i18n): fix playback memory value ordering in Hebrew
- fix(ui): apply keepLtr to diagnostics values
- Add keepLtr helper
- style(ui): correct install URL field indentation
- i18n: add missing French strings and harmonize translations
- fix(servers): keep the Jellyfin title lookup working after the show's details expire
- fix(torrent): keep local torrent stream alive for external players
- fix(auth): remove main-thread jank on the QR sign-in screen
- fix(res): stop upscaling the logo PNGs at decode time
- fix(player): release the decoder when the app goes to the background
- fix(player): skip libmpv auto-retry on permanent HTTP errors
- fix(detail): don't show a black screen while the trailer starts or after it fails
- Fix subtitle lift after player controls hide
- Fix forced subtitle selection in MPV
- fix(accessibility): remove duplicate settings tab announcements
- fix(accessibility): keep subtitle controls upstream-compatible
- Fix dark addon confirmation overlay
- fix(player): skip tunneled playback when media audio goes to USB
- fix(settings): restore focus to previous item
- fix(updater): keep the update banner readable on light accent themes
- Fix QR settings overlay bounds and focus
- Fix QR settings overlay bounds and focus
- Revert "Fix QR settings overlay bounds and focus"
- fix(player): add Bluetooth media controls for internal mpv
- fix(posters): honour a percent-encoded {shape} in custom poster patterns
- fix(player): read MKV Tracks placed after the Clusters before the first Cluster
- i18n: add missing French strings and harmonize translations
- Revert "Fix forced subtitle selection in MPV"
- feat: use AssVideoEffectAsync to draw subtitles on video frames
- update latest missing strings
- update latest missing strings
- feat: ASS Render Mode setting + subtitle delay for libass
- fix: overlay description says devices instead of TVs
- fix: default render mode to overlay, update AAR to v0.0.10
- fix: lazy video effect activation + DV guard + dialog order + AAR v0.0.11
- fix: skip video effect rebuild on Dolby Vision content
- Initial translations
- fix(player): align libass overlays with video bounds
- fix(player): align libass overlays with video bounds
- fix(player): enable libass geometry diagnostics
- fix(player): redraw libass subtitles after margin updates
- Update strings.xml
- Update strings.xml
- Fixes
- Update fmt.Println message from 'Hello' to 'Goodbye'
- Fix source navigation during scraping
- fix(i18n): correct GB formatting in Hebrew
- fix(i18n): fix RTL formatting in playback buffer strings
- fix(ui): preserve refresh rate ordering in RTL layouts
- feat(i18n): complete missing Hebrew translations
- feat(i18n): complete missing Hebrew translations
- fix(player): map Montenegrin subtitles into Serbian (Montenegro)
- fix(build): skip updater dex metadata for debuggable variants
- fix: audio delay propagation + track preservation + cleanup
- improve player badge codec detection and add filename matching
- i18n: add missing Turkish strings
- derive skip intro intervals from chapter titles
- address review
- Missing import
- review fixes
- clear stale chapter skip state on source switch and gate MKV probe
- use skipIntervalCategory
- fix: sync plugins after addons and watch progress
- extract segmentCategory as shared top-level function
- update latest missing strings
- Fix possible skip button flickering
- Fix autoplay for episodes selected in player
- i18n: add missing French strings
- Fix blank posters when a DNS VPN is the active network.
- Remove device-only image logging from the poster fix.
- fix: pin plugin sync to the profile that started it
- perf(home): stop hero enrichment from recomposing all of the modern home
- Fix Addons page focus restoration
- Always try the network for poster loads.
- Improve button merging
- Add night mode for audio playback
- Scroll the audio menu controls with focus
- Add LFE level option for FFmpeg downmix
- Badges Improves after review
- Build fix
- Fix tests
- fix(home): pass enrichment as State, also from the folder screen
- fix(player): refresh mpv media session after pause and seek
- fix(player): avoid exposing stream URLs in mpv media IDs
- fix(player): guard mpv session setup and fix adapter release
- fix(player): respect live playback policy in mpv session seek controls
- Review fixes
- fix(player): keep playback controls hidden during mpv session seeks
- refactor(player): remove redundant mpv session handler refreshes
- Treat a DNS VPN as online without disabling the offline check.
- Review fixes
- Update strings.xml
- Add plurals for ambient mode timeout minutes
- Review fixes
- fix: repair 8 failing unit tests on dev
- fix(player): use segmentCategory for skip button timer continuity
- Hold back to exit post recomendation screen
- bump version
- update latest missing strings
- chore(i18n): complete Greek locale parity (ASS render mode, HDR control dimming, a11y descriptions)
- i18n(el): normalise accent in subtitle plural forms
- i18n(es): add missing Spanish strings and update changed ones
- Keep the player's engine when the same stream restarts
- fix(debrid): prepare links off the main thread
- Fix URL focus restoration on settings screens
- i18n: add French strings for audio night mode and HDR dim controls
- update latest missing strings
- Update strings.xml
- fix(player): detect HDR from the decoder input format
- fix(player): read HLG from the HEVC alternative transfer SEI in MKV
- i18n: add French strings for downmix LFE level and align dB spacing
- update latest missing strings
- Carry the LFE setting into in-place surround route changes
- Test the combined FFmpeg renderer against format and sink capabilities
- Stub the audio sink support predicate in renderer routing tests
Based on official NuvioTV 1.1.0-beta.9.