Latest release
v1.2.1 — bug-fix sweep from launch feedback
28 April 2026 · Build 6
A behind-the-scenes patch driven entirely by reports from the first cohort of users. No new features, but four bugs that were severe enough to ship fast.
Sign in with Google could fail silently on direct-download builds
Some users running the direct-download (non-App Store) build reported that signing in with Google would open the browser, let them complete the Google authentication step, but then leave them stuck on the login screen.
The direct-download build was using a different OAuth flow than the App Store build — a "loopback redirect" that opened a brief local server on 127.0.0.1 to catch Google's redirect. That flow has more failure modes than the ASWebAuthenticationSession path the App Store build uses (race conditions during teardown, conflicts with personal firewalls and security software, sandbox quirks). Both builds now use the same path, which has been running cleanly in the App Store build for weeks. The local-server entitlement was dropped from the direct-download build since it's no longer needed.
Scanner detected almost no BPMs and zero keys on large libraries
A user with ~800 tracks needing analysis reported that after running the scanner, only 3 BPMs had been detected and zero keys. Reviewing the audio analysis code revealed a Swift exclusivity violation in the channel-mixing step: the same in-memory buffer was being passed as both an input and an output to the same vDSP function. In optimised builds this produces silent memory corruption rather than a crash, which is exactly the kind of bug that's invisible in development but disastrous in production.
The mixing step has been rewritten with explicit pointer scopes that copy each input out before computing the next sum. While we were in there, three other improvements:
- A fallback decoder using
AVAssetReaderfor files the primary decoder (AVAudioFile) refuses to open. Catches some variable-bitrate MP3s, certain M4A containers, and FLAC variants on older OS versions. - A pre-flight check that the file actually exists at the path Rekordbox claims — a common failure when files have been moved or renamed since Rekordbox last saw them.
- Per-failure diagnostic logging via the system Console. If the scanner fails on a file you think it shouldn't,
Console.appfiltered tocategory:AudioAnalyzerwill tell us exactly what went wrong.
Playlists were running shorter than requested
Asking for a 90-minute set was producing playlists closer to 55 minutes for some users. The generator was estimating the number of tracks needed by dividing the requested duration by an assumed average track duration (4 minutes), then picking that many tracks. When users had libraries where actual track durations averaged shorter than 4 minutes, the playlist consistently undershot the target.
Replaced the count-based loop with a duration-driven one. The generator now keeps adding tracks until the next addition would put the cumulative running time further past the target than we already are. Result: playlists now match the requested duration to within roughly one track length, in either direction.
A side effect worth flagging: for users whose libraries lean towards extended mixes, you may end up with slightly fewer tracks than before. The generator now favours "closer to the requested time" over "more tracks". This is what the previous behaviour was trying to do; it just had the wrong math.
The same track could appear twice in one playlist
Users with the same song imported as multiple files — for example, an MP3 of an album version and a FLAC of the same release — reported seeing both copies in a single generated playlist.
The generator was de-duplicating only on Rekordbox track ID, which is unique per file. Two files of the same song get two different IDs. Added a second de-duplication pass on a normalised artist + title key. Different mixes of the same song (Original vs. Extended vs. VIP) have different titles and survive — they're different tracks artistically and legitimately belong in a set together. Two copies of literally the same song get collapsed.
If you hit anything else, contact@bootslist.app reaches me directly. Every single bug above was caught by a user — keep the reports coming.