From 92fe5223b5bd1c1e9a9e88f59decd7354944026a Mon Sep 17 00:00:00 2001 From: johnnewman-square Date: Thu, 8 Oct 2026 10:56:49 -0400 Subject: [PATCH 1/4] CLF-526: Align Modals platform minimums with Workflow --- Modals/Sources/AccessibilityProxyView.swift | 6 ------ Modals/Tests/AccessibilityProxyTests.swift | 9 +++------ Package.swift | 9 ++++++--- Samples/Tuist/Package.resolved | 13 ++----------- .../ProjectDescriptionHelpers/Project+Modals.swift | 2 +- 5 files changed, 12 insertions(+), 27 deletions(-) diff --git a/Modals/Sources/AccessibilityProxyView.swift b/Modals/Sources/AccessibilityProxyView.swift index 8a2fcc70..59b7f3e7 100644 --- a/Modals/Sources/AccessibilityProxyView.swift +++ b/Modals/Sources/AccessibilityProxyView.swift @@ -148,31 +148,26 @@ extension AccessibilityProxyView { } - @available(iOS 17.0, *) override var accessibilityLabelBlock: AXStringReturnBlock? { get { proxiedElement?.accessibilityLabelBlock } set { fatalError("Proxy view accessibility is not settable") } } - @available(iOS 17.0, *) override var accessibilityValueBlock: AXStringReturnBlock? { get { proxiedElement?.accessibilityValueBlock } set { fatalError("Proxy view accessibility is not settable") } } - @available(iOS 17.0, *) override var accessibilityHintBlock: AXStringReturnBlock? { get { proxiedElement?.accessibilityHintBlock } set { fatalError("Proxy view accessibility is not settable") } } - @available(iOS 17.0, *) override var accessibilityTraitsBlock: AXTraitsReturnBlock? { get { proxiedElement?.accessibilityTraitsBlock } set { fatalError("Proxy view accessibility is not settable") } } - @available(iOS 17.0, *) override var accessibilityIdentifierBlock: AXStringReturnBlock? { get { proxiedElement?.accessibilityIdentifierBlock } set { fatalError("Proxy view accessibility is not settable") } @@ -187,7 +182,6 @@ extension AccessibilityProxyView.Proxy where T: AXCustomContentProvider { set { fatalError("Proxy view accessibility is not settable") } } - @available(iOS 17.0, *) var accessibilityCustomContentBlock: AXCustomContentReturnBlock? { get { proxiedElement?.accessibilityCustomContentBlock ?? { self.accessibilityCustomContent } } set { fatalError("Proxy view accessibility is not settable") } diff --git a/Modals/Tests/AccessibilityProxyTests.swift b/Modals/Tests/AccessibilityProxyTests.swift index a2ff9d20..5127041d 100644 --- a/Modals/Tests/AccessibilityProxyTests.swift +++ b/Modals/Tests/AccessibilityProxyTests.swift @@ -85,14 +85,11 @@ class AccessibilityProxyTests: XCTestCase { XCTAssertEqual(content?.count, 1) XCTAssertEqual(content, item.accessibilityCustomContent) - if #available(iOS 17.0, *) { - // accessibilityCustomContentBlock is preferred by voiceover if implemented, so we should return the content even if the proxied item doesn't implement it. - let blockContent = proxy.accessibilityCustomContentBlock?() - XCTAssertEqual(blockContent, content) - } + // Return custom content when the source does not provide a block. + let blockContent = proxy.accessibilityCustomContentBlock?() + XCTAssertEqual(blockContent, content) } - @available(iOS 17.0, *) func test_proxy_customContentBlock() { class BlockTestItem: NSObject, AXCustomContentProvider { var accessibilityCustomContent: [AXCustomContent]! = [ diff --git a/Package.swift b/Package.swift index e95104ed..f4bd77be 100644 --- a/Package.swift +++ b/Package.swift @@ -6,8 +6,8 @@ let package = Package( name: "Modals", defaultLocalization: "en", platforms: [ - .macCatalyst(.v16), - .iOS(.v16), + .iOS("17.1"), + .macCatalyst(.v17), ], products: [ .library( @@ -22,7 +22,10 @@ let package = Package( dependencies: [ .package(url: "https://github.com/apple/swift-log", from: "1.4.4"), .package(url: "https://github.com/square/swift-keyboard-observer", from: "1.1.0"), - .package(url: "https://github.com/square/workflow-swift", from: "6.0.0"), + .package( + url: "https://github.com/square/workflow-swift", + branch: "johnnewman/chore/CLF-526-workflow-ios-17-1" + ), ], targets: [ .target( diff --git a/Samples/Tuist/Package.resolved b/Samples/Tuist/Package.resolved index 40c23386..b13812e6 100644 --- a/Samples/Tuist/Package.resolved +++ b/Samples/Tuist/Package.resolved @@ -72,15 +72,6 @@ "version" : "1.6.2" } }, - { - "identity" : "swift-perception", - "kind" : "remoteSourceControl", - "location" : "https://github.com/pointfreeco/swift-perception", - "state" : { - "revision" : "d924c62a70fca5f43872f286dbd7cef0957f1c01", - "version" : "1.6.0" - } - }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", @@ -95,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/square/workflow-swift", "state" : { - "revision" : "d31ae0d61ccd0e41be5b45c299696f087445da2d", - "version" : "6.0.0" + "branch" : "johnnewman/chore/CLF-526-workflow-ios-17-1", + "revision" : "053ab5568af38abaf9d1f4e9fb5d4fda296259a3" } }, { diff --git a/Samples/Tuist/ProjectDescriptionHelpers/Project+Modals.swift b/Samples/Tuist/ProjectDescriptionHelpers/Project+Modals.swift index 0bedd8a0..623e3c1a 100644 --- a/Samples/Tuist/ProjectDescriptionHelpers/Project+Modals.swift +++ b/Samples/Tuist/ProjectDescriptionHelpers/Project+Modals.swift @@ -3,7 +3,7 @@ import ProjectDescription public let modalsBundleIdPrefix = "com.squareup.modals" public let modalsDestinations: ProjectDescription.Destinations = .iOS -public let modalsDeploymentTargets: DeploymentTargets = .iOS("16.0") +public let modalsDeploymentTargets: DeploymentTargets = .iOS("17.1") extension Target { public static func app( From b1dd028f70381da6290e492e05f581b0622c3ab1 Mon Sep 17 00:00:00 2001 From: johnnewman-square Date: Thu, 8 Oct 2026 10:59:35 -0400 Subject: [PATCH 2/4] Restore accessibility custom content comment --- Modals/Tests/AccessibilityProxyTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modals/Tests/AccessibilityProxyTests.swift b/Modals/Tests/AccessibilityProxyTests.swift index 5127041d..8bdee138 100644 --- a/Modals/Tests/AccessibilityProxyTests.swift +++ b/Modals/Tests/AccessibilityProxyTests.swift @@ -85,7 +85,7 @@ class AccessibilityProxyTests: XCTestCase { XCTAssertEqual(content?.count, 1) XCTAssertEqual(content, item.accessibilityCustomContent) - // Return custom content when the source does not provide a block. + // accessibilityCustomContentBlock is preferred by voiceover if implemented, so we should return the content even if the proxied item doesn't implement it. let blockContent = proxy.accessibilityCustomContentBlock?() XCTAssertEqual(blockContent, content) } From 89879aa2c7137a1a73ba8d3bc2b7de6f4ce262bc Mon Sep 17 00:00:00 2001 From: johnnewman-square Date: Thu, 8 Oct 2026 13:10:07 -0400 Subject: [PATCH 3/4] CLF-526: Update Workflow to restore Observation export --- Samples/Tuist/Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Samples/Tuist/Package.resolved b/Samples/Tuist/Package.resolved index b13812e6..ccd9c55e 100644 --- a/Samples/Tuist/Package.resolved +++ b/Samples/Tuist/Package.resolved @@ -87,7 +87,7 @@ "location" : "https://github.com/square/workflow-swift", "state" : { "branch" : "johnnewman/chore/CLF-526-workflow-ios-17-1", - "revision" : "053ab5568af38abaf9d1f4e9fb5d4fda296259a3" + "revision" : "7e1ad76776b69603d50c58f09247e18624da19c1" } }, { From 1b2882e745bd1a19abf93c6519bdc0bb2cbe8e36 Mon Sep 17 00:00:00 2001 From: johnnewman-square Date: Fri, 9 Oct 2026 09:41:21 -0400 Subject: [PATCH 4/4] CLF-526: Use Workflow 7.0.0 release --- Package.swift | 5 +---- Samples/Tuist/Package.resolved | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Package.swift b/Package.swift index f4bd77be..5a41684c 100644 --- a/Package.swift +++ b/Package.swift @@ -22,10 +22,7 @@ let package = Package( dependencies: [ .package(url: "https://github.com/apple/swift-log", from: "1.4.4"), .package(url: "https://github.com/square/swift-keyboard-observer", from: "1.1.0"), - .package( - url: "https://github.com/square/workflow-swift", - branch: "johnnewman/chore/CLF-526-workflow-ios-17-1" - ), + .package(url: "https://github.com/square/workflow-swift", from: "7.0.0"), ], targets: [ .target( diff --git a/Samples/Tuist/Package.resolved b/Samples/Tuist/Package.resolved index ccd9c55e..02b655cd 100644 --- a/Samples/Tuist/Package.resolved +++ b/Samples/Tuist/Package.resolved @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/square/workflow-swift", "state" : { - "branch" : "johnnewman/chore/CLF-526-workflow-ios-17-1", - "revision" : "7e1ad76776b69603d50c58f09247e18624da19c1" + "revision" : "08eb59a20b56a20a713a4ba53c1434a9751bbbf5", + "version" : "7.0.0" } }, {