feat: fix iOS builds installable using AltStore Classic/SideStore#28
Open
kubo6472 wants to merge 2 commits into
Open
feat: fix iOS builds installable using AltStore Classic/SideStore#28kubo6472 wants to merge 2 commits into
kubo6472 wants to merge 2 commits into
Conversation
Runtime: - Fix main.dart/router.dart import cycle and GoRouter redirect blocking - Use app support storage on iOS (Android-only external storage) - Safe connectivity checks, update API timeouts, mobile init guards - Remote debug logging for future mobile diagnostics CI (upstream-compatible): - Restore full multi-platform debugbuild workflow - SideStore IPA packaging in MACOSIOS - AltStore source generation in DEPLOY (docs/altstore-source.json) - Drop fork-only OTA GitHub Pages flow Co-authored-by: Jakub Doboš <kubo6472@users.noreply.github.com>
fbebf8b to
95bee91
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Single squashed commit on top of upstream
releasethat makes Floaty launch on iOS and distribute via SideStore/AltStore, while keeping upstream’s full multi-platform CI and deploy flow intact.Runtime changes (why the app white-screened on iOS)
Router / startup (tojemoc#10)
lib/app/flavor_theme.dart— movedflavorPrimaryout ofmain.dartto break a circular importlib/features/router/views/splash_screen.dart— extracted splash UI out ofmain.dart(same cycle fix)lib/main.dart— removedmain ↔ routerimport cycle; registersUpdaterControllerearlier; uses safe connectivity helperslib/features/router/controllers/router.dart— wraps auth/connectivity in error handling; usessafeCheckConnectivity()so redirect never hangs foreverlib/shared/utils/safe_connectivity.dart— catchesconnectivity_plusfailures instead of aborting GoRouter redirect (blank screen)lib/features/updater/respositories/updater_controllers.dart— 5s Dio timeouts + non-blockingredirectPathIfUpdateRequired()so a slow/failedfloaty.fyiupdate check cannot block navigationWhy: Release iOS builds could fail silently due to the import cycle, and GoRouter’s redirect could hang indefinitely waiting on connectivity or the update API — both manifest as a white screen.
Mobile init blockers (tojemoc#12)
lib/features/download/controllers/fp_download_service.dart— Android-only external storage; iOS usesgetApplicationSupportDirectory()for the offline librarylib/features/player/controllers/media_player_service.dart— guards platform-specific initlib/features/discordrpc/controllers/*— platform stubs so Discord RPC cannot crash mobile startuplib/shared/utils/platform_info_*.dart— platform detection helperslib/features/logs/repositories/log_service.dart+log_screen.dart— remote debug log reporting for future mobile issuesdocs/remote-debug-logging.md— how to use remote loggingWhy: The old code called
getExternalStorageDirectory()on iOS (Android API). It returns null on iOS, offline init failed, and the app never finished starting.Linux (bundled fix)
linux/packaging/appimage/AppRun— removes${LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}self-duplicationCI / distribution changes
Restored upstream workflow
.github/workflows/debugbuild.yml— full upstream pipeline restored:VERSION_BUMP→ Linux / Android / Windows / macOS+iOS →DEPLOY**), standard GitHub runners everywhere except Android (Blacksmith, as upstream)DEPLOYunchanged in spirit:manifest.json, floaty.fyi API upload, GitHub ReleaseiOS build fixes (in
MACOSIOS)--build-name/--build-numberonflutter build iosscripts/package-ios-ipa-for-sidestore.sh— repackages.app→ SideStore/AltStore-friendly.ipa(Payload/at zip root, ad-hoccodesign)Why: Upstream’s simple
zip Payload/produced IPAs that SideStore rejected (NSCocoaError 513). Ad-hoc codesign is required for sideloading unsigned CI builds.AltStore source (in
DEPLOY)scripts/generate-altstore-source.py— buildsdocs/altstore-source.jsonfrom all GitHub Releases (incl. pre-releases); waits for new release IPA to appear in GitHub API before regeneratingdocs/altstore-source.meta.json— static app metadatadocs/altstore-source.json— seed file; CI updates after each iOS deploy--no-bumpso it doesn’t re-trigger version bumpWhy: SideStore users add one source URL and get all builds. Upstream can link to this file from floaty.fyi.
Intentionally not included
manifest.plist,index.html, GitHub Pages)--no-codesignCI buildsAGENTS.mdREADME
docs/altstore-source.jsonHow to verify
docs/altstore-source.jsonupdates after deploy with the new build