From f3340a9aeefb53fe21c5515f7ca1d16590a5b304 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Wed, 14 Jan 2026 12:21:11 -0500 Subject: [PATCH 1/9] Xcode 26 --- .github/workflows/ci.yml | 16 ++++++++-------- ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj | 5 ++--- .../xcshareddata/xcschemes/ORK1Kit.xcscheme | 2 +- .../xcshareddata/xcschemes/docs.xcscheme | 2 +- ResearchKit.xcodeproj/project.pbxproj | 5 ++--- .../xcshareddata/xcschemes/ResearchKit.xcscheme | 2 +- .../xcshareddata/xcschemes/docs.xcscheme | 2 +- .../xcshareddata/xcschemes/ORKTest.xcscheme | 2 +- ...sonStudy WatchKit App (Complication).xcscheme | 2 +- ...sonStudy WatchKit App (Notification).xcscheme | 2 +- .../ORKParkinsonStudy WatchKit App.xcscheme | 2 +- 11 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2fd902400..d47090c94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,11 +4,11 @@ on: workflow_dispatch: jobs: build: - runs-on: macos-14 + runs-on: macos-26 env: - # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md - xcode: '/Applications/Xcode_15.2.app' - destination_ios17: 'platform=iOS Simulator,OS=17.2,name=iPhone 15' + # https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md + xcode: '/Applications/Xcode_26.2.app' + destination_ios: 'platform=iOS Simulator,OS=26.2,name=iPhone 17' steps: - name: Checkout uses: actions/checkout@v2 @@ -18,14 +18,14 @@ jobs: - name: Build run: | set -o pipefail - xcodebuild build-for-testing -workspace 'RKWorkspace.xcworkspace' -scheme 'ORK1Kit' -destination '${{ env.destination_ios17 }}' IS_TRAVIS_CI=true | xcpretty - xcodebuild build-for-testing -workspace 'RKWorkspace.xcworkspace' -scheme 'ResearchKit' -destination '${{ env.destination_ios17 }}' IS_TRAVIS_CI=true | xcpretty + xcodebuild build-for-testing -workspace 'RKWorkspace.xcworkspace' -scheme 'ORK1Kit' -destination '${{ env.destination_ios }}' IS_TRAVIS_CI=true | xcpretty + xcodebuild build-for-testing -workspace 'RKWorkspace.xcworkspace' -scheme 'ResearchKit' -destination '${{ env.destination_ios }}' IS_TRAVIS_CI=true | xcpretty env: DEVELOPER_DIR: ${{ env.xcode }}/Contents/Developer - name: Test run: | set -o pipefail - xcodebuild test-without-building -workspace 'RKWorkspace.xcworkspace' -scheme 'ORK1Kit' -destination '${{ env.destination_ios17 }}' IS_TRAVIS_CI=true | xcpretty - xcodebuild test-without-building -workspace 'RKWorkspace.xcworkspace' -scheme 'ResearchKit' -destination '${{ env.destination_ios17 }}' IS_TRAVIS_CI=true | xcpretty + xcodebuild test-without-building -workspace 'RKWorkspace.xcworkspace' -scheme 'ORK1Kit' -destination '${{ env.destination_ios }}' IS_TRAVIS_CI=true | xcpretty + xcodebuild test-without-building -workspace 'RKWorkspace.xcworkspace' -scheme 'ResearchKit' -destination '${{ env.destination_ios }}' IS_TRAVIS_CI=true | xcpretty env: DEVELOPER_DIR: ${{ env.xcode }}/Contents/Developer diff --git a/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj b/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj index 1d50c3e2e..790db69b5 100644 --- a/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj +++ b/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj @@ -2981,7 +2981,7 @@ BuildIndependentTargetsInParallel = YES; CLASSPREFIX = ORK1; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1520; + LastUpgradeCheck = 2620; ORGANIZATIONNAME = researchkit.org; TargetAttributes = { 86CC8E991AC09332001CCD89 = { @@ -3533,7 +3533,6 @@ 86CC8EA41AC09332001CCD89 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; @@ -3563,7 +3562,6 @@ 86CC8EA51AC09332001CCD89 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_MODULES = YES; CLANG_WARN_UNREACHABLE_CODE = YES; @@ -3597,6 +3595,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREPROCESSOR_DEFINITIONS = ( diff --git a/ORK1Kit/ORK1Kit.xcodeproj/xcshareddata/xcschemes/ORK1Kit.xcscheme b/ORK1Kit/ORK1Kit.xcodeproj/xcshareddata/xcschemes/ORK1Kit.xcscheme index 4a5162876..3231f6b58 100644 --- a/ORK1Kit/ORK1Kit.xcodeproj/xcshareddata/xcschemes/ORK1Kit.xcscheme +++ b/ORK1Kit/ORK1Kit.xcodeproj/xcshareddata/xcschemes/ORK1Kit.xcscheme @@ -1,6 +1,6 @@ Date: Wed, 14 Jan 2026 12:25:18 -0500 Subject: [PATCH 2/9] Fix some build warnings --- ORK1Kit/ORK1Kit/ActiveTasks/ORK1ReactionTimeViewController.m | 2 +- ResearchKit/ActiveTasks/ORKReactionTimeViewController.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ORK1Kit/ORK1Kit/ActiveTasks/ORK1ReactionTimeViewController.m b/ORK1Kit/ORK1Kit/ActiveTasks/ORK1ReactionTimeViewController.m index 4b1fc01a2..16b58bf8d 100644 --- a/ORK1Kit/ORK1Kit/ActiveTasks/ORK1ReactionTimeViewController.m +++ b/ORK1Kit/ORK1Kit/ActiveTasks/ORK1ReactionTimeViewController.m @@ -93,7 +93,7 @@ - (void)start { #if TARGET_IPHONE_SIMULATOR - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { - if (event.type == UIEventSubtypeMotionShake) { + if (event.subtype == UIEventSubtypeMotionShake) { if (_validResult) { ORK1ReactionTimeResult *reactionTimeResult = [[ORK1ReactionTimeResult alloc] initWithIdentifier:self.step.identifier]; reactionTimeResult.timestamp = _stimulusTimestamp; diff --git a/ResearchKit/ActiveTasks/ORKReactionTimeViewController.m b/ResearchKit/ActiveTasks/ORKReactionTimeViewController.m index 4f602b3a3..a84b6dc10 100644 --- a/ResearchKit/ActiveTasks/ORKReactionTimeViewController.m +++ b/ResearchKit/ActiveTasks/ORKReactionTimeViewController.m @@ -95,7 +95,7 @@ - (void)start { #if TARGET_IPHONE_SIMULATOR - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { - if (event.type == UIEventSubtypeMotionShake) { + if (event.subtype == UIEventSubtypeMotionShake) { if (_validResult) { ORKReactionTimeResult *reactionTimeResult = [[ORKReactionTimeResult alloc] initWithIdentifier:self.step.identifier]; reactionTimeResult.timestamp = _stimulusTimestamp; From 836237e6df41af4940cff769a7743741d75f846c Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Wed, 14 Jan 2026 12:33:24 -0500 Subject: [PATCH 3/9] Update CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d47090c94..000030ffb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: destination_ios: 'platform=iOS Simulator,OS=26.2,name=iPhone 17' steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 with: token: ${{ secrets.CAREEVOLUTIONBUILD_TOKEN }} submodules: 'recursive' From 1cd0cb8cdc3ed460d9b03e3849ff6b0eedfa2966 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Wed, 14 Jan 2026 12:42:47 -0500 Subject: [PATCH 4/9] Update CI --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 000030ffb..29c998597 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,6 +2,8 @@ name: CI on: pull_request: workflow_dispatch: +permissions: + contents: read jobs: build: runs-on: macos-26 @@ -15,6 +17,7 @@ jobs: with: token: ${{ secrets.CAREEVOLUTIONBUILD_TOKEN }} submodules: 'recursive' + persist-credentials: false - name: Build run: | set -o pipefail From 81a246b3afb82c54c27a1d4e42f937c4cd5ac616 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Wed, 14 Jan 2026 12:50:36 -0500 Subject: [PATCH 5/9] Update CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29c998597..7e624d5e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: destination_ios: 'platform=iOS Simulator,OS=26.2,name=iPhone 17' steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: token: ${{ secrets.CAREEVOLUTIONBUILD_TOKEN }} submodules: 'recursive' From 20834cd2a03087a02be18ac29e517d708c69aac3 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Fri, 16 Jan 2026 10:21:52 -0500 Subject: [PATCH 6/9] Update CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e624d5e7..29c998597 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: destination_ios: 'platform=iOS Simulator,OS=26.2,name=iPhone 17' steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + uses: actions/checkout@v6 with: token: ${{ secrets.CAREEVOLUTIONBUILD_TOKEN }} submodules: 'recursive' From ebbd7285ec92c01c554f141c7db9826eae7e64d2 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Fri, 16 Jan 2026 12:23:29 -0500 Subject: [PATCH 7/9] Update unit test deployment targets --- ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj | 2 ++ ResearchKit.xcodeproj/project.pbxproj | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj b/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj index 790db69b5..137d00ef4 100644 --- a/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj +++ b/ORK1Kit/ORK1Kit.xcodeproj/project.pbxproj @@ -3545,6 +3545,7 @@ ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "$(SRCROOT)/ORK1KitTests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -3571,6 +3572,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "$(SRCROOT)/ORK1KitTests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ResearchKit.xcodeproj/project.pbxproj b/ResearchKit.xcodeproj/project.pbxproj index d63069b6b..813801f3c 100644 --- a/ResearchKit.xcodeproj/project.pbxproj +++ b/ResearchKit.xcodeproj/project.pbxproj @@ -4147,6 +4147,7 @@ ); GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "$(SRCROOT)/ResearchKitTests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -4173,6 +4174,7 @@ GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = "$(SRCROOT)/ResearchKitTests/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 18.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", From 575224e6844e4c227c9b3959212a29d0d2e7c5d5 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Fri, 16 Jan 2026 13:25:16 -0500 Subject: [PATCH 8/9] Allow more time for some unit tests to run --- ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m | 2 +- ResearchKitTests/ORKDataLoggerManagerTests.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m b/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m index b1c169e8d..e90e2f108 100644 --- a/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m +++ b/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m @@ -222,7 +222,7 @@ - (void)testDelegateThresholds { [dm3 finishCurrentLog]; [dm2 finishCurrentLog]; [dm1 finishCurrentLog]; - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; unsigned long long bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes > _manager.pendingUploadBytesThreshold); diff --git a/ResearchKitTests/ORKDataLoggerManagerTests.m b/ResearchKitTests/ORKDataLoggerManagerTests.m index 87e3bb2ba..14d96c73a 100644 --- a/ResearchKitTests/ORKDataLoggerManagerTests.m +++ b/ResearchKitTests/ORKDataLoggerManagerTests.m @@ -222,7 +222,7 @@ - (void)testDelegateThresholds { [dm3 finishCurrentLog]; [dm2 finishCurrentLog]; [dm1 finishCurrentLog]; - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; unsigned long long bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes > _manager.pendingUploadBytesThreshold); From a98d9593649a378459fa02b61f82b3b727e49d28 Mon Sep 17 00:00:00 2001 From: Mike Mertsock Date: Fri, 16 Jan 2026 13:28:05 -0500 Subject: [PATCH 9/9] Allow more time for some unit tests to run --- ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m | 4 ++-- ResearchKitTests/ORKDataLoggerManagerTests.m | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m b/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m index e90e2f108..d331a4729 100644 --- a/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m +++ b/ORK1Kit/ORK1KitTests/ORK1DataLoggerManagerTests.m @@ -235,7 +235,7 @@ - (void)testDelegateThresholds { } error:nil]; XCTAssertTrue(success); - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes < _manager.pendingUploadBytesThreshold); @@ -246,7 +246,7 @@ - (void)testDelegateThresholds { [dm3 finishCurrentLog]; [dm2 finishCurrentLog]; [dm1 finishCurrentLog]; - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes > _manager.pendingUploadBytesThreshold); diff --git a/ResearchKitTests/ORKDataLoggerManagerTests.m b/ResearchKitTests/ORKDataLoggerManagerTests.m index 14d96c73a..0b6776577 100644 --- a/ResearchKitTests/ORKDataLoggerManagerTests.m +++ b/ResearchKitTests/ORKDataLoggerManagerTests.m @@ -235,7 +235,7 @@ - (void)testDelegateThresholds { } error:nil]; XCTAssertTrue(success); - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes < _manager.pendingUploadBytesThreshold); @@ -246,7 +246,7 @@ - (void)testDelegateThresholds { [dm3 finishCurrentLog]; [dm2 finishCurrentLog]; [dm1 finishCurrentLog]; - [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2]]; + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; bytes = _manager.pendingUploadBytes; XCTAssertTrue(bytes > _manager.pendingUploadBytesThreshold);