Update dependencies and raise minimum to iOS 16#448
Conversation
WalkthroughThe PR raises the iOS deployment target to 16.0 in Xcode project and CryptomatorCommon Package.swift, updates many SwiftPM dependency pins, and removes the SwiftUI-Introspect dependency and related introspection-based fallbacks. It replaces legacy focus/backport APIs with standard Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment Tip CodeRabbit can enforce grammar and style rules using `languagetool`.Configure the |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+Focus.swift (1)
73-73: Use range-based introspection or plan for annual version updates.SwiftUIIntrospect 1.3.0 only executes
.introspect(.textField, on: .iOS(.v16, .v17, .v18))on those explicitly listed versions. On iOS 19 and later, this closure will not run until those versions are added.Two patterns are available:
- Maintain explicit versions (library default): Continue adding new iOS majors each year when bumping SwiftUIIntrospect.
- Use range-based predicate (future-proof): Import the Advanced SPI and use
.iOS(.v16...)to include future iOS versions, accepting the risk that future UIKit changes might affect introspection behavior.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI`+Focus.swift at line 73, The introspection call .introspect(.textField, on: .iOS(.v16, .v17, .v18)) will stop running on iOS 19+; either switch to the range-based predicate by importing the Advanced SPI and changing the call to .introspect(.textField, on: .iOS(.v16...)) so future iOS majors are included, or explicitly maintain the yearly list (keep .iOS(.v16, .v17, .v18)) and add/update a comment/todo to bump versions annually; update the call in SwiftUI+Focus.swift where .introspect(.textField, on: .iOS(.v16, .v17, .v18)) is defined and ensure the required Advanced SPI import is added if you choose the range approach.CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+CustomKeyboard.swift (1)
16-66: Consider removing theBackportedSubmitLabelwrapper in a follow-up.With iOS 16 as the minimum deployment target,
SubmitLabelis universally available. TheBackportedSubmitLabelenum now serves only as a pass-through wrapper. Consider deprecating it and migrating callers to useSubmitLabeldirectly in a future cleanup PR.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI`+CustomKeyboard.swift around lines 16 - 66, This BackportedSubmitLabel enum is now redundant; deprecate or remove it and migrate callers to use SubmitLabel directly: mark BackportedSubmitLabel as deprecated (or delete it) and update all usages that reference BackportedSubmitLabel or its submitLabel computed property to instead use SubmitLabel values (replace variables, function parameters, and switch/returns that map BackportedSubmitLabel -> submitLabel with SubmitLabel directly), then remove the submitLabel computed property and run tests to ensure no remaining references to BackportedSubmitLabel or submitLabel remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In
`@CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI`+CustomKeyboard.swift:
- Around line 16-66: This BackportedSubmitLabel enum is now redundant; deprecate
or remove it and migrate callers to use SubmitLabel directly: mark
BackportedSubmitLabel as deprecated (or delete it) and update all usages that
reference BackportedSubmitLabel or its submitLabel computed property to instead
use SubmitLabel values (replace variables, function parameters, and
switch/returns that map BackportedSubmitLabel -> submitLabel with SubmitLabel
directly), then remove the submitLabel computed property and run tests to ensure
no remaining references to BackportedSubmitLabel or submitLabel remain.
In `@CryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI`+Focus.swift:
- Line 73: The introspection call .introspect(.textField, on: .iOS(.v16, .v17,
.v18)) will stop running on iOS 19+; either switch to the range-based predicate
by importing the Advanced SPI and changing the call to .introspect(.textField,
on: .iOS(.v16...)) so future iOS majors are included, or explicitly maintain the
yearly list (keep .iOS(.v16, .v17, .v18)) and add/update a comment/todo to bump
versions annually; update the call in SwiftUI+Focus.swift where
.introspect(.textField, on: .iOS(.v16, .v17, .v18)) is defined and ensure the
required Advanced SPI import is added if you choose the range approach.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 23945130-3af0-4b24-8768-4da4f99d7067
📒 Files selected for processing (8)
Cryptomator.xcodeproj/project.pbxprojCryptomator.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolvedCryptomatorCommon/Package.swiftCryptomatorCommon/Sources/CryptomatorCommonCore/JWEHelper.swiftCryptomatorCommon/Sources/CryptomatorCommonCore/Manager/VaultDBCache.swiftCryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+CustomKeyboard.swiftCryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+Focus.swiftCryptomatorCommon/Sources/CryptomatorCommonCore/SwiftUI/SwiftUI+ListBackground.swift
Bumps all direct and transitive dependencies to their latest compatible versions. Raises the minimum deployment target from iOS 14 to iOS 16, required by cloud-access-swift 3.0 and MSAL 2.x.
Major version bumps: cloud-access-swift 2.0 to 3.0, GRDB 6 to 7, AppAuth 1.7 to 2.0, MSAL 1.5 to 2.9, Google API Client 3.4 to 5.2, GTMAppAuth 4.1 to 5.0. Minor bumps: CocoaLumberjack 3.8 to 3.9, SwiftECC 5.3 to 5.5, AWS SDK 2.35 to 2.41.
Code adaptations:
CachedVault.Columnspublic per GRDB 7 access-level requirementsFocusStateLegacywith native@FocusState+.focused()+.onSubmit()in WebDAV, S3, and Hub registration viewsBackportedSubmitLabelwith native.submitLabel()#available(iOS 14/15)checks and@availabledecorators across ~20 files