iPadOS: build universal iPhone+iPad archive, allow multitasking#25
Merged
Conversation
apps/mobile (new) — Capacitor 6 wrapper around the existing Vite
bundle. capacitor.config.ts points webDir at apps/web/dist; the
package's `build` script runs the web build then `cap sync`. The
Android and iOS native folders are gitignored on purpose because CI
re-scaffolds them every run (no Android/Xcode toolchain needed for a
plain `pnpm install` on the workspace). package.json scripts cover
the common flows: open Android Studio / Xcode, assemble debug APK,
xcodebuild archive (unsigned).
apps/desktop — restructured for Tauri 2 mobile.
- Split src/main.rs into a thin desktop bin and a shared lib.rs
exposing `pub fn run()` annotated with `#[tauri::mobile_entry_point]`,
so the same crate boots on macOS / Windows / Linux / Android / iOS.
- keyring is now under a target.cfg block so the iOS/Android builds
don't pull in a desktop-only dep.
- tauri.conf.json updated to a self-contained icons list pointing at
the freshly generated PNGs (32, 128, 256, 512). icon-source.png at
1024 is the regen source for `tauri icon`. macOS minimum bumped to
10.15.
- Marked src-tauri as its own [workspace] so the strict workspace
Cargo.lock at the repo root doesn't try to manage Tauri's deps.
Brand assets — generated a Tempest gradient + "T" stroke icon using
pure-stdlib Python (no ImageMagick required) at apps/desktop/src-tauri/icons
and apps/mobile/resources, so CI has a source of truth without a
binary commit at first launch.
Workflows under .github/workflows:
- web.yml — typecheck and build on every push / PR.
- desktop.yml — Tauri build matrix on macOS arm64, macOS x86_64,
Ubuntu 22.04, Windows. Generates icons via
`tauri icon` before the build, collects
dmg / app.tar.gz / deb / AppImage / msi / exe,
uploads as artifacts and attaches to the GitHub
release on `v*` tag.
- android.yml — Capacitor + Gradle. `cap add android` then
`assembleDebug` (or `assembleRelease` when
ANDROID_KEYSTORE_BASE64 is set), uploads APKs
and attaches to release on tag.
- ios.yml — Capacitor + xcodebuild on macOS-14. CocoaPods
install, archive Release with
CODE_SIGNING_ALLOWED=NO, wrap into Payload.ipa,
upload artifact + attach to release on tag.
- tauri-mobile.yml — manual-only alternative path that uses the
Tauri 2 built-in mobile targets, kept for users
who prefer the unified Tauri shell on phones.
docs/MOBILE.md walks through running each shell locally, the secrets
needed to sign the Android release APK, and how to take the iOS
unsigned archive into Xcode for distribution. Top-level package.json
scripts gain build:desktop, build:mobile, android:apk, ios:archive
shortcuts for local builds.
The iOS workflow now patches the freshly-scaffolded Xcode project so TARGETED_DEVICE_FAMILY stays "1,2" (iPhone + iPad), explicitly registers all four iPad orientations in Info.plist's UISupportedInterfaceOrientations~ipad, and sets UIRequiresFullScreen to NO so iPad split-view and slide-over keep working. xcodebuild gets the same TARGETED_DEVICE_FAMILY override on the command line so the archive itself never falls back to iPhone-only. The same defensive sed patch lands in the Tauri-mobile workflow's iOS job since `tauri ios init` scaffolds its own Xcode project. capacitor config and docs both call out the iPadOS support explicitly so the next person reading the repo doesn't have to guess.
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.
No description provided.