You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/update-sqlcipher/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,10 +94,10 @@ Update the cipher provider version test:
94
94
95
95
Note: The OpenSSL version format is typically like "OpenSSL 3.0.17 1 Jul 2025" and the LibTomCrypt format is like "1.18.2" - check the actual runtime value or SQLCipher release notes.
96
96
97
-
Update the SQLLite version test:
97
+
Update the SQLite version test:
98
98
- (void) testSqliteVersion {
99
99
NSString* version = [NSString stringWithUTF8String:sqlite3_libversion()];
| 39 | #4093 make advanced-auth default + deprecate forceAdvancedAuthentication | a2c4ee4d5 | B | ⚠⚠⚠ PUBLIC API + advanced-auth + L10n(pre-appr) | ✅ ported fa450e82ca3e45d29c4411f573c59ff20f44a61b | Advanced Auth is now the DEFAULT; `SalesforceManager.forceAdvancedAuthentication` deprecated (14.0→remove 15.0). Ported into compiled Swift twins: **SalesforceSDKManager.swift** (deprecated `@objc` prop backed by non-deprecated `forceAdvancedAuthenticationInternal` = default `true`, mirrors the migration's `showAuthWindowWhileLoading` precedent & upstream's `sdk_forceAdvancedAuthentication`; devActions host-list-as-login-screen routing; devInfo line), **SFOAuthCoordinator.swift** (OR force flag into native-browser decision), **SFSDKLoginHostListViewController.swift** (`presentedAsLoginScreen` + forced-adv-auth chrome: back button/gear via `shouldShowBackButton`/`createBackButton`/`handleBackButtonAction`/`loginOptionsButton`, mirrors SFLoginViewController.swift; `delegateDidChangeLoginOptions`), **SFUserAccountManager.swift** (`presentedAsLoginScreen=true` on cancel-browser host list + new `hostListViewControllerDidChangeLoginOptions`), **AuthFlowTypesView.swift** (force-adv toggle via `forceAdvancedAuthenticationInternal`, warning-free). Compiled header **SFSDKLoginHostDelegate.h** overwritten verbatim (real protocol, matched pre-image → adds optional method). L10n `LOGIN_OPTIONS_FORCE_ADVANCED_AUTH` (pre-approved). De-ref ref-sync: `SFSDKLoginHostListViewController.m` verbatim (matched pre-image); `SalesforceSDKManager.m` + `SFOAuthCoordinator.m` surgical (import + accessor + init default + isShowingLogin + decision + devInfo). Tombstone/stub SKIPS (no compiled region, documented): `SalesforceSDKManager.h`, `SalesforceSDKManager+Internal.h`, `SFSDKLoginHostListViewController.h`, `SFUserAccountManager.m` (79-line stub). Tests: 2 ObjC test files (`SFSDKLoginHostTests.m`/`SalesforceSDKManagerTests.m`) ported to their Swift twins (15 chrome tests + 8 forced-adv-auth incl. capturing-coordinator subclass over now-`internal` `beginNativeBrowserFlow`/`beginWebViewFlow`/`approvalURL`/`brandedAuthorizeURL`, PKCE security-invariant); 3 SDKCore Swift test files hunked (JSON round-trip, session recreate, discovery-gate) — all deprecated-touching helpers `@available(*,deprecated)`-guarded → 0 deprecation warnings. 8 AuthFlowTester UI-test files verbatim + NEW `ForceAdvancedAuthTests.swift` (filesystem-synced group, no pbxproj wiring; build gated on CocoaPods, like #4092). SDKCore/SmartStore/MobileSync TEST BUILD ✓ (0 errors, 0 new warnings in diff); 135 tests across the 5 SDKCore classes PASS (incl. 25 new). ⚠⚠⚠ escalation: PUBLIC-API deprecation + advanced-auth default behavior flip + login-UI + L10n — flag in PR. |
73
73
| 40 | #4088 invalid login-host recovery | a2a271cca | B | ⚠ login-host + L10n(pre-appr) | ✅ ported 6263a436e4127e450592d5be35410ecbce8d9f53 | Validate login-host input; recover to previous host when the current one fails. Ported into compiled Swift twins: **NewLoginHostView.swift** (per-field inline error UI: `NewLoginHostField.errorMessage`/`errorAccessibilityID`; `save(...)` validates non-empty + contains `.` + no whitespace + parseable `https://` URL, sets `hostError`=`LOGIN_INVALID_HOST` and bails on invalid; `.onChange(of: host)` clears error) — twin diverged from pre-image only in 2 `init` API-parity lines (outside change regions) so applied hunks surgically. **SFUserAccountManager.swift** (new `internal var previousLoginHost`; set in `hostListViewController(_:didChange:)`; recovery rewrite in `hostConnectionErrorHandlerBlock` completion: only auto-remove a *deletable* failing host on a **strong-bad-host** signal [`kSFOAuthErrorInvalidURL` / `NSURLErrorBadURL`/`UnsupportedURL`/`AppTransportSecurityRequiresSecureConnection`], NOT on ambiguous DNS/timeout [captive-portal safety]; recovery host = `previousLoginHost` if still in storage else `loginHost(at:0)` guarded by `numberOfLoginHosts>0` to avoid range trap on empty storage). L10n `LOGIN_INVALID_HOST` (pre-approved). Test-visibility: relaxed `SFSDKLoginHostStorage.loginHostList` `private`→`internal` (mirrors ObjC test's KVC reach into the private ivar; no new public API). De-ref ref-sync: `SFUserAccountManager+Internal.h` — added `previousLoginHost` @property to the `#if !defined(SWIFT_CLASS)` ObjC class-extension region verbatim (anchor `nativeLoginEnabled`→`setCurrentUserInternal` matched pre-image; header has NO compiled consumer — all 7 importer `.m` de-referenced — but kept in sync for clean future merges). Stub SKIP (no matching region): `SFUserAccountManager.m` (79-line stub). Tests: NEW ObjC `SFUserAccountManagerLoginHostRecoveryTests.m` (357 lines, `method_exchangeImplementations` swizzle + KVC) ported to a **Swift twin** `SFUserAccountManagerLoginHostRecoveryTests.swift` (9 tests: previousLoginHost capture, restore-to-previous, index-0 fallback ×2, strong-signal removal, ambiguous/DNS keep, empty-storage guard, non-deletable keep) — swizzles `restartAuthentication:` via `method_exchangeImplementations` (mirrors `SFSDKLogoutBlocker.swift`), snapshots the now-`internal` `loginHostList` for the empty-storage case, and attaches the running app's `UIScene` to the request (the migrated `showErrorAlert` skips presentation on nil scene, unlike upstream ObjC — this is why the first test run timed out; fix = set `request.scene`); wired into pbxproj as **Swift** (2 fresh IDs `E40A1C01/02…`), NOT ObjC. `NewLoginHostTests.swift` +6 validation tests (verbatim, matched pre-image). SDKCore/SmartStore/MobileSync TEST BUILD ✓ (0 errors, 0 new warnings in diff); 19 SDKCore tests PASS (10 NewLoginHost + 9 recovery, fixture-based/not live-gated). ⚠ escalation: login-UI + login-host recovery behavior + L10n — flag in PR. |
74
74
| 41 | #4095 token-exchange error tests | e4bdf6397 | A | — | ✅ ported fd0fde64acb2d2a1ba828deffa7262a5449facfd | OAuth2 token-endpoint error classification tests. NEW **SFSDKOAuth2TokenExchangeErrorTests.swift** (7 tests: invalid_grant family ×3 descriptions, invalid_client_id, invalid_client, unsupported_grant_type, invalid_request, enum-mapping lock-in for the 5 wire values, success-response control) ported byte-faithful except two migration adaptations forced by the unit-38 Swift port: (1) `SFSDKOAuthTokenEndpointErrorResponse.errorCode` is the **typed `SFOAuthErrorCode` enum** in the Swift twin (was `NSInteger` in ObjC), so the assertion compares enum-to-enum (`expectedEnum`) instead of `expectedEnum.rawValue`; (2) the Swift `SFSDKOAuthTokenEndpointResponse(dictionary:parseAdditionalFields:)` init is **non-failable** and takes **`NSDictionary`** (was an implicitly-optional ObjC init), so call sites bind directly (no `guard let`) with `let params: NSDictionary`. Wired into SDKCore-test pbxproj as Swift (2 fresh IDs `E40A1C03/04…`). Test-only, SDKCore-scoped — no production change. SDKCore TEST BUILD ✓ (0 errors, 0 new warnings); 7 tests PASS. No escalation. |
0 commit comments