Skip to content

Update SDK to 895ee2e (3.0.0-8168-8be9dbc) - #2989

Merged
LRNcardozoWDF merged 68 commits into
mainfrom
sdlc/sdk-update
Oct 7, 2026
Merged

LRNcardozoWDF merged 68 commits into
mainfrom
sdlc/sdk-update

Conversation

@bw-ghapp

@bw-ghapp bw-ghapp Bot commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Updates the SDK from b7e7be7e7f5adde3cafcb27d79fac80a53c5c3c8 to 895ee2eff3228ee310f6c894bed0a7b14ba9fd65

Objective

  • Added the missing v2EncryptedMigrationsGracePeriodStart get, set and clear funcs.
  • Updated and added tests.

Compile-time breaks

(check more info in Claude's comment below)

Build passed — build-for-testing on both Bitwarden and Authenticator exits 0 against the resolved 895ee2e checkout (verified in build/DerivedData/SourcePackages/workspace-state.json).

Three source-level breaks were in range, and all three already carry fixes in this PR's own commits — nothing left to resolve:

Break sdk-internal Fixed at
Client.init gained required managedSettings: ManagedSettingsBindingClient #1405 BitwardenShared/Core/Platform/Services/ClientBuilder.swift:73-77, AuthenticatorShared/Core/Platform/Services/ClientService.swift:290-294
Send.data: SendItem? / SendView.data: SendItemView? added to both initializers #1445 BitwardenSdk+Tools.swift, BitwardenSdk+ToolsFixtures.swift, SendView+Fixtures.swift, SendListState+Fixtures.swift, AddEditSendItemState.swift
MasterPasswordUnlockData.containedKeyId: KeyId? added #1391 MasterPasswordUnlockDataRequestModel.swift:11,34,54 (+ UpdateKdfRequestTests, AccountAPIServiceTests)

Both managedSettings fixes pass a fresh ManagedSettingsBindingClient() with a comment explaining that PM reads MDM config from the com.apple.configuration.managed defaults domain in EnvironmentService instead — correct for iOS, which does not consume the SDK's managed-settings channel.

What's Changed

Raw changelog
- fix: add key id to masterpasswordunlockdata (#1391)
- [PM-40985] Introduce managed settings crates (#1403)
- [PM-34718] Implement bw receive / bw send receive (#1317)
- [PM-40994] Add and generate wasm and uniffi bindings for managed settings (#1404)
- [PM-35785] Strongly typed policy enforcement (#1364)
- [deps]: Update actions/checkout action to v7 (#1341)
- [PM-40237] Stop emitting placeholder name for blob ciphers (#1408)
- refactor(shared-unlock): simplify shared unlock (#1397)
- deps: bump h2 to 0.4.16 (RUSTSEC-2026-0258) (#1415)
- Update API bindings to fc5ea9ab05bf7a1679163fc13ec351ff96363000 (#1402)
- [PM-41798] 1Password access module (#1371)
- [PM-41447] Add destination filtering to shared unlock (#1413)
- Ensure no commercial crates are part of the OSS builds (#1248)
- [deps] Platform (cargo): Update Rust crate uniffi to v0.32.0 (#1325)
- [deps]: Update Rust crate rusqlite to >=0.37.0, <0.41 (#1171)
- [PM-38816] New crypto lib in new importers crate for Keeper DI (#1182)
- Fix ThreadBoundRunner Clone Comment (#1420)
- Update API bindings to e607c3f43ebcbf6feb2aa6768c80bc9ddd5f4460 (#1416)
- feat(crypto): prevent V2 to V1 downgrade (#1417)
- Update API bindings to 0c32f3021f3e9bea08958fca1ec3cefe3462c88e (#1431)
- [deps]: Update dtolnay/rust-toolchain digest to 4360b52 (#1422)
- [PM-37487] Move collections client ownership to Admin Console (#1380)
- [PM-42599] [PM-41798] 1Password access: redact Debug output and fix crypto dep ownership (#1418)
- feat(ipc): route RPC responses on per-request dedicated topics [Option A] (#1409)
- [deps]: Update Rust to v2026-09-01 (#1428)
- Update API bindings to f758b982f8b89e8e16b3cd5f56fc129b30b45035 (#1435)
- [PM-40277] Key rotation corrupts attachments, fido2 credentials (#1265)
- [deps]: Update Rust crate comfy-table to v8 (#1429)
- Add missing Send primitives (#1382)
- [PM-42848] 1Password access: reject weak KDF parameters and tidy SRP (#1432)
- [deps] Platform (cargo): Update Rust crate validator to >=0.18.1, <0.22 (#1423)
- [PM-32955] Upgrade jni to 0.22 and rustls-platform-verifier to 0.7 (#1436)
- BW-UNIFFI - LoginClient - Add bindings for password prelogin / login (#1421)
- [PM-39982] Expose two Send decryption calls to support temporary item… (#1445)
- [deps] Platform (npm): Update lint-staged to v17.3.0 (#1424)
- [PM-39460] Add `UserCryptoManagementClient.within_v2_migration_grace_period` method (#1419)
- [PM-40985] Wire managed settings into bitwarden-core and bitwarden-pm (#1405)
- [PM-40985] Fix broken integration tests (#1449)
- feat(crypto): expose get_key_id_for_symmetric_key for uniffi (#1437)
- Pin tsify (#1448)
- [PM-42963 ]Retry failed Send deletes so uploads-that-fail don't orphan a Send (#1458)
- Extract AnyMap from the state registry (#1454)
- [PM-42032] feat: add data models for policies (excluding send controls and URI match defaults) (#1414)
- [PM-43252] Add missing uniffi.toml files and ensure they exist (#1463)
- [PM-39819] Add method to support updating an invite's confirmation (#1465)
- [BRE-2213] Rename PR target workflows for clarity (#1471)
- Ac/pm 38906 decrypt list with failures for collections (#1253)
- [deps]: Update jest to v30.5.1 (#1478)
- [deps] Platform (npm): Update @openapitools/openapi-generator-cli to v2.41.0 (#1476)
- [deps]: Update Rust to v1.98.0 (#1427)
- fix(shared-unlock): Change logging severity to debug (#1481)
- Update API bindings to f0a3e8c282864dce18409a59e4062ad43e35793f (#1457)
- Auth/PM-43265 - Refactor LoginClient to re-use the AuthClient's backing Client (#1466)
- Update Identity bindings to ea72d835ee3bfea5b65ff9837cf4d9c2f8dc696a (#1379)
- fix(crypto): tolerate unparseable EncStrings across FFI boundary (#1462)
- Document why UniFFI exports must return BitwardenError (#1486)
- chore(docs): Add clarification to addressing breaking changes in API binding update

@bw-ghapp bw-ghapp Bot added the automated-pr PR created by workflow or other automation label Aug 21, 2026
@bw-ghapp
bw-ghapp Bot requested a review from matt-livefront as a code owner August 21, 2026 15:21
@bw-ghapp bw-ghapp Bot added the t:deps Change Type - Dependencies label Aug 21, 2026
@bw-ghapp
bw-ghapp Bot requested a review from a team as a code owner August 21, 2026 15:21
@bw-ghapp bw-ghapp Bot added automated-pr PR created by workflow or other automation t:deps Change Type - Dependencies labels Aug 21, 2026
@github-actions github-actions Bot added app:password-manager Bitwarden Password Manager app context app:authenticator Bitwarden Authenticator app context labels Aug 21, 2026
@codecov

codecov Bot commented Aug 21, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.58824% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.00%. Comparing base (91c23b5) to head (c2e42bb).

Files with missing lines Patch % Lines
...rShared/Core/Platform/Services/ClientService.swift 0.00% 7 Missing ⚠️
...red/Core/Tools/Extensions/BitwardenSdk+Tools.swift 96.96% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2989      +/-   ##
==========================================
+ Coverage   79.97%   80.00%   +0.02%     
==========================================
  Files        1171     1171              
  Lines       75894    75974      +80     
==========================================
+ Hits        60696    60780      +84     
+ Misses      15198    15194       -4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@claude

claude Bot commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @bw-ghapp[bot]'s task in 5m 50s —— View job


SDK bump evaluated

b7e7be7 (3.0.0-7742-9794da5) → 895ee2e (3.0.0-8168-8be9dbc) — 56 sdk-swift commits.

Note: the PR title and body are stale — they describe 7c79071 / 3.0.0-8160-b17fd82. The branch head (1482ef8) pins 895ee2e / 3.0.0-8168-8be9dbc, two commits further along. The evaluation below covers the full range to the actual pin.

Surface delta: 12 removed, 71 added, 0 mutated type declarations. Version comment matches SDKVersionInfoTests' ^\d+\.\d+\.\d+-\d+-[a-f0-9]+$ (no leading v).

Compile-time breaks

Build passed — build-for-testing on both Bitwarden and Authenticator exits 0 against the resolved 895ee2e checkout (verified in build/DerivedData/SourcePackages/workspace-state.json).

Three source-level breaks were in range, and all three already carry fixes in this PR's own commits — nothing left to resolve:

Break sdk-internal Fixed at
Client.init gained required managedSettings: ManagedSettingsBindingClient #1405 BitwardenShared/Core/Platform/Services/ClientBuilder.swift:73-77, AuthenticatorShared/Core/Platform/Services/ClientService.swift:290-294
Send.data: SendItem? / SendView.data: SendItemView? added to both initializers #1445 BitwardenSdk+Tools.swift, BitwardenSdk+ToolsFixtures.swift, SendView+Fixtures.swift, SendListState+Fixtures.swift, AddEditSendItemState.swift
MasterPasswordUnlockData.containedKeyId: KeyId? added #1391 MasterPasswordUnlockDataRequestModel.swift:11,34,54 (+ UpdateKdfRequestTests, AccountAPIServiceTests)

Both managedSettings fixes pass a fresh ManagedSettingsBindingClient() with a comment explaining that PM reads MDM config from the com.apple.configuration.managed defaults domain in EnvironmentService instead — correct for iOS, which does not consume the SDK's managed-settings channel.

Runtime considerations

  • EncString parsing is now infallible (#1462). FromStr/From<&str> never error; anything matching no known format becomes EncString::Unparseable { raw }, and strict rejection moved to the new opt-in parse_strict. iOS passes EncString as its String typealias throughout, so a malformed value that previously failed at the FFI boundary with InvalidTypeSymm now travels in and surfaces later as a decrypt-time failure. No compile signal, and no iOS change needed — but error attribution for corrupt vault data shifts deeper into the SDK, which is worth knowing when triaging decrypt reports against this build.
  • containedKeyId now rides the wire. MasterPasswordUnlockDataRequestModel is Encodable with a synthesized encode(to:), so the new optional uses encodeIfPresent and is omitted when nil. V1-key users send the same JSON as before; only V2 users with a key id gain the field. The nil default on the memberwise init keeps existing call sites source-compatible.
  • Key rotation no longer corrupts attachments and fido2 credentials (#1265). Behavioral fix inside the crypto client with no signature change — a correctness improvement iOS picks up for free on its existing rotation path.
  • BitwardenError gained four cases — PasswordPrelogin, PasswordLogin, CollectionDecrypt, CollectionEncrypt. Safe by inspection: iOS only pattern-matches specific cases in catch clauses (VaultClientService.swift:85-87 on .Totp, DebugMenuProcessor.swift:84 on .Api) and extends the enum with CustomNSError in BitwardenSdk+Platform.swift:31 — there is no exhaustive switch, so added cases neither break compilation nor fall into a wrong branch.

Everything else in range — confirmed safe

  • MasterPasswordPolicyResponse → MasterPasswordPolicyData (#1414): the only removed struct, and it has no iOS call site. iOS uses its own hand-written MasterPasswordPolicyResponseModel, an unrelated type despite the similar name.
  • var → let immutable-records sweep (ciphers, collections, count, folders, id, name, organizationId, restrictedTypes, targetCollection, targetFolder, type): accounts for 11 of the 12 REMOVED entries, all re-added as let. iOS mutates none of them, confirmed by the clean test-target build.
  • New unused clients and accessors: LoginClient/LoginClientProtocol, SendSyncHandlerClient/Protocol, ManagedSettingsBindingClientProtocol, plus login(), loginViaPassword, getPasswordPrelogin, sendSyncHandler(), onSync(sends:), getKeyIdForSymmetricKey, get/isManaged/updateProfile, and the three V2-grace-period methods (#1421, #1466, #1419, #1437, #1458) — no iOS call sites.
  • BitwardenSdkMocks.swift needs no new entry. CryptoClientProtocol gained getKeyIdForSymmetricKey and AuthClientProtocol gained login(); CryptoClientProtocol is already listed so Sourcery regenerates it, and iOS never conforms to the SDK's AuthClientProtocol — it defines its own AuthClientService (BitwardenKit/Core/Auth/Services/SDK/AuthClientService.swift). ManagedSettingsBindingClient is consumed as a concrete type, never mocked.
  • Hand-written with_foreign conformers all unchanged: ClientManagedTokens, Fido2CredentialStore, ServerCommunicationConfigRepository, Fido2UserInterface — no new protocol requirements to stub.
  • Core vault types unchanged: Cipher, CipherView, CipherListView, Collection, CollectionView, CipherType, SendType, CiphersClientProtocol, SendClientProtocol.
  • Collections work (#1253, #1380): decryptListWithFailures(collections:), DecryptCollectionListResult, CollectionEncryptError are additive. iOS's existing decryptListWithFailures(ciphers:) call sites in VaultRepository.swift and CiphersClientWrapperService.swift are the cipher overload and untouched.
  • Policy data models (#1364, #1414): ten new *PolicyData structs, EnforcedPolicyErased, PolicyDataType, VaultTimeoutType/VaultTimeoutAction, PasswordGeneratorType — all unused by iOS. No name collisions with existing iOS types (grepped; the VaultTimeoutAction hits in BitwardenWatchApp are commented-out code in a target that does not import BitwardenSdk).
  • Blob ciphers no longer emit a placeholder name (#1408): iOS has no blob-cipher call sites, so inert.
  • Serialization gate clean. The uniffi.toml diff adds three new files only (bitwarden-importers, bitwarden-managed-settings-types, bitwarden-sensitive-value) and modifies none. No existing crate lost generate_codable_conformance, so the @retroactive Codable extensions in BitwardenSdk+Platform.swift (AcquiredCookie, BootstrapConfig, ServerCommunicationConfig, SsoCookieVendorConfig) keep working and gained no duplicate conformance.
  • No iOS-facing surface in the remaining commits: dependency and toolchain bumps (h2, rusqlite, uniffi 0.32, validator, jni 0.22, comfy-table, Rust 1.98/2026-09-01, jest, lint-staged, openapi-generator, tsify, actions/checkout v7, rust-toolchain), API/Identity bindings regens, shared-unlock refactor and log-severity change, IPC per-request response topics, AnyMap extraction, OSS commercial-crate gating, 1Password access module and its follow-ups, Keeper importers crypto, bw send receive, workflow renames, and docs.

Commit

No commit — nothing needed fixing. The three compile-time breaks in range were already resolved by commits on this branch, and the baseline build passes clean on both schemes.
· branch sdlc/sdk-update

@bw-ghapp bw-ghapp Bot changed the title Update SDK to ed5380c (3.0.0-7748-953508f) Update SDK to a3fda30 (3.0.0-7749-b57d1bb) Aug 22, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to a3fda30 (3.0.0-7749-b57d1bb) Update SDK to 9d646cf (3.0.0-7757-f856c93) Aug 24, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 9d646cf (3.0.0-7757-f856c93) Update SDK to acee733 (3.0.0-7758-49b5213) Aug 24, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to acee733 (3.0.0-7758-49b5213) Update SDK to 59a5e28 (3.0.0-7763-e5ec7c5) Aug 25, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 59a5e28 (3.0.0-7763-e5ec7c5) Update SDK to b89e765 (3.0.0-7776-268fa76) Aug 25, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to b89e765 (3.0.0-7776-268fa76) Update SDK to 8010eeb (3.0.0-7784-2ee904c) Aug 26, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 8010eeb (3.0.0-7784-2ee904c) Update SDK to c158ba1 (3.0.0-7785-de0ac22) Aug 26, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to c158ba1 (3.0.0-7785-de0ac22) Update SDK to 8423bca (3.0.0-7802-6c40e04) Aug 26, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 8423bca (3.0.0-7802-6c40e04) Update SDK to bb998da (3.0.0-7803-e3b223d) Aug 26, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to bb998da (3.0.0-7803-e3b223d) Update SDK to 8eafde8 (3.0.0-7806-c1b859a) Aug 26, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 8eafde8 (3.0.0-7806-c1b859a) Update SDK to e9f50ba (3.0.0-7826-c550467) Aug 27, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to e9f50ba (3.0.0-7826-c550467) Update SDK to 97ff5c6 (3.0.0-7827-b41ba80) Aug 27, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 97ff5c6 (3.0.0-7827-b41ba80) Update SDK to 26f3e11 (3.0.0-7833-b19177e) Aug 27, 2026
bw-ghapp Bot added 7 commits August 27, 2026 10:28
The SDK now populates `MasterPasswordUnlockData.containedKeyId` from the
user key, and its own request-model conversion forwards it. iOS builds
`MasterPasswordUnlockDataRequestModel` by hand, so it was dropping the
field and sending no key ID for users whose key has one — the case
bitwarden/sdk-internal#1391 set out to fix.
@bw-ghapp bw-ghapp Bot changed the title Update SDK to a2c2d5e (3.0.0-8099-9f52246) Update SDK to f35f503 (3.0.0-8100-183f1b7) Sep 14, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to f35f503 (3.0.0-8100-183f1b7) Update SDK to abae4e3 (3.0.0-8102-6e68a10) Sep 14, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to abae4e3 (3.0.0-8102-6e68a10) Update SDK to 41b7cc7 (3.0.0-8108-6c7dbdf) Sep 15, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 41b7cc7 (3.0.0-8108-6c7dbdf) Update SDK to bd4bc29 (3.0.0-8137-20e5595) Sep 16, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to bd4bc29 (3.0.0-8137-20e5595) Update SDK to 2f54cad (3.0.0-8151-6bfb7d0) Sep 16, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 2f54cad (3.0.0-8151-6bfb7d0) Update SDK to bf34b7b (3.0.0-8154-021de8a) Sep 17, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to bf34b7b (3.0.0-8154-021de8a) Update SDK to 7c79071 (3.0.0-8160-b17fd82) Sep 17, 2026
@bw-ghapp bw-ghapp Bot changed the title Update SDK to 7c79071 (3.0.0-8160-b17fd82) Update SDK to 895ee2e (3.0.0-8168-8be9dbc) Sep 17, 2026
Comment thread BitwardenShared/Core/Tools/Extensions/BitwardenSdk+Tools.swift Outdated
Comment thread BitwardenShared/Core/Tools/Extensions/BitwardenSdk+ToolsTests.swift Outdated
Comment thread BitwardenShared/Core/Tools/Models/API/SendDataModel.swift
@LRNcardozoWDF
LRNcardozoWDF merged commit c6c7da6 into main Oct 7, 2026
22 checks passed
@LRNcardozoWDF
LRNcardozoWDF deleted the sdlc/sdk-update branch October 7, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app:authenticator Bitwarden Authenticator app context app:password-manager Bitwarden Password Manager app context automated-pr PR created by workflow or other automation t:deps Change Type - Dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants