github knoop7/Ava 0.4.5

5 hours ago

Bug:

  1. Unified Sendspin playback chain lifecycle across stream clear / stream end / pause-play / reconnect scenarios to prevent reuse of underrun or destabilized AudioTrack instances. #63

  2. Fixed legacy playback chain not being fully decommissioned after stream end, reducing "half-beat" sync drift and baseline pollution on restart.

  3. Hardened clearBuffer() decommissioning strategy: active playback chains now undergo clean rebuilds instead of mere flush operations when necessary.

  4. Fixed buffer accumulation during prolonged WAITING_FOR_START states by adding controlled forced-playback protection.

  5. Added protection against extreme timestamp jumps: reconstructs timeline baseline instead of padding multi-MB silence blocks when gaps exceed reasonable thresholds.

  6. Fixed buffer saturation, consecutive packet drops, and GC jitter triggered by anomalous gaps.

  7. Added anomalous output limits to Opus decoder to prevent memory/buffer exhaustion from single oversized PCM blocks.

  8. Fixed Opus output reading to correctly decode using BufferInfo.offset/size parameters.

  9. Tightened handoff logic between pendingChunks and active playback queue to reduce startup-stage accumulation risks.

  10. Reinstated and fully enabled total PCM buffer ceiling to prevent unbounded queue growth.

  11. Expanded Sendspin total buffer capacity to enhance continuous playback stability under network jitter.

  12. Maintained backward compatibility: preserved legacy startup/sync philosophy while enhancing buffering capabilities only.

  13. Fixed log spam during playback speed adjustments: devices lacking speed support now silently degrade instead of flooding logs.

  14. Reset speed control state lifecycle across stop / clear / idle / rebuild paths to prevent state contamination of new streams.

  15. Added caching and rate-limiting to AudioTrack.getTimestamp() to reduce system log spam and instability detection during reconstruction phases.

  16. Restricted timestamp usage timing to reduce amplification effects from device stalls or retrograde timestamps on the sync state machine.

  17. Improved underrun detection conditions to prevent false positives during INITIALIZING / WAITING_FOR_START / stream-switching gaps.

  18. Added aggressive recovery path post-underrun, enabling clean AudioTrack reconstruction during actual playback states.

  19. Fixed intermittent song container visibility failures when initial media metadata arrives.

  20. Adjusted first-packet metadata filtering: now only discards empty cold-start packets rather than swallowing legitimate debut metadata.

  21. Fixed overly restrictive HA media metadata recognition: valid display now triggers if any of title, artist, or cover art is present.

  22. Relaxed song container display conditions: no longer strictly dependent on songTitle, now evaluates based on "any displayable content" criteria.

  23. Fixed song container mistakenly hiding during voice flows when we internally paused media: now distinguishes internal pauses from external stops.

  24. Extracted media resumption arbiter to unify handling of BUILT_IN_MEDIA / HA_MEDIA / SENDSPIN_PROTOCOL / VOICE_TTS line recovery.

  25. Resolved race condition risks from multiple simultaneous resume calls at voice end: now uses single-channel arbitration recovery.

  26. Enhanced reconnection compatibility: preserves legacy manual offset semantics while preventing old dynamic pipeline state contamination of new connections.

  27. Maintained sync semantics where 0ms = auto mode and non-0ms = manual mode, preserving legacy user calibration habits.

  28. Added independent upstream playback position validator to continuously track trackProgressMs / trackDurationMs / isPlaying.

  29. Integrated upstream position validation into critical recovery nodes: clearBuffer / enterIdle / stream start / thaw / underrun rebuild for timeline reconstruction.

  30. Sendspin sync strategy has evolved from "parameter tweaking" to a combined architecture of "clock synchronization + upstream position validation + clean playback chain reconstruction", preparing the codebase for release-grade stability.

Don't miss a new Ava release

NewReleases is sending notifications on new releases.