97 lines
3.9 KiB
Markdown
97 lines
3.9 KiB
Markdown
# M49 iOS Device Validation
|
|
|
|
## Status
|
|
|
|
- Plan: `M49_IOS_DEVICE_VALIDATION`
|
|
- Status: `DEFERRED`
|
|
- Activated: 2026-09-06
|
|
- Baseline: `1c2ed4a` (`M48_UI_LAYER_CLEANUP` closure)
|
|
- Owner request: make the current playable MVP installable on a real iPhone for visual and touch validation.
|
|
- Deferred on 2026-09-06 by the owner while the responsive UI element slice is
|
|
prioritized. M49-C remains uninstalled and can resume after M50 handoff.
|
|
|
|
## Objective
|
|
|
|
Prepare a Godot iOS export path and an Xcode project that can be installed on
|
|
the owner's device. This plan covers local debug/device validation only; it
|
|
does not authorize TestFlight, App Store submission or release packaging.
|
|
|
|
## Player-visible stopping point
|
|
|
|
- The project has an iOS export preset with a unique owner-approved Bundle ID,
|
|
Apple Team ID and landscape orientation.
|
|
- Godot exports an Xcode project without changing gameplay, UI, Save/Receipt,
|
|
content or static-master assets.
|
|
- Xcode can build and install a debug app on the owner's connected iPhone after
|
|
the owner trusts the developer certificate.
|
|
- A short device checklist covers touch targets, safe area, rotation, text
|
|
scale and the Market → Readiness → Battle Result loop.
|
|
|
|
## Required owner inputs
|
|
|
|
- Apple Developer Team ID (10-character value).
|
|
- Desired unique Bundle ID, for example `com.yourdomain.aetherboundguild`.
|
|
- iPhone connected to the Mac with Developer Mode enabled and the owner signed
|
|
into Xcode, if automatic signing is selected.
|
|
|
|
## Ordered steps
|
|
|
|
### M49-A — Export contract and preflight (`COMPLETE`)
|
|
|
|
- Freeze the local-device-only scope and required owner inputs.
|
|
- Confirm macOS/Xcode/Godot prerequisites and absence of an existing iOS preset.
|
|
|
|
Closure: M49-A closes at source `c6cd45b`. macOS points to Xcode 26.1.1,
|
|
Godot 4.6.1 is installed, and the local keychain contains a valid Apple
|
|
Development identity for Team `X75CUV458P` plus an Xcode-managed wildcard
|
|
development profile. No iOS preset existed at baseline.
|
|
|
|
### M49-B — iOS export preset (`COMPLETE`)
|
|
|
|
- Add the owner-provided Team ID, Bundle ID and landscape settings to the Godot
|
|
iOS preset.
|
|
- Keep generated Xcode output outside Git.
|
|
|
|
Closure: M49-B closes at the current source after the preset and project
|
|
settings were verified. The preset exports a project-only Xcode project with
|
|
automatic signing, arm64, iOS 14.0 and landscape-left/right orientation. The
|
|
arm64 device configuration builds successfully with the local Apple
|
|
Development identity. Details are recorded in
|
|
`docs/runtime/M49_IOS_EXPORT_PREFLIGHT.md`.
|
|
|
|
### M49-C — Local Xcode device install (`IN_PROGRESS`)
|
|
|
|
- Export the Xcode project, open it in Xcode and build to the connected device.
|
|
- Resolve only signing/device setup issues; do not upload or distribute.
|
|
|
|
Current state: the Xcode project and signed arm64 app build are ready, but the
|
|
known iPhone entries are currently `unavailable` to `devicectl`. Installation
|
|
and launch remain pending a connected, unlocked, trusted device with Developer
|
|
Mode enabled.
|
|
|
|
### M49-D — Device visual/touch handoff
|
|
|
|
- Run the first-cycle checklist on device and record viewport/safe-area issues.
|
|
- Update the checkpoint and hand off the repeatable install command.
|
|
|
|
## Acceptance checks
|
|
|
|
- iOS preset is present and has non-placeholder Team ID/Bundle ID values.
|
|
- Xcode debug build installs and launches on the owner's device.
|
|
- Landscape orientation, touch targets and the three representative UI pages
|
|
are verified on device.
|
|
- No TestFlight/App Store or release-ready claim is made.
|
|
|
|
## Frozen scope
|
|
|
|
- No gameplay, economy, content, routing, Save/Receipt or art changes.
|
|
- No TestFlight upload, App Store record creation or distribution signing.
|
|
- Keep generated Xcode projects, Archives and provisioning files outside Git.
|
|
|
|
## Commit boundaries
|
|
|
|
- `M49-A`: plan/checkpoint/ledger activation.
|
|
- `M49-B`: iOS export preset.
|
|
- `M49-C`: local Xcode install evidence.
|
|
- `M49-D`: device handoff.
|