Skip to content

fix: startup crash, player status bar, system equalizer, Shorts playlists and bot wall - #1381

Merged
A-EDev merged 14 commits into
mainfrom
fix/datastore-statusbar-eq-playlists-botwall
Oct 20, 2026
Merged

A-EDev merged 14 commits into
mainfrom
fix/datastore-statusbar-eq-playlists-botwall

Conversation

@A-EDev

@A-EDev A-EDev commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Startup crash ([Bug]: FileNotFoundException in IoBridge.java:569 #1355, [Bug]: FileNotFoundException in IoBridge.java:569 #1362): DataStore 1.1.1 to 1.1.7, which retries the first read that raced the file's creation. Every preferences store now retries a failed read and then falls back to defaults instead of crashing. The crash screen shows a report once instead of on every launch.
  • Status bar ([Bug]: Status bar icons not showing #1375): the expanded video player counts as drawing under the status bar, so the icons turn light over its black strip in light theme.
  • System equalizer ([Bug]: "System Equalizer" Does Not Work #1373): since Media3 1.6 the audio session id arrives after the player is built, so it was always read as 0 and never announced. A new AudioSessionAnnouncer listener opens each session when ExoPlayer reports it and makes the playing player the system equalizer's session. The panel is built at tap time with that session, and the loudness gain is applied once the session exists. Listeners only, player construction unchanged.
  • Playlists ([Bug]: Missing videos in playlist #1358): Shorts-only playlists arrive as a grid of 100 with no next page; the grid is parsed and re-requested once as the full list. One page walker replaces three loops, and a walk that did not finish is never cached or synced over a saved copy. The header says when YouTube hides unavailable videos. The playlist request no longer reads NewPipe's client version.
  • Bot wall ([Bug]: Youtube Is blocking this network since 3.0.0 (Thread) #1354): when every client is walled at /player, Flow re-rolls the visitor once and walks the ladder again; the first re-roll on a new network skips the shared budget. The error panel offers Reset YouTube session. The message names the network only when a fresh visitor is walled too, and mentions a VPN only when one is on. Diagnostics log the web clients' walls and the visitor's age and network.

Related issue

Closes #1354
Closes #1355
Closes #1358
Closes #1362
Closes #1373
Closes #1375

Change type

  • Bug fix
  • Feature
  • Refactor or maintenance
  • Build, packaging, or CI
  • Documentation

Validation

  • ./gradlew :app:assembleGithubDebug
  • ./gradlew :app:testGithubDebugUnitTest (4,276 tests, 0 failures)
  • I ran any additional flavor-specific build or test tasks affected by this change. (ktlintCheck, :app:compileFossDebugKotlin, python3 .github/scripts/nightly_notes.py --check)
  • I manually tested the affected behavior on an Android device or emulator.

New JVM tests: ReadSafeDataStoreTest, AudioSessionRegistryTest, AudioSessionAnnouncerTest, PlaylistWalkTest, plus new cases in VideoPlaylistPageTest, PlayabilityVerdictTest and VideoErrorMapperTest.

On the device:

  • Shorts-only playlist from [Bug]: Missing videos in playlist #1358: 157 videos with the hidden-videos note; the 970-entry one: 776 videos with the note.
  • Light theme: white status bar icons on the expanded player, dark icons once collapsed.
  • dumpsys activity broadcasts: MusicFX receives the video (MOVIE) and music (MUSIC) sessions with real ids, re-announced when each starts playing.
  • dumpsys media.audio_flinger with MusicFX switched on: Equalizer, Bass Boost and Virtualizer on Flow's playing music session; Flow's Loudness Enhancer on the video session.

Test device and Android version: Xiaomi 2311DRK48G, Android 16 (API 36)

Screenshots or recordings

Risk and compatibility

  • DataStore stays on 1.1.x; the 1.1.1 to 1.1.7 diff of the storage code is only the first-read retry.

  • The system equalizer change adds player listeners in the video player, the music service and the Shorts pool; how players are built, owned and released is unchanged.

  • A Shorts-only playlist costs one extra browse request. A fully walled extraction costs one visitor fetch and one more pass of the client ladder, once per visitor.

  • No preference migrations; the visitor store gains one key for the network the visitor was minted on.

  • The change does not introduce secrets, private data, or unexpected telemetry.

  • New user-facing text uses Android string resources.

  • Dependency and lockfile changes are intentional and limited to this PR.

  • Room schema changes include the required version bump and migration, or this PR does not change the Room schema.

  • Breaking changes and upgrade steps are clearly documented.

Copilot AI balanced review requested due to automatic review settings October 20, 2026 22:11

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions github-actions Bot added documentation Improvements or additions to documentation player Video and audio playback ui Compose UI, theming, or Material 3 surfaces extraction InnerTube / NewPipe extraction and networking build Gradle, dependencies, packaging, or R8 labels Oct 20, 2026
@A-EDev
A-EDev merged commit 38905c0 into main Oct 20, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Gradle, dependencies, packaging, or R8 documentation Improvements or additions to documentation extraction InnerTube / NewPipe extraction and networking player Video and audio playback ui Compose UI, theming, or Material 3 surfaces

Projects

None yet

2 participants