A small fix release: playback picks up exactly where you left it, and shuffle stops losing rows. Still fully on-device: no account, no catalogue, no network — nothing about your listening leaves the phone.
Fixed
- Resume lands where you paused. The saved position used to be rounded down to the last ten seconds even when you had paused; now a paused song reopens at the exact second, and a queue you cleared no longer comes back on the next launch
- Shuffle keeps every row it was given — it starts at the song you picked and holds on to duplicates through appends, reorders and restores
- Queue edits on Android arrive in order and can no longer land on a queue that is still being replaced
New screenshots
The README, the demo gallery and the F-Droid listing now show the current design — For You, the player, lyrics, playlists, the map, the light theme, statistics and pages.
Install (Android)
Download LatentJam-v0.5.1-arm64.apk (94 MB — right for virtually every phone from the last decade; if unsure, pick this one). LatentJam-v0.5.1-armv7.apk exists for old 32-bit devices. Open it on your phone — it upgrades any earlier release from here in place. You'll need to allow installing unknown apps, and tap through Play Protect's sideload warning. Requires Android 7.0+.
Install (iOS)
LatentJam-v0.5.1-unsigned.ipa is an unsigned build: sideload it with AltStore, Sideloadly or similar (they re-sign it with your Apple ID). Built for iOS 15+, arm64.
F-Droid
LatentJam is on F-Droid; it builds this version from source on its own schedule, usually within a few days. That build is signed with F-Droid's key rather than the one used here, so the two cannot upgrade each other: to switch, export your data first (Settings → Local backup), uninstall, then install from F-Droid and restore.
⚠️ Still an early experimental build for sideloading — not a store release. SMART becomes good once a chunk of your library has been analysed in the background.