Fixed
On Android, the lock screen, notification and car display kept showing the previous track after a crossfade.
EnginePlayer is a ForwardingPlayer around one of the two voices. It overrode only the getters describing where playback is — position, duration, state — and left everything describing what is loaded to the wrapped player. That was correct while swapVoices() was never called, and the comment above it said so. Giving Android engine-driven advances made the crossfade swap for the first time, so after an odd number of fades the wrapped player was the idle voice, still holding the track it last played.
The metadata, timeline and media-item getters now follow the active voice like the rest. Verified on device across a crossfade: session metadata moves with the audio, where before the outgoing track's title persisted indefinitely.
Full changelog: https://github.com/yuzicapp/yuzic-engine/blob/main/CHANGELOG.md