iPad support — layout only, but it is not free #10

Closed
opened 2026-09-01 21:58:20 +00:00 by paulhitt · 4 comments
paulhitt commented 2026-09-01 21:58:20 +00:00 (Migrated from gitlab.com)

Ask: run properly on iPad, with no change to how anything works — layout
adaptation only.

Current state. The app is deliberately iPhone-only:

  • TARGETED_DEVICE_FAMILY: "1", set at TARGET level in project.yml — with a note
    explaining why: xcodegen emits a target default of "1,2" that silently overrides the
    project-level value, and that once shipped an archive as iPhone+iPad.
  • UISupportedInterfaceOrientations is portrait only.

⚠️ The part that makes "no change to how it works" not quite hold. That same note
records what happened last time: enabling iPad "tripped ASC's iPad icon + multitasking
orientation requirements". App Store Connect requires an iPad build to support all four
orientations
unless it declares UIRequiresFullScreen. So this is not purely additive:

  • either the app gains landscape, which every screen has to survive — the chat
    transcript, the call UI, the composer with the keyboard up — or
  • it declares UIRequiresFullScreen, opting out of Split View and Slide Over, which is a
    product decision about what "runs on iPad" is worth.

Plus an iPad app icon (AppIcon76x76@2x~ipad already exists in the bundle) and a review
pass on anything assuming a phone-width layout.

Suggested order: decide the multitasking question first, since it determines whether
this is a week of layout work or a build-setting change plus an icon. Nothing here should
touch protocol, storage or call logic.

⚠️ Do not flip TARGETED_DEVICE_FAMILY at project level — read the comment in
project.yml first.

**Ask:** run properly on iPad, with no change to how anything works — layout adaptation only. **Current state.** The app is deliberately iPhone-only: - `TARGETED_DEVICE_FAMILY: "1"`, set at TARGET level in `project.yml` — with a note explaining why: xcodegen emits a target default of `"1,2"` that silently overrides the project-level value, and that once shipped an archive as iPhone+iPad. - `UISupportedInterfaceOrientations` is **portrait only**. **⚠️ The part that makes "no change to how it works" not quite hold.** That same note records what happened last time: enabling iPad "tripped ASC's iPad icon + multitasking orientation requirements". App Store Connect requires an iPad build to support **all four orientations** unless it declares `UIRequiresFullScreen`. So this is not purely additive: - either the app gains **landscape**, which every screen has to survive — the chat transcript, the call UI, the composer with the keyboard up — or - it declares `UIRequiresFullScreen`, opting out of Split View and Slide Over, which is a product decision about what "runs on iPad" is worth. Plus an iPad app icon (`AppIcon76x76@2x~ipad` already exists in the bundle) and a review pass on anything assuming a phone-width layout. **Suggested order:** decide the multitasking question first, since it determines whether this is a week of layout work or a build-setting change plus an icon. Nothing here should touch protocol, storage or call logic. ⚠️ Do not flip `TARGETED_DEVICE_FAMILY` at project level — read the comment in `project.yml` first.
paulhitt commented 2026-09-01 21:58:22 +00:00 (Migrated from gitlab.com)

mentioned in issue flamenet-messenger-android#7

mentioned in issue flamenet-messenger-android#7
paulhitt commented 2026-09-01 22:23:13 +00:00 (Migrated from gitlab.com)

mentioned in commit bd7b7c96e4

mentioned in commit bd7b7c96e4c88c336b39b7c98e03308dd921a385
paulhitt commented 2026-09-11 15:48:48 +00:00 (Migrated from gitlab.com)

mentioned in merge request !193

mentioned in merge request !193

Done, checked against gitea/main in the 2026-10-16 issue cleanup. 0f06a08c and 12eb447f (0.15.0) set TARGETED_DEVICE_FAMILY 1,2 and all four iPad orientations; MainTabView uses NavigationSplitView, with UITests/IPadLayoutUITests.swift and a universal AppIcon. Shipped in v0.31.0 (634a881a), and App Review tested it on an iPad Air on 2026-09-22.

Done, checked against gitea/main in the 2026-10-16 issue cleanup. 0f06a08c and 12eb447f (0.15.0) set TARGETED_DEVICE_FAMILY 1,2 and all four iPad orientations; MainTabView uses NavigationSplitView, with UITests/IPadLayoutUITests.swift and a universal AppIcon. Shipped in v0.31.0 (634a881a), and App Review tested it on an iPad Air on 2026-09-22.
Sign in to join this conversation.