github cwuom/NeriPlayer NeriPlayer-2788a894.07281523

2 hours ago

What's Changed

  • feat: implement music sharing functionality for Xiaomi Super Island w… by @ghhccghk in #269
  • fix: decouple Lyricon position feed from playback progress update interval by @KyuharuTE in #268

New Contributors

Full Changelog: NeriPlayer-22fba63f.07231240...NeriPlayer-2788a894.07281523

Commits

  • 2788a89 feat: increase maximum target queue duration to 1500ms to prevent PCM drain
  • fb573b0 feat: implement expedited YouTube deep seek recovery and USB exclusive refresh retries
  • 29413b3 docs: update documentation for YouTube fallbacks, USB bit-perfect volume, and sync concurrency protection
  • 93f34f1 chore: update submodule reference
  • 9dbe949 feat(listen-together): require room credentials for joins
  • 988fa9e fix(lyrics): keep translations aligned and cards bounded
  • 948d9a3 fix(local): stage content URIs before sharing
  • 1b421cc fix(sync): preserve tombstones and concurrent updates
  • dae10d9 fix(download): preserve completed files during finalization
  • fc6b227 fix(player): harden lifecycle and USB recovery
  • ae9c3b6 fix(stats): serialize traffic accounting and deferred writes
  • 31e14dd fix(youtube): harden session persistence and first playback
  • 5176373 fix(usb): preserve PCM samples on compatible output
  • 7d33ac6 perf(youtube): stop rediscovering that NewPipe cannot read this player.js
  • 8e6ea15 perf(youtube): reuse the direct stream a missing PO token made us skip
  • 8f93834 fix(youtube): stop a routine response from deleting the cookies youtube logs in with
  • 7c883d3 fix(youtube): cache an anonymous bootstrap without archiving it
  • fc51a40 perf(youtube): time the bootstrap parse and skip the experiment flag blob
  • 47433e0 fix(youtube): stop persisting an anonymous bootstrap over a live login
  • 9f38416 perf(youtube): stop making playback wait for work it already has an answer for
  • 2bd2581 perf(youtube): stop refetching a bootstrap that was never the problem
  • fac2738 perf(player): keep a back buffer so rewinding does not refetch what just played
  • 6766dac perf(youtube): reuse a session-wide PO token instead of rebuilding the WebView
  • 2b80162 fix(youtube): warm playback for anonymous sessions too
  • 264abe7 fix(youtube): stop retrying cookie rotation Google keeps refusing
  • 1c8cec1 perf(youtube): stop redownloading player.js on every cold start
  • 661e368 perf(youtube): stop paying a full bootstrap parse on every cold start
  • 1cf4c09 fix: implement USB exclusive foreground recovery policy and playback restoration
  • de02dde feat(youtube): rotate the session cookies instead of hoping a page load does it
  • 74d8ea7 test(player): cover the local fallback setting on a real device
  • 7f684d1 fix(search): ask QQ Music for the translation it will not send unprompted
  • 78806f1 fix(player): let prefetch carry the matched local fallback result
  • 932a31b fix(youtube): keep identity cookies a rejected refresh was about to throw away
  • bb53457 chore(youtube): report how many audio candidates were discarded before one stuck
  • c8a9236 fix(search): tolerate a QQ Music lyric response that omits the lyric fields
  • 9a9c646 perf(youtube): solve the signature and the throttling parameter in one pass
  • 7bc4778 fix: display only track count for albums in Netease collection details
  • 8aa1042 perf(youtube): scan the bootstrap html once per field instead of twice
  • d8dde28 fix(youtube): stop wiping identity cookies a stale bundle never captured
  • 12dad24 feat(player): fall back to matched local audio when netease is restricted
  • 87c9b4f perf(youtube): stop making a tapped track wait behind the whole prefetch queue
  • 73f66f1 perf(youtube): let a tapped track cut ahead of the queued prefetch solves
  • 71abff6 fix(youtube): let a repeated startup stall give up on the direct stream
  • bc7fbcc perf(youtube): stop paying a full webview rebuild for a token that is still valid
  • 0169722 perf(youtube): stop refetching player.js just to read a signature timestamp
  • 7101e05 style: normalize comment punctuation to ascii
  • 3f87bf4 fix(youtube): let playback fall back off a direct stream the CDN keeps rejecting
  • 153f022 fix(youtube): finish web login when the redirect chain lands off youtube
  • 05d4404 fix(ui): keep nested detail scenes opaque so drawer transitions stop ghosting
  • eabc2fc perf(youtube): shorten the solve queue sitting in front of an interactive request
  • c3feb46 fix(youtube): never navigate to the sign-in page while login cookies are intact
  • d57e0c2 fix(youtube): stop a client that cannot use web cookies from dropping the session
  • 682352b fix(player): stop the now playing quality dialog from silently rewriting the default
  • 9d4efa6 perf(youtube): cut first-play latency from repeated whole-document bootstrap scans
  • cc0b628 fix(player): drop cache that holds a different representation of the same track
  • 9727684 fix(youtube): show progress while the login WebView verifies cookies
  • b3edb27 fix(youtube): restore playback and download on stale player.js and anonymous sessions
  • c03a630 fix: sync/download/settings resilience, playback + favorites, lyrics, YouTube, USB
  • 89dcc8f feat(sync): stream backups as raw GZIP(protobuf) bytes with read-both compat
  • ff97c4f merge: integrate mobile pipeline stability fixes (download/youtube/sync/player/listen-together)
  • 68ccbe2 fix(player): default playback wake mode to WAKE_MODE_NETWORK
  • 0269983 fix: decouple Lyricon feed and align status-bar lyrics timing (#268)
  • bdfe86e refactor: centralize song share URL generation with domain validation and unit tests
  • 2c421c4 fix: decouple Lyricon feed and align status-bar lyrics timing
  • 10c2a1b feat: implement music sharing functionality for Xiaomi Super Island with URL generation

实验性功能

  • USB 独占目前仍然在测试,有待进一步反馈。如果遇到任何问题请及时反馈。

备份警告

  • 当前同步数据模型已更新,不确保百分百向下兼容(理论不会丢数据,但是部分歌曲可能会被置顶),建议先备份后更新。
  • 这则提示会在后续 2 个 release 中持续出现

Don't miss a new NeriPlayer release

NewReleases is sending notifications on new releases.