From 16b15d9a4e8ea449420d9bf26b40ca2679cc3457 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Fri, 10 Apr 2026 15:00:41 -0500 Subject: [PATCH 01/12] feat: Add Xcode 26 support --- .github/workflows/ci.yml | 43 +++++++++++++++++++++++++++++++++++++++- .ruby-version | 2 +- Gemfile.lock | 12 +++++------ README.md | 1 + 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b3ca21f6..4b8beaf6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,7 @@ on: - "**" env: CI_XCODE_16: /Applications/Xcode_16.4.0.app/Contents/Developer + CI_XCODE_26: /Applications/Xcode_26.4.0.app/Contents/Developer jobs: test-xcode: env: @@ -17,7 +18,7 @@ jobs: strategy: matrix: include: - # Xcode + # Xcode 16 - name: Xcode 16 script: build:starters iosVersion: '18.5' @@ -57,6 +58,46 @@ jobs: tvDeviceModel: Apple TV macosVersion: 15 developerDir: CI_XCODE_16 + # Xcode 26 + - name: Xcode 26 + script: build:starters + iosVersion: '26.4' + iosDeviceModel: iPhone 16 + watchOsVersion: '26.4' + watchDeviceModel: Apple Watch Series 10 (46mm) + tvOsVersion: '26.4' + tvDeviceModel: Apple TV + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 + # Core Module + - name: Core Module, iOS 26.4 + script: test:ios + iosVersion: '26.4' + iosDeviceModel: iPhone 16 + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 + - name: LiveQuery Module, iOS 26.4 + script: test:parse_live_query:ios + iosVersion: '26.4' + iosDeviceModel: iPhone 16 + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 + - name: LiveQuery Module, macOS 26-arm64 + script: test:parse_live_query:osx + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 + - name: LiveQuery Module, watchOS 26.4 + script: test:parse_live_query:watchos + watchOsVersion: '26.4' + watchDeviceModel: Apple Watch Series 10 (46mm) + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 + - name: LiveQuery Module, tvOS 26.4 + script: test:parse_live_query:tvos + tvOsVersion: '26.4' + tvDeviceModel: Apple TV + macosVersion: 26-arm64 + developerDir: CI_XCODE_26 fail-fast: false runs-on: macos-${{ matrix.macosVersion }} name: ${{ matrix.name }} diff --git a/.ruby-version b/.ruby-version index 872e12081..fcdb2e109 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-3.1.0 +4.0.0 diff --git a/Gemfile.lock b/Gemfile.lock index da0bb3865..0a1ef260f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,9 +71,9 @@ GEM escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - ffi (1.17.2-arm64-darwin) - ffi (1.17.2-x86_64-darwin) - ffi (1.17.2-x86_64-linux-gnu) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86_64-darwin) + ffi (1.17.4-x86_64-linux-gnu) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) @@ -96,6 +96,7 @@ GEM json (2.15.2.1) liferaft (0.0.6) logger (1.7.0) + mini_portile2 (2.8.9) minitest (5.27.0) molinillo (0.8.0) mustache (1.1.1) @@ -115,9 +116,8 @@ GEM sassc (2.4.0) ffi (~> 1.9) securerandom (0.4.1) - sqlite3 (1.7.3-arm64-darwin) - sqlite3 (1.7.3-x86_64-darwin) - sqlite3 (1.7.3-x86_64-linux) + sqlite3 (1.7.3) + mini_portile2 (~> 2.8.0) typhoeus (1.5.0) ethon (>= 0.9.0, < 0.16.0) tzinfo (2.0.6) diff --git a/README.md b/README.md index b087aeb1b..fd5a26d40 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ The Parse Apple SDK is continuously tested with the most recent releases of Xcod | Xcode 14 | iOS 16 | macOS 13 | watchOS 9 | tvOS 16 | September 2022 | October 2024 | >= 2.7.2 < 5.0.0 | | Xcode 15 | iOS 17 | macOS 14 | watchOS 10 | tvOS 17 | September 2023 | October 2025 | >= 3.0.0 <= 5.1.1 | | Xcode 16 | iOS 18 | macOS 15 | watchOS 11 | tvOS 18 | September 2024 | tbd | >= 4.2.0 | +| Xcode 26 | iOS 26 | macOS 26 | watchOS 26 | tvOS 26 | September 2025 | tbd | >= 6.1.1 | ## How Do I Contribute? From 85c132014882b148c2b15a07d9f4a9c0839fbd09 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Mon, 13 Apr 2026 14:46:56 -0500 Subject: [PATCH 02/12] bump devices --- .github/workflows/ci.yml | 34 +++++++-------- CONTRIBUTING.md | 2 +- Gemfile.lock | 91 ++++++++++++++++++++++++++++++++-------- 3 files changed, 91 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b8beaf6f..f2340c41c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,9 +22,9 @@ jobs: - name: Xcode 16 script: build:starters iosVersion: '18.5' - iosDeviceModel: iPhone 16 + iosDeviceModel: iPhone 17 watchOsVersion: '11.5' - watchDeviceModel: Apple Watch Series 10 (46mm) + watchDeviceModel: Apple Watch Series 11 (46mm) tvOsVersion: '18.5' tvDeviceModel: Apple TV macosVersion: 15 @@ -33,13 +33,13 @@ jobs: - name: Core Module, iOS 18 script: test:ios iosVersion: '18.5' - iosDeviceModel: iPhone 16 + iosDeviceModel: iPhone 17 macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, iOS 18 script: test:parse_live_query:ios iosVersion: '18.5' - iosDeviceModel: iPhone 16 + iosDeviceModel: iPhone 17 macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, macOS 15 @@ -49,7 +49,7 @@ jobs: - name: LiveQuery Module, watchOS 11 script: test:parse_live_query:watchos watchOsVersion: '11.5' - watchDeviceModel: Apple Watch Series 10 (46mm) + watchDeviceModel: Apple Watch Series 11 (46mm) macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, tvOS 18 @@ -62,41 +62,41 @@ jobs: - name: Xcode 26 script: build:starters iosVersion: '26.4' - iosDeviceModel: iPhone 16 + iosDeviceModel: iPhone 17 watchOsVersion: '26.4' - watchDeviceModel: Apple Watch Series 10 (46mm) + watchDeviceModel: Apple Watch Series 11 (46mm) tvOsVersion: '26.4' tvDeviceModel: Apple TV - macosVersion: 26-arm64 + macosVersion: 26 developerDir: CI_XCODE_26 # Core Module - name: Core Module, iOS 26.4 script: test:ios iosVersion: '26.4' - iosDeviceModel: iPhone 16 - macosVersion: 26-arm64 + iosDeviceModel: iPhone 17 + macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, iOS 26.4 script: test:parse_live_query:ios iosVersion: '26.4' - iosDeviceModel: iPhone 16 - macosVersion: 26-arm64 + iosDeviceModel: iPhone 17 + macosVersion: 26 developerDir: CI_XCODE_26 - - name: LiveQuery Module, macOS 26-arm64 + - name: LiveQuery Module, macOS 26 script: test:parse_live_query:osx - macosVersion: 26-arm64 + macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, watchOS 26.4 script: test:parse_live_query:watchos watchOsVersion: '26.4' - watchDeviceModel: Apple Watch Series 10 (46mm) - macosVersion: 26-arm64 + watchDeviceModel: Apple Watch Series 11 (46mm) + macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, tvOS 26.4 script: test:parse_live_query:tvos tvOsVersion: '26.4' tvDeviceModel: Apple TV - macosVersion: 26-arm64 + macosVersion: 26 developerDir: CI_XCODE_26 fail-fast: false runs-on: macos-${{ matrix.macosVersion }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21ab01cfd..1c3512566 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,7 @@ For analyzing bugs, creating bug fixes and features we recommend to clone this r Install all dependencies: ``` git submodule update --init --recursive - gem install bundler -v 2.5.22 + gem install bundler -v 4.0.10 bundle install ``` Run the tests: diff --git a/Gemfile.lock b/Gemfile.lock index 0a1ef260f..7f2ae19ae 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,10 +1,7 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.7) - base64 - nkf - rexml + CFPropertyList (3.0.8) activesupport (7.2.3.1) base64 benchmark (>= 0.3) @@ -25,7 +22,7 @@ GEM atomos (0.1.3) base64 (0.3.0) benchmark (0.5.0) - bigdecimal (4.0.1) + bigdecimal (4.1.1) claide (1.1.0) cocoapods (1.16.2) addressable (~> 2.8) @@ -66,14 +63,14 @@ GEM cocoapods-try (1.2.0) colored2 (3.1.2) concurrent-ruby (1.3.6) - connection_pool (2.5.5) + connection_pool (3.0.2) drb (2.2.3) escape (0.0.4) - ethon (0.15.0) + ethon (0.18.0) ffi (>= 1.15.0) + logger + ffi (1.17.4) ffi (1.17.4-arm64-darwin) - ffi (1.17.4-x86_64-darwin) - ffi (1.17.4-x86_64-linux-gnu) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) @@ -93,18 +90,17 @@ GEM sassc (~> 2.1) sqlite3 (~> 1.3) xcinvoke (~> 0.3.0) - json (2.15.2.1) + json (2.19.3) liferaft (0.0.6) logger (1.7.0) mini_portile2 (2.8.9) minitest (5.27.0) molinillo (0.8.0) - mustache (1.1.1) + mustache (1.1.2) mutex_m (0.3.0) nanaimo (0.4.0) nap (1.1.0) netrc (0.11.0) - nkf (0.2.0) open4 (1.3.4) plist (3.7.1) public_suffix (4.0.7) @@ -118,8 +114,8 @@ GEM securerandom (0.4.1) sqlite3 (1.7.3) mini_portile2 (~> 2.8.0) - typhoeus (1.5.0) - ethon (>= 0.9.0, < 0.16.0) + typhoeus (1.6.0) + ethon (>= 0.18.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) xcinvoke (0.3.0) @@ -135,9 +131,8 @@ GEM rouge (~> 2.0.7) PLATFORMS - arm64-darwin - x86_64-darwin - x86_64-linux + arm64-darwin-25 + ruby DEPENDENCIES jazzy (= 0.15.4) @@ -145,5 +140,65 @@ DEPENDENCIES rake (= 13.2.1) xcpretty (= 0.3.0) +CHECKSUMS + CFPropertyList (3.0.8) sha256=2c99d0d980536d3d7ab252f7bd59ac8be50fbdd1ff487c98c949bb66bb114261 + activesupport (7.2.3.1) sha256=11ebed516a43a0bb47346227a35ebae4d9427465a7c9eb197a03d5c8d283cb34 + addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af + algoliasearch (1.27.5) sha256=26c1cddf3c2ec4bd60c148389e42702c98fdac862881dc6b07a4c0b89ffec853 + atomos (0.1.3) sha256=7d43b22f2454a36bace5532d30785b06de3711399cb1c6bf932573eda536789f + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c + bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca + claide (1.1.0) sha256=6d3c5c089dde904d96aa30e73306d0d4bd444b1accb9b3125ce14a3c0183f82e + cocoapods (1.16.2) sha256=0ff1c860f32df3db8b16df09b58da1a6bb2a12fe55f6d5e8be994a74fadd1e5e + cocoapods-core (1.16.2) sha256=4bb1b5c420691e60cf36fa227dec6bc48c096c34c97bb7aa512ea7f3246fc12b + cocoapods-deintegrate (1.0.5) sha256=517c2a448ef563afe99b6e7668704c27f5de9e02715a88ee9de6974dc1b3f6a2 + cocoapods-downloader (2.1) sha256=bb6ebe1b3966dc4055de54f7a28b773485ac724fdf575d9bee2212d235e7b6d1 + cocoapods-plugins (1.0.0) sha256=725d17ce90b52f862e73476623fd91441b4430b742d8a071000831efb440ca9a + cocoapods-search (1.0.1) sha256=1b133b0e6719ed439bd840e84a1828cca46425ab73a11eff5e096c3b2df05589 + cocoapods-trunk (1.6.0) sha256=5f5bda8c172afead48fa2d43a718cf534b1313c367ba1194cebdeb9bfee9ed31 + cocoapods-try (1.2.0) sha256=145b946c6e7747ed0301d975165157951153d27469e6b2763c83e25c84b9defe + colored2 (3.1.2) sha256=b13c2bd7eeae2cf7356a62501d398e72fde78780bd26aec6a979578293c28b4a + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a + drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 + escape (0.0.4) sha256=e49f44ae2b4f47c6a3abd544ae77fe4157802794e32f19b8e773cbc4dcec4169 + ethon (0.18.0) sha256=b598afc9f30448cb068b850714b7d6948e941476095d04f90a4ac65b8d6efcb2 + ffi (1.17.4) sha256=bcd1642e06f0d16fc9e09ac6d49c3a7298b9789bcb58127302f934e437d60acf + ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b + fourflusher (2.3.1) sha256=1b3de61c7c791b6a4e64f31e3719eb25203d151746bb519a0292bff1065ccaa9 + fuzzy_match (2.0.4) sha256=b5de4f95816589c5b5c3ad13770c0af539b75131c158135b3f3bbba75d0cfca5 + gh_inspector (1.1.3) sha256=04cca7171b87164e053aa43147971d3b7f500fcb58177698886b48a9fc4a1939 + httpclient (2.9.0) sha256=4b645958e494b2f86c2f8a2f304c959baa273a310e77a2931ddb986d83e498c8 + i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 + jazzy (0.15.4) sha256=d7766c62fe722b0b1b868c05e79be1fab3249ab2279435f3a0adcb1d955a3c4a + json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646 + liferaft (0.0.6) sha256=631ec13c52d2e62851d4e761f5ff5e090ef26437f92dc451effa3f82fa5a5acd + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289 + minitest (5.27.0) sha256=2d3b17f8a36fe7801c1adcffdbc38233b938eb0b4966e97a6739055a45fa77d5 + molinillo (0.8.0) sha256=efbff2716324e2a30bccd3eba1ff3a735f4d5d53ffddbc6a2f32c0ca9433045d + mustache (1.1.2) sha256=d420243400354da78ded2d81541b381ad8d94e8e9b95022d0d71d66f8ef36c00 + mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751 + nanaimo (0.4.0) sha256=faf069551bab17f15169c1f74a1c73c220657e71b6e900919897a10d991d0723 + nap (1.1.0) sha256=949691660f9d041d75be611bb2a8d2fd559c467537deac241f4097d9b5eea576 + netrc (0.11.0) sha256=de1ce33da8c99ab1d97871726cba75151113f117146becbe45aa85cb3dabee3f + open4 (1.3.4) sha256=a1df037310624ecc1ea1d81264b11c83e96d0c3c1c6043108d37d396dcd0f4b1 + plist (3.7.1) sha256=3f9542db1115d10fb77d87604dcb426755174920cc89453755efacb34a1cc42c + public_suffix (4.0.7) sha256=8be161e2421f8d45b0098c042c06486789731ea93dc3a896d30554ee38b573b8 + rake (13.2.1) sha256=46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d + redcarpet (3.6.1) sha256=d444910e6aa55480c6bcdc0cdb057626e8a32c054c29e793fa642ba2f155f445 + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rouge (2.0.7) sha256=2da14eb856839a81ad708883c2495507f50f973f3f46904cc7d87784039ed169 + ruby-macho (2.5.1) sha256=9075e52e0f9270b552a90b24fcc6219ad149b0d15eae1bc364ecd0ac8984f5c9 + sassc (2.4.0) sha256=4c60a2b0a3b36685c83b80d5789401c2f678c1652e3288315a1551d811d9f83e + securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 + sqlite3 (1.7.3) sha256=fa77f63c709548f46d4e9b6bb45cda52aa3881aa12cc85991132758e8968701c + typhoeus (1.6.0) sha256=bacc41c23e379547e29801dc235cd1699b70b955a1ba3d32b2b877aa844c331d + tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b + xcinvoke (0.3.0) sha256=67e936a5afa64659c58687c3d316947e287dcddb63769cb9778089bef9c1fe9a + xcodeproj (1.27.0) sha256=8cc7a73b4505c227deab044dce118ede787041c702bc47636856a2e566f854d3 + xcpretty (0.3.0) sha256=75c7cc577be3527e7663ca627cbeb47613904c3a44f34cca3a92d202053e04f7 + BUNDLED WITH - 2.3.27 + 4.0.10 From bc63b3b1950a8027f2a05db70277dd36f7116092 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 09:16:50 -0500 Subject: [PATCH 03/12] bump devices --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2340c41c..d9913cab9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,9 +22,9 @@ jobs: - name: Xcode 16 script: build:starters iosVersion: '18.5' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 16 watchOsVersion: '11.5' - watchDeviceModel: Apple Watch Series 11 (46mm) + watchDeviceModel: Apple Watch Series 10 (46mm) tvOsVersion: '18.5' tvDeviceModel: Apple TV macosVersion: 15 @@ -33,23 +33,23 @@ jobs: - name: Core Module, iOS 18 script: test:ios iosVersion: '18.5' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 16 macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, iOS 18 script: test:parse_live_query:ios iosVersion: '18.5' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 16 macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, macOS 15 script: test:parse_live_query:osx macosVersion: 15 developerDir: CI_XCODE_16 - - name: LiveQuery Module, watchOS 11 + - name: LiveQuery Module, watchOS 10 script: test:parse_live_query:watchos watchOsVersion: '11.5' - watchDeviceModel: Apple Watch Series 11 (46mm) + watchDeviceModel: Apple Watch Series 10 (46mm) macosVersion: 15 developerDir: CI_XCODE_16 - name: LiveQuery Module, tvOS 18 From b5301495f784cf39d81b9339e89c1487bfd25d4f Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 09:44:42 -0500 Subject: [PATCH 04/12] Make artifact upload distinct --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9913cab9..c23b4d6d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: script: test:parse_live_query:osx macosVersion: 15 developerDir: CI_XCODE_16 - - name: LiveQuery Module, watchOS 10 + - name: LiveQuery Module, watchOS 11 script: test:parse_live_query:watchos watchOsVersion: '11.5' watchDeviceModel: Apple Watch Series 10 (46mm) @@ -129,8 +129,8 @@ jobs: - name: Generate Environment Variables if: ${{ always() }} env: - ARTIFACT_NAME: ${{ matrix.script }}-logs - TEST_RESULTS: ${{ matrix.script }}.xcresult + ARTIFACT_NAME: ${{ matrix.name }}-logs + TEST_RESULTS: ${{ matrix.name }}.xcresult run: | ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") From d4895d67e379c400fdc12161a0c98704362c9c88 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 09:52:36 -0500 Subject: [PATCH 05/12] fix artifact name path --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c23b4d6d2..03270d17c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -130,12 +130,12 @@ jobs: if: ${{ always() }} env: ARTIFACT_NAME: ${{ matrix.name }}-logs - TEST_RESULTS: ${{ matrix.name }}.xcresult + TEST_RESULTS: ${{ matrix.script }}.xcresult run: | ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") BUILD_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcactivitylog") - echo ARTIFACT_NAME=${ARTIFACT_NAME//:/-} >> $GITHUB_ENV # replace colon with dashes + echo ARTIFACT_NAME=${ARTIFACT_NAME// /_} >> $GITHUB_ENV # replace space with underscore echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV echo "Artifact Name: $ARTIFACT_NAME" echo "Test Result Location: $TEST_RESULTS" From e6856504ee5eefc697c18e2dd71582aac09d0d89 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 10:06:45 -0500 Subject: [PATCH 06/12] fix docs --- .github/workflows/ci.yml | 2 -- Gemfile | 1 + Gemfile.lock | 3 +++ Scripts/jazzy.sh | 30 +++++++++++++++++++++++++----- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03270d17c..621dce8b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,12 +134,10 @@ jobs: run: | ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") - BUILD_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcactivitylog") echo ARTIFACT_NAME=${ARTIFACT_NAME// /_} >> $GITHUB_ENV # replace space with underscore echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV echo "Artifact Name: $ARTIFACT_NAME" echo "Test Result Location: $TEST_RESULTS" - echo "Build Result Location: $BUILD_RESULTS" - name: Upload Artifact Logs if: ${{ failure() }} uses: actions/upload-artifact@v4 diff --git a/Gemfile b/Gemfile index 1fa770346..3cd0eb127 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,7 @@ source 'https://rubygems.org' # Docs gem 'jazzy', '0.15.4' +gem 'cgi', '0.5.1' # Development gem 'xcpretty', '0.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 7f2ae19ae..533721403 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -23,6 +23,7 @@ GEM base64 (0.3.0) benchmark (0.5.0) bigdecimal (4.1.1) + cgi (0.5.1) claide (1.1.0) cocoapods (1.16.2) addressable (~> 2.8) @@ -135,6 +136,7 @@ PLATFORMS ruby DEPENDENCIES + cgi (= 0.5.1) jazzy (= 0.15.4) plist (= 3.7.1) rake (= 13.2.1) @@ -149,6 +151,7 @@ CHECKSUMS base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca + cgi (0.5.1) sha256=e93fcafc69b8a934fe1e6146121fa35430efa8b4a4047c4893764067036f18e9 claide (1.1.0) sha256=6d3c5c089dde904d96aa30e73306d0d4bd444b1accb9b3125ce14a3c0183f82e cocoapods (1.16.2) sha256=0ff1c860f32df3db8b16df09b58da1a6bb2a12fe55f6d5e8be994a74fadd1e5e cocoapods-core (1.16.2) sha256=4bb1b5c420691e60cf36fa227dec6bc48c096c34c97bb7aa512ea7f3246fc12b diff --git a/Scripts/jazzy.sh b/Scripts/jazzy.sh index 5980869b4..48c5cb25c 100755 --- a/Scripts/jazzy.sh +++ b/Scripts/jazzy.sh @@ -1,8 +1,30 @@ -mkdir -p ./Parse/Bolts # Create a temporary bolts folder -cp -R Carthage/Checkouts/Bolts-ObjC/Bolts/**/*.h ./Parse/Bolts # Copy bolts +#!/usr/bin/env bash + +set -eo pipefail + +bolts_headers_dir="" +for candidate in \ + "./.build/checkouts/Bolts-ObjC/Bolts" \ + "./.build/checkouts/Bolts/Bolts" \ + "./build/checkouts/Bolts-ObjC/Bolts" \ + "./SourcePackages/checkouts/Bolts-ObjC/Bolts"; do + if [[ -d "$candidate" ]]; then + bolts_headers_dir="$candidate" + break + fi +done + +if [[ -z "$bolts_headers_dir" ]]; then + echo "Unable to locate Bolts headers. Resolve SwiftPM dependencies first (for example, run 'swift package resolve')." + exit 1 +fi + +mkdir -p ./Parse/Bolts +cp -R "$bolts_headers_dir"/. ./Parse/Bolts +trap 'rm -rf ./Parse/Bolts' EXIT ver=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Parse/Parse/Resources/Parse-iOS.Info.plist` -set -eo pipefail && bundle exec jazzy \ +bundle exec jazzy \ --objc \ --clean \ --author "Parse Community" \ @@ -17,5 +39,3 @@ set -eo pipefail && bundle exec jazzy \ --umbrella-header Parse/Parse/Source/Parse.h \ --framework-root Parse \ --output docs/api - -rm -rf ./Parse/Bolts # cleanup temporary bolts From 3aa34a0dd67333252922dc3893e4e15ddc7c06d8 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 10:17:09 -0500 Subject: [PATCH 07/12] Simplify build script --- .github/workflows/ci.yml | 18 +++++------------- .github/workflows/release-manual-docs.yml | 2 ++ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 621dce8b1..963030e79 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,23 +126,11 @@ jobs: run: set -o pipefail && env NSUnbufferedIO=YES IOS_VERSION="${{ matrix.iosVersion }}" IOS_DEVICE_MODEL="${{ matrix.iosDeviceModel }}" WATCH_DEVICE_MODEL="${{ matrix.watchDeviceModel }}" WATCH_OS_VERSION="${{ matrix.watchOsVersion }}" TV_DEVICE_MODEL="${{ matrix.tvDeviceModel }}" TV_OS_VERSION="${{ matrix.tvOsVersion }}" bundle exec rake ${{ matrix.script }} env: DEVELOPER_DIR: ${{ env[matrix.developerDir] }} - - name: Generate Environment Variables - if: ${{ always() }} - env: - ARTIFACT_NAME: ${{ matrix.name }}-logs - TEST_RESULTS: ${{ matrix.script }}.xcresult - run: | - ARTIFACT_NAME=${{ env.ARTIFACT_NAME }} - TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") - echo ARTIFACT_NAME=${ARTIFACT_NAME// /_} >> $GITHUB_ENV # replace space with underscore - echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV - echo "Artifact Name: $ARTIFACT_NAME" - echo "Test Result Location: $TEST_RESULTS" - name: Upload Artifact Logs if: ${{ failure() }} uses: actions/upload-artifact@v4 with: - name: ${{ env.ARTIFACT_NAME }} + name: ${{ matrix.name }}-logs path: | ~/Library/Developer/Xcode/DerivedData/Parse-*/Logs/Test ~/Library/Developer/Xcode/DerivedData/**/Logs/Build @@ -158,7 +146,9 @@ jobs: env: COVERAGE_PATH: ${{ github.workspace }}/build/${{ matrix.script }}-coverage.xml run: | + TEST_RESULTS=$(find ~/Library/Developer/Xcode/DerivedData -name "*.xcresult") COVERAGE_PATH=${COVERAGE_PATH//:/-} + echo TEST_RESULTS=${TEST_RESULTS} >> $GITHUB_ENV echo COVERAGE_PATH=$COVERAGE_PATH >> $GITHUB_ENV echo "TEST_RESULTS: $TEST_RESULTS" echo "COVERAGE_PATH: $COVERAGE_PATH" @@ -185,6 +175,8 @@ jobs: bundler-cache: true - name: Submodules run: git submodule update --init --recursive + - name: SPM + run: swift package resolve - name: Create Jazzy Docs run: | ./Scripts/jazzy.sh diff --git a/.github/workflows/release-manual-docs.yml b/.github/workflows/release-manual-docs.yml index 67d0f1449..ab9517b5f 100644 --- a/.github/workflows/release-manual-docs.yml +++ b/.github/workflows/release-manual-docs.yml @@ -31,6 +31,8 @@ jobs: bundler-cache: true - name: Submodules run: git submodule update --init --recursive + - name: SPM + run: swift package resolve - name: Create Jazzy Docs run: | ./Scripts/jazzy.sh From b4702abef04d6d74444a217550f0bfd9dff07e47 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 10:37:41 -0500 Subject: [PATCH 08/12] fix bulid starters --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 963030e79..940ad2a58 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,7 +62,7 @@ jobs: - name: Xcode 26 script: build:starters iosVersion: '26.4' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 17 Pro Max watchOsVersion: '26.4' watchDeviceModel: Apple Watch Series 11 (46mm) tvOsVersion: '26.4' @@ -73,13 +73,13 @@ jobs: - name: Core Module, iOS 26.4 script: test:ios iosVersion: '26.4' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 17 Pro Max macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, iOS 26.4 script: test:parse_live_query:ios iosVersion: '26.4' - iosDeviceModel: iPhone 17 + iosDeviceModel: iPhone 17 Pro Max macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, macOS 26 From b451543a3bc8b20d0a8c4283e2fc6d0ac3b0151d Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 12:09:51 -0500 Subject: [PATCH 09/12] fix watch os --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 940ad2a58..6978cce26 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: iosVersion: '26.4' iosDeviceModel: iPhone 17 Pro Max watchOsVersion: '26.4' - watchDeviceModel: Apple Watch Series 11 (46mm) + watchDeviceModel: Apple Watch SE 3 (40mm) tvOsVersion: '26.4' tvDeviceModel: Apple TV macosVersion: 26 @@ -89,7 +89,7 @@ jobs: - name: LiveQuery Module, watchOS 26.4 script: test:parse_live_query:watchos watchOsVersion: '26.4' - watchDeviceModel: Apple Watch Series 11 (46mm) + watchDeviceModel: Apple Watch SE 3 (40mm) macosVersion: 26 developerDir: CI_XCODE_26 - name: LiveQuery Module, tvOS 26.4 From 83fb1ea1cdc13c87a39f902539ec871519587b25 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Tue, 14 Apr 2026 12:43:45 -0500 Subject: [PATCH 10/12] exclude test --- .../xcshareddata/xcschemes/Parse-iOS.xcscheme | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-iOS.xcscheme b/Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-iOS.xcscheme index cec359cae..1890ed420 100644 --- a/Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-iOS.xcscheme +++ b/Parse/Parse.xcodeproj/xcshareddata/xcschemes/Parse-iOS.xcscheme @@ -96,6 +96,15 @@ + + + + + + From 68fa46f83f50fd7d1213c409bcdb4275fa4480ef Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Thu, 16 Apr 2026 14:42:07 -0500 Subject: [PATCH 11/12] update readme and symlinks --- .github/workflows/ci.yml | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6978cce26..f62d181a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,8 +8,8 @@ on: branches: - "**" env: - CI_XCODE_16: /Applications/Xcode_16.4.0.app/Contents/Developer - CI_XCODE_26: /Applications/Xcode_26.4.0.app/Contents/Developer + CI_XCODE_16: /Applications/Xcode_16.4.app/Contents/Developer + CI_XCODE_26: /Applications/Xcode_26.4.app/Contents/Developer jobs: test-xcode: env: diff --git a/README.md b/README.md index fd5a26d40..b84d2e039 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ The Parse Apple SDK is continuously tested with the most recent releases of Xcod | Xcode 14 | iOS 16 | macOS 13 | watchOS 9 | tvOS 16 | September 2022 | October 2024 | >= 2.7.2 < 5.0.0 | | Xcode 15 | iOS 17 | macOS 14 | watchOS 10 | tvOS 17 | September 2023 | October 2025 | >= 3.0.0 <= 5.1.1 | | Xcode 16 | iOS 18 | macOS 15 | watchOS 11 | tvOS 18 | September 2024 | tbd | >= 4.2.0 | -| Xcode 26 | iOS 26 | macOS 26 | watchOS 26 | tvOS 26 | September 2025 | tbd | >= 6.1.1 | +| Xcode 26 | iOS 26 | macOS 26 | watchOS 26 | tvOS 26 | September 2025 | tbd | >= 6.2.0 | ## How Do I Contribute? From b69bbbe9c74c058a27b69374be0906e065984854 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Fri, 17 Apr 2026 09:49:29 -0500 Subject: [PATCH 12/12] revert 16 --- .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 f62d181a6..609059815 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: branches: - "**" env: - CI_XCODE_16: /Applications/Xcode_16.4.app/Contents/Developer + CI_XCODE_16: /Applications/Xcode_16.4.0.app/Contents/Developer CI_XCODE_26: /Applications/Xcode_26.4.app/Contents/Developer jobs: test-xcode: