Beta program
Sign in or register to access test builds, release notes, and detailed program information of the current development version.
Sign in or register
Use the same email and password in the Songbook Buddy Beta app after you confirm your account.
Beta rules — read before you join
Beta builds are unfinished software. By registering you accept these terms:
- Crashes, data loss, and broken features can happen. Keep backups of songs you care about.
- Use the separate Songbook Buddy Beta app and beta cloud backend — never mix test data with your release library.
- Your beta account receives Pro and Cloud for testing only. These grants do not carry over to the public release app or production cloud.
- Report bugs and ask questions only in our Discord channel — not via the public support email.
- Mobile testing is via TestFlight (iOS) and Google Play internal testing (Android) only.
- Do not share beta builds, login links, or unreleased features outside the program.
- You can delete your beta account anytime; we may revoke access when the beta ends.
Registering or signing in means you accept these rules.
Beta rules — read before you join
Beta builds are unfinished software. By registering you accept these terms:
- Crashes, data loss, and broken features can happen. Keep backups of songs you care about.
- Use the separate Songbook Buddy Beta app and beta cloud backend — never mix test data with your release library.
- Your beta account receives Pro and Cloud for testing only. These grants do not carry over to the public release app or production cloud.
- Report bugs and ask questions only in our Discord channel — not via the public support email.
- Mobile testing is via TestFlight (iOS) and Google Play internal testing (Android) only.
- Do not share beta builds, login links, or unreleased features outside the program.
- You can delete your beta account anytime; we may revoke access when the beta ends.
Registering or signing in means you accept these rules.
Cloud included in beta
Every confirmed beta account gets Pro and Cloud on the beta backend only. Sign in with the same account inside Songbook Buddy Beta to unlock Band Mode, cloud sync, and all Pro features during testing.
Latest public beta build: 1.0.23
What to test in this build
The beta channel is currently retired — there is no active beta build.
Release app and beta app side by side
You should be able to keep using the stable app for gigs while testing new builds — without mixing up your song library.
- Install the beta as a separate app with its own icon and name (Songbook Buddy Beta) once available on your platform.
- Each app keeps its own local database, settings, and device identity — edits in beta do not touch your release library.
- Cloud sync in beta uses a separate backend project, so test data never overwrites production sync data.
- On desktop you can run both apps at the same time; on mobile/tablet you switch between two installed apps.
Until the separate beta app ships on all platforms, installing a beta build may replace the current app on that device. Prefer a spare device when possible.
Beta support channels
During beta we support testers only through these channels:
- Discord — bugs, questions, and discussion
- TestFlight — iOS beta installs and updates
- Google Play internal testing — Android beta installs and updates
The public support page and support email are not for beta issues.
Recent builds
Latest entries — open the full list for older builds.
Members only
Sign in or register above to view beta release notes and downloads.
Version 1.0.23
August 11, 2026
A sync-reliability release fixing a permanent resync loop and a false "library was repaired" prompt on wiped devices:
- Uploaded rows are no longer stored as
pending. The generic outbox push uploaded the full local row without stamping its sync status, sopending— the local marker for "still waiting to be pushed" — was written into the server copy and pulled straight back down. The row then looked stranded, the 1.0.21 stranded-row rescue re-queued it, and that local write scheduled the next sync: a self-sustaining loop that resynced hundreds of rows on a library nobody had touched (one report: 765 rows, four cycles in a row). Uploads now strip the server-managed columns and stampsyncedat the single choke point every full-row upload passes, and pulls assertsyncedon every row written locally, so the wedged state cannot be represented on the device whatever arrives from the server. Existing backlogs heal on the next pull with no migration, and because the push also repairs the stored server value, devices still running an older build stop looping without updating. - A device with no library is not "behind a library repair". "Wipe local database" deletes the device's library-generation marker along with everything else, and reading it back defaulted to generation 1 while the account's server generation stays where an earlier repair left it. "This device has no idea which generation it is on" was therefore indistinguishable from "this device is two generations behind", so every wiped or freshly installed device on a once-repaired account took the destructive catch-up path — prompting about unsynced changes an empty device cannot have, and on a send-only device raising a hard sync block it had no way to clear. A missing marker together with an empty library and an empty outbox is now recognised as a fresh device: it adopts the server generation and lets the ordinary full pull fetch the library. A library that has rows but no marker still gets the prompt, because those rows can genuinely be pushed at the wrong generation.
- Smaller fixes: the release publisher no longer aborts one channel's publish because a different, deliberately retired channel still lists deleted artifacts — asset checks are now scoped to the channel being published, and a channel marked unavailable is skipped entirely.
Version 1.0.22
August 11, 2026
A fix release for chord spelling, enharmonic chord diagrams, silent DMX output and a stuck macOS modifier:
- Transposed chords keep their scale degree. The tonic moves a fixed number of letter steps and every chord moves with it, so a D in a song in E now transposes to Bb in C rather than A#. Borrowed and diatonic chords are both spelled the way a chart spells them; where the degree-correct name would need a double accidental or one of B#/E#/Cb/Fb, the song's own preference decides instead.
- Both spellings of a note reach the same chord diagrams. Db and C#, Gb and F# were separate namespaces in the chord lookup, so one of each pair fell through to calculated shapes while 254 of 260 curated fingerings sat unused. Reads now match either spelling for guitar, ukulele, banjo and mandolin, existing user grips and synced rows are found without a rename, and duplicate twins are folded away.
- DMX output reports when it is being dropped. When the OS refuses the app's Art-Net datagrams, the DMX sidebar now shows a warning naming the likely cause (the "Local network" permission on iOS/macOS) instead of looking healthy while nothing reaches the fixtures. The automatic socket rebind now backs off exponentially (2 s → 60 s) rather than retrying every two seconds indefinitely, and resets on recovery or a new target address.
- macOS: a stale ⌘ modifier heals itself. A lost key-up from a native menu or sheet could leave Command permanently "held", turning every plain keystroke in the editor into its shortcut until the app was switched away and back. The keyboard state is now reconciled against the engine after native menu callbacks and after each shell shortcut fires, so at most one keystroke misfires before typing works again.
- Smaller fixes: support reports now record which modifier keys were held when a shortcut fired; the DMX rebind log pair is throttled so it no longer crowds the rest of the support log out of the tail; two macOS marketing-capture failures (an IFS leak and a first-launch Gatekeeper timeout) fixed in the build tooling.