Beta 程式
在访问测试中签名或註冊,构建,發布注释,以及当前开发版本的详细程式資訊.
签名或註冊
在确认您的帳號后, 在 Songbook Buddy Beta app 中使用相同的邮件和密码 。
Beta 规则 — 在加入前阅读
Beta 构建是未完成的軟體. 通过註冊,您接受这些条件:
- 崩溃,資料丢失,和破损的特性都可能发生. 保留你关心的歌曲的备份.
- 使用单独的Songbook Buddy Betaapp和β雲后端——从不将测试資料与您的發布库混合.
- 你的Beta帳號只接受Pro和Cloud测试 这些赠款不转至公共發布应用或生产雲。
- 仅在我们的Discord频道中报告错误并提问——而不是通过公共支援的电子邮件.
- 移动测试仅通过TestFlight(iOS)和Google Play内部测试(Android)进行.
- 不要共享β构建,登入链接,或程式外的未释放特性.
- 您可以随时刪除您的β帳號; 当β结束时, 我们可以取消访问 。
註冊或签名意味着你接受这些规则。
Beta 规则 — 在加入前阅读
Beta 构建是未完成的軟體. 通过註冊,您接受这些条件:
- 崩溃,資料丢失,和破损的特性都可能发生. 保留你关心的歌曲的备份.
- 使用单独的Songbook Buddy Betaapp和β雲后端——从不将测试資料与您的發布库混合.
- 你的Beta帳號只接受Pro和Cloud测试 这些赠款不转至公共發布应用或生产雲。
- 仅在我们的Discord频道中报告错误并提问——而不是通过公共支援的电子邮件.
- 移动测试仅通过TestFlight(iOS)和Google Play内部测试(Android)进行.
- 不要共享β构建,登入链接,或程式外的未释放特性.
- 您可以随时刪除您的β帳號; 当β结束时, 我们可以取消访问 。
註冊或签名意味着你接受这些规则。
包含在β中的雲
每个确认的Beta帳號只得到Pro和Cloud在Beta后端. 在Songbook Buddy Beta内部用同一个帳號签名,以解锁乐队模式,雲同步,以及测试期间所有Pro特性.
最新公开beta建筑: 1.0.23
并排發布应用和β应用
在测试新建筑时,你应该能够继续使用稳定的应用来进行演出,而不要混淆你的歌曲库。
- 在您的平台上安装 beta 作为单独的应用程式, 并带有自己的图标和名称( Songbook Buddy Beta) 。
- 每个应用程式都保留自己的本地資料库,設定,以及裝置身份——在β中的编辑不会触碰您的發布库.
- β中的雲同步使用单独的后端项目,因此测试資料永远不会覆盖生产同步資料.
- 在桌面上,您可以同时运行两个应用程式;在移动/桌面上,您可以在两个安装的应用程式之间切换.
直到所有平台上的单独的β应用船,安装一个β构建可能取代该裝置上的当前应用. 在可能情况下,优先使用备用裝置。
Beta 支援频道
在β期间,我们只通过这些渠道支援测试者:
- Discord——错误、问题和讨论
- TestFlight — iOS beta 安装和更新
- Google 播放内部测试 — Android beta 安装和更新
公共支援页面和支援电子邮件不用于β期.
最近建筑
最新条目——开放旧楼完整名单.
仅成员
在上面签名或註冊以查看β發布注释和下載.
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.