Skip to content

Commit 6b6a878

Browse files
committed
Merge branch 'main' into tabs
2 parents 9a6aca0 + d620dac commit 6b6a878

File tree

24 files changed

+999
-622
lines changed

24 files changed

+999
-622
lines changed

.github/workflows/ci.yml

Lines changed: 69 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ jobs:
2727
- name: Select Xcode version
2828
run: sudo xcodes select 16.4
2929

30+
- name: Install Runtimes
31+
uses: nick-fields/retry@v3
32+
with:
33+
timeout_minutes: 15
34+
max_attempts: 3
35+
command: xcodebuild -downloadAllPlatforms
36+
3037
- name: Lint Podspec
3138
run: |
3239
set -eo pipefail
@@ -43,120 +50,134 @@ jobs:
4350
- platform: [iOS, 15]
4451
runtime: iOS 15.5
4552
os: macos-15
46-
xcode: 16.4
47-
install: true
53+
xcode: 26.0
4854
- platform: [iOS, 16]
4955
runtime: iOS 16.4
5056
os: macos-15
51-
xcode: 16.4
52-
install: true
57+
xcode: 26.0
5358
- platform: [iOS, 17]
5459
runtime: iOS 17.5
5560
os: macos-15
56-
xcode: 16.4
57-
install: true
61+
xcode: 26.0
5862
- platform: [iOS, 18]
59-
runtime: iOS 18.5
63+
runtime: iOS 18.6
6064
os: macos-15
61-
xcode: 16.4
62-
# - platform: [iOS, 26]
63-
# runtime: iOS 26.0
64-
# os: macos-15
65-
# xcode: 26.0
65+
xcode: 26.0
66+
- platform: [iOS, 26]
67+
runtime: iOS 26.0
68+
os: macos-15
69+
xcode: 26.0
6670

6771
- platform: [tvOS, 15]
6872
runtime: tvOS 15.4
6973
os: macos-15
70-
xcode: 16.4
71-
install: true
74+
xcode: 26.0
7275
- platform: [tvOS, 16]
7376
runtime: tvOS 16.4
7477
os: macos-15
75-
xcode: 16.4
76-
install: true
78+
xcode: 26.0
7779
- platform: [tvOS, 17]
7880
runtime: tvOS 17.5
7981
os: macos-15
80-
xcode: 16.4
81-
install: true
82+
xcode: 26.0
8283
- platform: [tvOS, 18]
8384
runtime: tvOS 18.5
8485
os: macos-15
85-
xcode: 16.4
86-
# - platform: [tvOS, 26]
87-
# runtime: tvOS 26.0
88-
# os: macos-15
89-
# xcode: 26.0
86+
xcode: 26.0
87+
- platform: [tvOS, 26]
88+
runtime: tvOS 26.0
89+
os: macos-15
90+
xcode: 26.0
9091

9192
- platform: [watchOS, 8]
9293
runtime: watchOS 8.5
9394
os: macos-15
94-
xcode: 16.4
95-
install: true
95+
xcode: 26.0
9696
- platform: [watchOS, 9]
9797
runtime: watchOS 9.4
9898
os: macos-15
99-
xcode: 16.4
100-
install: true
99+
xcode: 26.0
101100
- platform: [watchOS, 10]
102101
runtime: watchOS 10.5
103102
os: macos-15
104-
xcode: 16.4
105-
install: true
103+
xcode: 26.0
106104
- platform: [watchOS, 11]
107105
runtime: watchOS 11.5
108106
os: macos-15
109-
xcode: 16.4
110-
# - platform: [watchOS, 26]
111-
# runtime: watchOS 26.0
112-
# os: macos-15
113-
# xcode: 26.0
107+
xcode: 26.0
108+
- platform: [watchOS, 26]
109+
runtime: watchOS 26.0
110+
os: macos-15
111+
xcode: 26.0
114112

115113
- platform: [macOS, 15]
116114
runtime: macOS 15
117115
os: macos-15
118-
xcode: 16.4
116+
xcode: 26.0
119117
# - platform: [macOS, 26]
120118
# runtime: macOS 26.0
121-
# os: macos-15
119+
# os: macos-26
122120
# xcode: 26.0
123121

124122
- platform: [visionOS, 1]
125123
runtime: visionOS 1.2
126124
os: macos-15
127-
xcode: 16.4
128-
install: true
125+
xcode: 26.0
129126
- platform: [visionOS, 2]
130127
runtime: visionOS 2.5
131128
os: macos-15
132-
xcode: 16.4
133-
# - platform: [visionOS, 26]
134-
# runtime: visionOS 26.0
135-
# os: macos-15
136-
# xcode: 26.0
129+
xcode: 26.0
130+
- platform: [visionOS, 26]
131+
runtime: visionOS 26.0
132+
os: macos-15
133+
xcode: 26.0
137134
steps:
138135
- name: Git Checkout
139136
uses: actions/checkout@v4
140137

141138
- name: Set environment variables
142139
run: echo "SKIP_SLOW_FASTLANE_WARNING=1" >> $GITHUB_ENV
143140

144-
- name: Select Xcode version
141+
- if: ${{ matrix.platform[0] != 'macOS' }}
142+
name: Check for ${{ matrix.runtime }} runtime
143+
run: |
144+
if xcrun simctl list runtimes | grep -q "${{ matrix.runtime }}"; then
145+
echo "has_runtime=true" >> "$GITHUB_ENV"
146+
else
147+
echo "has_runtime=false" >> "$GITHUB_ENV"
148+
fi
149+
150+
- name: Select Xcode ${{ matrix.xcode }}
145151
run: sudo xcodes select ${{ matrix.xcode }}
146152

147-
- if: ${{ matrix.install }}
148-
name: "[Debug] List Available Installable Runtimes"
153+
- if: ${{ matrix.xcode == '26.0' && matrix.platform[0] != 'macOS' }}
154+
name: Install 2026 Runtime
155+
uses: nick-fields/retry@v3
156+
with:
157+
timeout_minutes: 15
158+
max_attempts: 3
159+
command: xcodebuild -downloadPlatform ${{ matrix.platform[0] }}
160+
161+
- if: env.has_runtime == 'false'
162+
name: "List Downloadable Runtimes"
149163
run: xcodes runtimes --include-betas
150164

151-
- if: ${{ matrix.install }}
165+
- if: env.has_runtime == 'false'
152166
name: Install Required Runtime (${{ matrix.runtime }})
153167
uses: nick-fields/retry@v3
154168
with:
155169
timeout_minutes: 15
156170
max_attempts: 3
157171
command: sudo xcodes runtimes install '${{ matrix.runtime }}'
158172

159-
- name: "[Debug] List Available Runtimes, Simulators, and Destinations"
173+
- if: ${{ matrix.platform[0] != 'macOS' }}
174+
name: Create Required Simulators
175+
run: |
176+
set -eo pipefail
177+
xcrun simctl delete all
178+
fastlane create_simulators platform:${{ matrix.platform[0] }} version:${{ matrix.platform[1] }}
179+
180+
- name: List Available Runtimes, Simulators, and Destinations
160181
run: |
161182
xcrun simctl list
162183
xcodebuild -scheme "SwiftUIIntrospect" -showdestinations

Examples/Showcase/Showcase.xcodeproj/project.pbxproj

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
D53071F729983CEF00F1936C /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53071F629983CEF00F1936C /* App.swift */; };
1111
D53071F929983CEF00F1936C /* AppView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53071F829983CEF00F1936C /* AppView.swift */; };
1212
D5B829752999738200920EBD /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B829742999738200920EBD /* Helpers.swift */; };
13+
D5B864E82E72BF0F002F5243 /* ScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864E72E72BF0F002F5243 /* ScrollView.swift */; };
14+
D5B864EA2E72CE71002F5243 /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864E92E72CE71002F5243 /* List.swift */; };
15+
D5B864EC2E72D9E1002F5243 /* Navigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864EB2E72D9E1002F5243 /* Navigation.swift */; };
16+
D5B864EE2E72DB42002F5243 /* Presentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864ED2E72DB42002F5243 /* Presentation.swift */; };
17+
D5B864F02E72DC75002F5243 /* Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864EF2E72DC75002F5243 /* Controls.swift */; };
18+
D5B864F22E72DCA7002F5243 /* UIViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */; };
1319
D5E3180329C132B6005847DC /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = D5E3180229C132B6005847DC /* SwiftUIIntrospect */; };
1420
/* End PBXBuildFile section */
1521

@@ -19,6 +25,12 @@
1925
D53071F829983CEF00F1936C /* AppView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppView.swift; sourceTree = "<group>"; };
2026
D530720429983D9300F1936C /* Showcase.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Showcase.entitlements; sourceTree = "<group>"; };
2127
D5B829742999738200920EBD /* Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = "<group>"; };
28+
D5B864E72E72BF0F002F5243 /* ScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollView.swift; sourceTree = "<group>"; };
29+
D5B864E92E72CE71002F5243 /* List.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = List.swift; sourceTree = "<group>"; };
30+
D5B864EB2E72D9E1002F5243 /* Navigation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Navigation.swift; sourceTree = "<group>"; };
31+
D5B864ED2E72DB42002F5243 /* Presentation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Presentation.swift; sourceTree = "<group>"; };
32+
D5B864EF2E72DC75002F5243 /* Controls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Controls.swift; sourceTree = "<group>"; };
33+
D5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewRepresentable.swift; sourceTree = "<group>"; };
2234
/* End PBXFileReference section */
2335

2436
/* Begin PBXFrameworksBuildPhase section */
@@ -56,6 +68,12 @@
5668
D530720429983D9300F1936C /* Showcase.entitlements */,
5769
D53071F629983CEF00F1936C /* App.swift */,
5870
D53071F829983CEF00F1936C /* AppView.swift */,
71+
D5B864E92E72CE71002F5243 /* List.swift */,
72+
D5B864E72E72BF0F002F5243 /* ScrollView.swift */,
73+
D5B864EB2E72D9E1002F5243 /* Navigation.swift */,
74+
D5B864ED2E72DB42002F5243 /* Presentation.swift */,
75+
D5B864EF2E72DC75002F5243 /* Controls.swift */,
76+
D5B864F12E72DCA7002F5243 /* UIViewRepresentable.swift */,
5977
D5B829742999738200920EBD /* Helpers.swift */,
6078
);
6179
path = Showcase;
@@ -99,7 +117,7 @@
99117
attributes = {
100118
BuildIndependentTargetsInParallel = 1;
101119
LastSwiftUpdateCheck = 1420;
102-
LastUpgradeCheck = 1420;
120+
LastUpgradeCheck = 2600;
103121
TargetAttributes = {
104122
D53071F229983CEF00F1936C = {
105123
CreatedOnToolsVersion = 14.2;
@@ -140,7 +158,13 @@
140158
buildActionMask = 2147483647;
141159
files = (
142160
D53071F929983CEF00F1936C /* AppView.swift in Sources */,
161+
D5B864EE2E72DB42002F5243 /* Presentation.swift in Sources */,
162+
D5B864F22E72DCA7002F5243 /* UIViewRepresentable.swift in Sources */,
163+
D5B864E82E72BF0F002F5243 /* ScrollView.swift in Sources */,
143164
D5B829752999738200920EBD /* Helpers.swift in Sources */,
165+
D5B864EC2E72D9E1002F5243 /* Navigation.swift in Sources */,
166+
D5B864F02E72DC75002F5243 /* Controls.swift in Sources */,
167+
D5B864EA2E72CE71002F5243 /* List.swift in Sources */,
144168
D53071F729983CEF00F1936C /* App.swift in Sources */,
145169
);
146170
runOnlyForDeploymentPostprocessing = 0;
@@ -153,6 +177,7 @@
153177
buildSettings = {
154178
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
155179
ALWAYS_SEARCH_USER_PATHS = NO;
180+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
156181
CLANG_ANALYZER_NONNULL = YES;
157182
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
158183
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -185,6 +210,7 @@
185210
DEBUG_INFORMATION_FORMAT = dwarf;
186211
ENABLE_STRICT_OBJC_MSGSEND = YES;
187212
ENABLE_TESTABILITY = YES;
213+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
188214
GCC_C_LANGUAGE_STANDARD = gnu11;
189215
GCC_DYNAMIC_NO_PIC = NO;
190216
GCC_NO_COMMON_BLOCKS = YES;
@@ -199,19 +225,21 @@
199225
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
200226
GCC_WARN_UNUSED_FUNCTION = YES;
201227
GCC_WARN_UNUSED_VARIABLE = YES;
202-
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
203-
MACOSX_DEPLOYMENT_TARGET = 11.0;
228+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
229+
MACOSX_DEPLOYMENT_TARGET = 12.0;
204230
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
205231
MTL_FAST_MATH = YES;
206232
ONLY_ACTIVE_ARCH = YES;
207233
SDKROOT = iphoneos;
234+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
208235
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos";
209236
SUPPORTS_MACCATALYST = YES;
210237
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
211238
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
212239
SWIFT_STRICT_CONCURRENCY = complete;
213240
SWIFT_VERSION = 6.0;
214-
TVOS_DEPLOYMENT_TARGET = 13.0;
241+
TVOS_DEPLOYMENT_TARGET = 15.0;
242+
WATCHOS_DEPLOYMENT_TARGET = 8.0;
215243
XROS_DEPLOYMENT_TARGET = 1.0;
216244
};
217245
name = Debug;
@@ -221,6 +249,7 @@
221249
buildSettings = {
222250
ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
223251
ALWAYS_SEARCH_USER_PATHS = NO;
252+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
224253
CLANG_ANALYZER_NONNULL = YES;
225254
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
226255
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -253,6 +282,7 @@
253282
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
254283
ENABLE_NS_ASSERTIONS = NO;
255284
ENABLE_STRICT_OBJC_MSGSEND = YES;
285+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
256286
GCC_C_LANGUAGE_STANDARD = gnu11;
257287
GCC_NO_COMMON_BLOCKS = YES;
258288
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -261,19 +291,21 @@
261291
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
262292
GCC_WARN_UNUSED_FUNCTION = YES;
263293
GCC_WARN_UNUSED_VARIABLE = YES;
264-
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
265-
MACOSX_DEPLOYMENT_TARGET = 11.0;
294+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
295+
MACOSX_DEPLOYMENT_TARGET = 12.0;
266296
MTL_ENABLE_DEBUG_INFO = NO;
267297
MTL_FAST_MATH = YES;
268298
SDKROOT = iphoneos;
299+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
269300
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos";
270301
SUPPORTS_MACCATALYST = YES;
271302
SWIFT_COMPILATION_MODE = wholemodule;
272303
SWIFT_OPTIMIZATION_LEVEL = "-O";
273304
SWIFT_STRICT_CONCURRENCY = complete;
274305
SWIFT_VERSION = 6.0;
275-
TVOS_DEPLOYMENT_TARGET = 13.0;
306+
TVOS_DEPLOYMENT_TARGET = 15.0;
276307
VALIDATE_PRODUCT = YES;
308+
WATCHOS_DEPLOYMENT_TARGET = 8.0;
277309
XROS_DEPLOYMENT_TARGET = 1.0;
278310
};
279311
name = Release;
@@ -286,13 +318,16 @@
286318
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
287319
CODE_SIGN_STYLE = Automatic;
288320
CURRENT_PROJECT_VERSION = 1;
321+
ENABLE_APP_SANDBOX = YES;
322+
ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
289323
ENABLE_PREVIEWS = YES;
290324
GENERATE_INFOPLIST_FILE = YES;
291325
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
292326
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
293327
INFOPLIST_KEY_UILaunchStoryboardName = "";
294328
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
295329
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
330+
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
296331
LD_RUNPATH_SEARCH_PATHS = (
297332
"$(inherited)",
298333
"@executable_path/Frameworks",
@@ -318,13 +353,16 @@
318353
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
319354
CODE_SIGN_STYLE = Automatic;
320355
CURRENT_PROJECT_VERSION = 1;
356+
ENABLE_APP_SANDBOX = YES;
357+
ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES;
321358
ENABLE_PREVIEWS = YES;
322359
GENERATE_INFOPLIST_FILE = YES;
323360
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
324361
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
325362
INFOPLIST_KEY_UILaunchStoryboardName = "";
326363
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
327364
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
365+
INFOPLIST_KEY_UIUserInterfaceStyle = Light;
328366
LD_RUNPATH_SEARCH_PATHS = (
329367
"$(inherited)",
330368
"@executable_path/Frameworks",

Examples/Showcase/Showcase.xcodeproj/xcshareddata/xcschemes/Showcase.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1500"
3+
LastUpgradeVersion = "2600"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

0 commit comments

Comments
 (0)