Skip to content

chore: support for macOS Designed for iPad mode - WPB-25053#4636

Open
netbe wants to merge 6 commits intodevelopfrom
chore/macos-ipad
Open

chore: support for macOS Designed for iPad mode - WPB-25053#4636
netbe wants to merge 6 commits intodevelopfrom
chore/macos-ipad

Conversation

@netbe
Copy link
Copy Markdown
Collaborator

@netbe netbe commented Apr 24, 2026

TaskWPB-25053 [iOS] Running iOS app instead of Web macOS client

Issue

In order to use more the Beta builds, this PR improve support for the app running on macOS via iPad design.

  • add resizable window
  • select part of messages
  • record video
  • disable callkit so calling works

Testing

  • Build as iPad

Checklist

  • Title contains a reference JIRA issue number like [WPB-XXX].
  • Description is filled and free of optional paragraphs.
  • Adds/updates automated tests.

UI accessibility checklist

If your PR includes UI changes, please utilize this checklist:

  • Make sure you use the API for UI elements that support large fonts.
  • All colors are taken from WireDesign.ColorTheme or constructed using WireDesign.BaseColorPalette.
  • New UI elements have Accessibility strings for VoiceOver.

@sonarqubecloud
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

Test Results

1 881 tests   1 854 ✅  2m 8s ⏱️
  301 suites     27 💤
    1 files        0 ❌

Results for commit f1d12c4.

Summary: workflow run #24894790188
Allure report (download zip): html-report-29531-chore_macos-ipad

}

static func wr_requestOrWarnAboutPhotoLibraryAccess(_ grantedHandler: @escaping (Bool) -> Void) {
PHPhotoLibrary.requestAuthorization { status in
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw, requestAuthorization(_:) is deprecated.

Suggested change
PHPhotoLibrary.requestAuthorization(for: .readWrite) { status in

<array/>
<key>UIRequiresFullScreen</key>
<true/>
<false/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a big change. We need to test resizing thoroughly, especially with horizontalSizeClass changes before disabling this.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also any time we are doing UIDevice.current.userInterfaceIdiom we might be making assumptions about screen sizes.

@netbe netbe requested review from samwyndham and removed request for johnxnguyen May 4, 2026 09:09
Copy link
Copy Markdown
Contributor

@samwyndham samwyndham left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work. I really like the idea of getting this working and it's nice that the changes aren't too great.

My main concern is that we are changing a few fundamentals in production. Some questions:

  1. Will Designed for iPad also appear in production?
  2. Can we make the change to full screen mode internal/beta only?

SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Will this change apply to the production apps too?

grantedHandler(true)
case .limited:
fallthrough
grantedHandler(true)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: This is a change in behavior on iPhone/iPad too right? Do you know why we previously fell through?

<key>UIRequiredDeviceCapabilities</key>
<array/>
<key>UIRequiresFullScreen</key>
<true/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: This is a pretty big change but probably the right direction to go. But have you thought about possible issues here? I guess there must be a bunch of things to test.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make this change only in non production builds?

<array/>
<key>UIRequiresFullScreen</key>
<true/>
<false/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also any time we are doing UIDevice.current.userInterfaceIdiom we might be making assumptions about screen sizes.

/// A minimal video recorder for Mac (Designed for iPad).
/// UIImagePickerController with .camera source crashes on Mac because Portrait Effects
/// tries to create Metal textures with unsupported IOSurface formats. This replaces it.
final class MacVideoRecorderViewController: UIViewController {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: Did you check if this is possible and simpler in SwiftUI?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants