v1.4.14
Songs stopped cutting off after half a minute, and the player controls now match what is actually playing.
Two things went wrong at once and they were unrelated, which is why the app felt so broken: tracks ended early on their own, and the interface disagreed with the audio. Both were traced to specific measurements rather than guessed at.
YouTube tracks now play from the main catalogue when possible
Given the one megabyte limit, a companion track can only ever play for part of its length. When the same song exists in the main catalogue — which has no such limit, verified end to end on eight of eight songs including regional titles — that version is now used first. YouTube is still used when nothing matches, since it carries a great deal of regional music the catalogue does not, and a partial track beats silence. Substitutions are still disclosed rather than made quietly.
Every song skipped after about thirty seconds
YouTube only lets us read about a megabyte from any one download link, and the limit follows how far into the file you are asking — not how old the link is. Measured from two unrelated networks on the same day: a brand new link serves anything up to roughly the one megabyte mark and refuses everything past it, and re-requesting a fresh link does not move the line. Depending on the recording, one megabyte is somewhere between twenty-five and sixty-five seconds of music. When the app hit that wall it closed the connection tidily, and a tidy close means "the song finished" to the playback engine — so it moved to the next track. The app now watches how much each link has served and quietly swaps in a new one before it runs out, and if something does go wrong it reports a real error instead of pretending the song ended.
The play button and progress bar disagreed with the audio
Pressing pause really did stop the sound, but nothing told the rest of the app. The event the player listens to carries the position, the buffer and the track — but not whether it is playing. So the button stayed on "pause", the progress bar kept sliding forward on its own, and the lock screen showed the wrong thing. The app now listens for that change directly.
Errors on a dead track went nowhere
Two separate listeners were attached to the same event stream, and only one of them handled failures. On a broadcast stream both receive the error, so the unhandled one still crashed past the handler that was supposed to catch it. There is now a single listener doing both jobs — and when a track does fail, the app finally says so instead of going silent.
A corrected song length would flicker back to the wrong one
When the app measures a track and finds the stored length wrong, it publishes the correction. The correction was being overwritten a moment later by the original value, because the underlying item cannot be edited in place. Corrections are now remembered and reapplied.
Good to know
- Downloads follow the same order now, so a download no longer wastes a megabyte of data on an attempt that cannot finish.