Desktop v2026.7.0
What's Changed
💙 Community Highlight
- [PM-32423] Add a less confusing argument and environment variable name to disable updates by @marcquark in #19045
- [PM-33285] Enhance privacy in password leak detection with response padding by @TheDcoder in #19439
- [PM-38123] [bug] Preserve 1Password archive state on 1pux import (closes #20694) by @999purple999 in #20867
- [PM-38362] fix(powermonitor): Improve connection handling and remove unwraps by @ChihweiLHBird in #20919
- [PM-38760] Recursively create directory when writing manifest by @pschlan in #21141
- [PM-39177] fix(libs): correct various typos in shared libraries and documentation by @luojiyin1987 in #21320
- [PM-39179] fix(desktop): correct various typos in desktop application by @luojiyin1987 in #21322
Feature Development
- [PM-33198] Keeper direct importer by @detunized in #19395
- [PM-31884] implemented controls for send policy access dropdown by @bmbitwarden in #19777
- [CL-1138] Add stacked drawer support with back button by @willmartian in #19804
- [Shared Unlock] [PM-34508] Default enable native messaging permission on browser by @quexten in #19907
- IPC Desktop <-> Browser transport by @coroiu in #19908
- Pm 31929 new send policy for deletion days by @bmbitwarden in #20128
- PM-32187 implemented restrict send type by @bmbitwarden in #20129
- [PM-29785] Abstract Windows Passkey Plugin Authenticator COM implementation by @iinuwa in #20285
- [CL-1001] adding new toggle group styles by @BryanCunningham in #20403
- PM 35229 [Browser/Desktop] Stripe Checkout from upgrade dialog by @cyprain-okeke in #20592
- [PM-32696] Add data field to Cipher object to support blob encryption by @nikwithak in #20765
- [PM-37875] Automatic V2 Upgrade Migration by @quexten in #20831
- [BEEEP] [PM-38226] Add disable auto-start option for snap by @quexten in #20855
- Auth/PM-38298 - Org Invite Acceptance Refactor by @JaredSnider-Bitwarden in #21011
- [PM-38565] Replace tray settings with "Keep Bitwarden running in the background" by @quexten in #21044
- [PM-38387] Introduce KeePass KDBX importer by @harr1424 in #21052
- Auth/PM-38742 - SSO Invited Existing User Flow Improvement - Show SSO redirect error notification on LoginComponent by @JaredSnider-Bitwarden in #21134
- [PM-38787] Pin vault bulk-actions bar to the viewport on scroll by @nick-livefront in #21154
- [PM-33408] Add OrganizationUserNotification banner to vault by @jengstrom-bw in #21209
- feat: add Region.Gov to available environments by @addisonbeck in #21211
- [PM-39048] Feat: scaffold @bitwarden/pam library by @Hinton in #21259
- [PM-34779] Add accept method to OrganizationInviteLinkApiService by @r-tome in #21266
- [PM-34023] Remove 2FA account recovery flag by @eliykat in #21291
- [PM-37808] Bulk Selection + Batch Bar for Desktop by @nick-livefront in #21308
- [PM-33054] Remove feature flag
cipher-key-encryptionby @jengstrom-bw in #21309 - [PM-37807] Implement
VaultBatchBarComponenton organization vault by @gbubemismith in #21345 - [PM-34053] Swap verify trust to new SDK method by @Thomas-Avery in #21347
- [PM-32402] Update copy from new to add/create web app by @jengstrom-bw in #21355
- feat(platform): introduce GovModeService for FedRAMP region gating by @addisonbeck in #21366
- [PM-34580] Rename "Note" to "Secure note" for SecureNote cipher type by @nick-livefront in #21423
- [PM-33740] Remove unlock service for password flagged logic by @mzieniukbw in #21427
- [PM-33410] Add organizationusernotification banners to vault desktop by @jengstrom-bw in #21462
- [PM-33362] Autotype Edit Cipher Initial Changes by @coltonhurst in #21500
- [PM-35106] Make AES-GCM the default algorithm in crypto.rs for secure memory by @mzieniukbw in #21553
- [PM-29785] CTAP2 CBOR Parser by @iinuwa in #21584
- [PM-20344] Disallow multiple attachments with the same name, handle existing in zip export format by @mcamirault in #21596
- [PM-39147] Batch bar copy fixes — singular/plural toasts and dialog title by @nick-livefront in #21602
- [PM-29785] Allow waiting for Autofill IPC connection in Windows authenticator by @iinuwa in #21615
- [PM-29790] Prepare for separate Windows Passkey Plugin Authenticator exe by @iinuwa in #21616
- [PM-29790] Add credential request processing for Windows passkey plugin by @iinuwa in #21618
- [PM-29790] Wire up authenticator IPC and COM server for Windows passkey plugin by @iinuwa in #21622
- [PM-29790] Windows passkey plugin: unify signature verification by @iinuwa in #21634
- windows-plugin: Add plugin entrypoint by @iinuwa in #21635
- [PM-36505] Finalize Send Controls policy design, adjust base policy component enabled display logic by @mcamirault in #21739
- [CL-1274] Add bit-page layout region for bit-layout main content by @willmartian in #21790
🐛 Bug fixes
- [PM-39731] Hotfix: Revert "[Shared Unlock] [PM-34508] Default enable native messaging permission on browser (#19907) by @mzieniukbw in #21559
- [PM-32445] Extension Scrollbar Fix by @rr-bw in #20478
- [PM-37752] - fix collections control when extension loses focus by @jaasen-livefront in #20812
- [PM-34926] Allow single-character CJK vault searches by @jaasen-livefront in #21013
- [PM-38643] Fix default broken on wayland only systems by @quexten in #21079
- [PM-38581] - disable drag for single custom fields by @jaasen-livefront in #21136
- [PM-38409] - update custom field value on reorder by @jaasen-livefront in #21137
- [PM-25277] SSH Key desktop translations by @nick-livefront in #21208
- Auth/PM-35783 - Fix Org Invite Policy State Pollution and State Clearing Issue by @JaredSnider-Bitwarden in #21218
- [PM-38608] [PM-38560] Fix diacritic normalization and multi-word query handling in searchCiphersBasic by @nick-livefront in #21232
- Fix SSH Agent v2 behavior before first unlock by @neuronull in #21273
- fix(platform): remove hardcoded vault.bitwarden.com checks in getSendUrl and getScimUrl by @addisonbeck in #21373
- [SM-1483] Fix self-hosted environment URLs in Secrets Manager config by @vincentsalucci in #21375
- [PM-39295] Fix SDK IPC messages being parsed by legacy IPC, resetting the connection by @quexten in #21387
- [PM-39204] Add extra spacing to vault items when batch bar is visible by @nick-livefront in #21390
- [SM-1993][CL-1227] Fix textarea height and fix SM button spacing by @vleague2 in #21417
- [PM-39392] Use readonly styles for fields intended to be readonly by @vleague2 in #21425
- [CL-1228] hide actions container if empty and always render button outside by @BryanCunningham in #21440
- [PM-39429] remeasure bulk actions bar width when actions change by @BryanCunningham in #21443
- [PM-39447] [Shared Unlock] Shared unlock stuck on lock component by @quexten in #21446
- [PM-39450] [Shared Unlock] Scan Secure Preferences when detecting installed Chrome extensions by @quexten in #21449
- [PM-38940] Close Firefox/Safari Permissions-Policy gaps via webRequest by @bensbits91 in #21466
- [PM-7036] Add support for latest LogMeOnce CSV import format, add folder mapping by @mcamirault in #21473
- manually recompile select css by @BryanCunningham in #21488
- [CL-1225] Berry should hide when count is 0 in toggle group by @vleague2 in #21491
- [PM-39349]] - make ssh key cipher fields readonly by @jaasen-livefront in #21505
- [PM-38771] - add missing i18n strings for button labels by @jaasen-livefront in #21509
- [PM-18344] Remove XDG_CURRENT_DESKTOP Unity override to fix clipboard on wayland by @quexten in #21513
- [PM-39610] Keyboard shortcuts only work once by @gbubemismith in #21520
- reduce select label font size by @BryanCunningham in #21525
- [PM-39695] Send fields are unexpectedly editable and changes cannot be saved by @harr1424 in #21542
- [PM-39746] Exclude search and select components from legacy global desktop css by @vleague2 in #21556
- Revert "[PM-38760] Recursively create directory when writing manifest (#21141)" by @addisonbeck in #21568
- [PM-39380] Bitwarden unencrypted JSON files containing cipher keys prevent import by @harr1424 in #21587
- [PM-39841] Fix unlocking crashing the desktop app by @quexten in #21610
- [PM-31138] Perform full sync on other clients after upgrade key rotation by @quexten in #21628
- [PM-39556] Fix access selector not saving changes when the dialog field is modified by @BTreston in #21640
- [PM-37196] Tooltip expand max-width by @JaredScar in #21646
- [PM-39974] Remove Biometric Integration Setting Fully by @quexten in #21684
- Revert "[Shared Unlock] [PM-34508] Default enable native messaging pe… by @quexten in #21687
- [PM-39977] Fix broken shared unlock for browser-desktop in non-dev mode by @quexten in #21688
- [PM-39570] use correct fill for bup logo by @BryanCunningham in #21694
- [PM-38392] Route password-protected Send saves through the SDK by @adudek-bw in #21725
- fix(vault): archive and unarchive missing from bulk bar for org items by @nick-livefront in #21741
- Render native form control UI in dark theme with color-scheme: dark by @maxkpower in #21771
- fix(desktop): fix crash generating DuckDuckGo native messaging manifests by @quexten in #21783
- fix(desktop): fix Firefox native messaging host manifest directory creation by @quexten in #21784
- [PM-40303] Fix logout when underprivileged user accesses Manage Send policy by @harr1424 in #21836
- [PM-40303] Cherry-pick to rc: Fix user logout when missing permissions by @harr1424 in #21846
- [PM-40236][RC] Logging out throws error mid-logout due to a race condition. User left in locked state by @mzieniukbw in #21869
⚙️ Maintenance
- [PM-23485] Share types between autofill_provider and napi crates by @iinuwa in #18787
- [PM-32249] Electron custom file protocol by @dani-garcia in #19208
- [PM-35600] Update Password Request Models (Key Management) by @rr-bw in #20665
- [PM-4439] Replace oidc-client-ts with oauth4webapi by @harr1424 in #20824
- [PM-12043] Remove usage of ActiveUserState from biometric-state.service by @mzieniukbw in #20860
- [PM-38892] Remove unused methods invokeMenu and openContextMenu by @djsmith85 in #21197
- [PM-38958] Add ESLint no package self import rule by @quexten in #21198
- Auth/BEEEP/PM-21301 - Move SelfHostedEnvConfigDialog out of libs/auth by @JaredSnider-Bitwarden in #21268
- [BRE-2013] Fix repo name in PR description link by @vgrassia in #21276
- [CL-1223] simplify banner component by @BryanCunningham in #21301
- [PM-36841] Align Subtitles for all new Item Types by @jengstrom-bw in #21316
- [PM-39182] Migrate to relative imports - @bitwarden/team-billing-dev by @quexten in #21325
- [PM-39182] Migrate to relative imports - @bitwarden/team-data-insights-and-reporting-dev by @quexten in #21327
- [PM-39182] Migrate to relative imports - @bitwarden/team-ui-foundation by @quexten in #21328
- [PM-39182] Migrate to relative imports - @bitwarden/team-admin-console-dev by @quexten in #21329
- [PM-39182] Migrate to relative imports - @bitwarden/team-auth-dev by @quexten in #21330
- [PM-39182] Migrate to relative imports - @bitwarden/team-vault-dev by @quexten in #21331
- [PM-39182] Migrate to relative imports - @bitwarden/team-key-management-dev by @quexten in #21333
- Remove unneeded import for ChipActionComponent by @jengstrom-bw in #21342
- [PM-38190] Improve sanitization of storybook args helper by @vleague2 in #21362
- [PM 34708] Use new shared enforce label workflow by @djsmith85 in #21365
- [PM-9420] - add cipher$ observable to cipher service by @jaasen-livefront in #21383
- [deps]: Pin dependencies by @renovate in #21406
- [VULN-649] ci: Remove deprecated scan workflow by @theMickster in #21429
- [PM-38904] - Managed to Claimed Rename by @jrmccannon in #21430
- [deps] Fix Rust nightly toolchain reference in lint workflow by @coroiu in #21457
- add data-testids to log in elements by @nthompson-bitwarden in #21458
- [PM-23485] Use a staticlib for UniFFI by @iinuwa in #21495
- [PM-39182] Enable no relative imports rule by @quexten in #21515
- [PM-35812] Remove feature flag by @JaredScar in #21567
- [PM-28139] Remove V1 Linux Biometrics by @quexten in #21571
- Bump client version(s) by @github-actions in #21580
- build: Add arm64-only MacOS pack step by @iinuwa in #21588
- [PM-39898] desktop_core: Don't compile objc when cross-compiling for non-macOS by @iinuwa in #21636
- [PM-33362] Use signals for the app label by @coltonhurst in #21638
- [BRE-2044] Migrate Auto Bump Desktop Version workflow logic to the deploy repo by @vgrassia in #21641
- Autosync Crowdin Translations for desktop by @bw-ghapp in #21647
- SSH Agent v2: restructure the SignRequest by @neuronull in #21654
- Fix clippy lint by @iinuwa in #21691
- [CL-1258] Add NumberInput story to bit-form-field by @willmartian in #21692
- [PM-39889] Acknowledge quick-xml advisory by @iinuwa in #21693
- [CL-1261] Add date input form field story by @willmartian in #21695
- [PM-39259] Migrate key-management consumers to SDK key generation by @quexten in #21707
- [PM-39259] Migrate vault export and generator to SDK random number client by @quexten in #21708
- [PM-39259] Migrate DuckDuckGo secure channel to SDK key generation by @quexten in #21711
- [PM-39259] Migrate FIDO2 credential id to SDK random by @quexten in #21712
- [PM-39259] Remove typescript cipherkey generation by @quexten in #21729
- [PM-34458] Add release.yml to bitwarden/clients by @djsmith85 in #21732
- [BRE-2018] Add snapcraft compatibility note to electron-builder PRs by @brandonbiete in #21735
- Tidy Desktop Autofill Service by @iinuwa in #21736
- [PM-23485] Use strong types for autofill IPC request parsing by @iinuwa in #21737
- chore(ci): add platform-community code-review signal by @addisonbeck in #21751
- Autosync Crowdin Translations for desktop by @bw-ghapp in #21779
- refactor(desktop_native): extract secure_memory into its own crate by @quexten in #21780
- SSH Agent v2: add README by @neuronull in #21791
- Bump client version(s) by @github-actions in #21811
- Bumped client version(s) (#21811) by @addisonbeck in #21817
📦 Dependency Updates
- [deps] UI Foundation: Update @storybook/test-runner to v0.24.4 by @renovate in #17854
- [deps]: Update @napi-rs/cli to v3.7.2 by @renovate in #20121
- [deps] Platform: Update macOS/iOS bindings by @renovate in #20344
- [PM-35903] Update clients to node 24 by @dani-garcia in #20400
- [PM-34331] Update electron to 41 by @dani-garcia in #20448
- [deps]: Update Rust crate pbkdf2 to v0.13.0 by @renovate in #20581
- [PM-18344] Implement Clipboard Support on Wayland/Gnome via RemoteDesktop Portal by @quexten in #21068
- Update sdk-internal to 0.2.0-main.843 by @bw-ghapp in #21233
- [deps] Platform: Update @babel/core to v7.29.6 [SECURITY] by @renovate in #21277
- Update sdk-internal to 0.2.0-main.849 by @bw-ghapp in #21299
- [PM-39351][PM-39353][PM-39369] Update Angular to 21.2.17 by @vleague2 in #21377
- Update sdk-internal to 0.2.0-main.857 by @bw-ghapp in #21393
- [deps] Platform: Update webpack-dev-server to v5.2.5 [SECURITY] by @renovate in #21404
- [deps] Platform: Update Rust crate serde_with to v3.21.0 by @renovate in #21407
- [deps]: Update codecov/codecov-action action to v7 by @renovate in #21409
- Update sdk-internal to 0.2.0-main.859 by @bw-ghapp in #21475
- Update sdk-internal to 0.2.0-main.870 by @bw-ghapp in #21482
- Address RUSTSEC-2026-0190 by @neuronull in #21558
- Bump client version(s) by @github-actions in #21644
- Update sdk-internal to 0.2.0-main.872 by @bw-ghapp in #21651
- [deps]: Update dtolnay/rust-toolchain digest to 4be7066 by @renovate in #21667
- [deps] Desktop Native: Update Rust crate mockall to v0.15.0 by @renovate in #21671
- [deps] Platform: Update @types/node to v22.20.0 by @renovate in #21673
- [deps] Platform: Update Rust crate itertools to v0.15.0 by @renovate in #21674
- [deps]: Update actions/cache action to v6 by @renovate in #21681
- Update sdk-internal to 0.2.0-main.883 by @bw-ghapp in #21686
- chore(deps): move rand to KM Renovate ownership by @addisonbeck in #21719
- Fix lockfile by @dani-garcia in #21763
🎨 Other
- Bump client version(s) by @github-actions in #21271
- Auth/Add CLAUDE.md files to angular/src/auth and common/src/auth on file organization + barrel files by @JaredSnider-Bitwarden in #21283
- Autosync Crowdin Translations for desktop by @bw-ghapp in #21379
- Disable self import rule by @quexten in #21410
- Autosync Crowdin Translations for desktop by @bw-ghapp in #21506
- Add claude snap permissions rule by @quexten in #21514
New Contributors
- @ChihweiLHBird made their first contribution in #20919
- @marcquark made their first contribution in #19045
- @pschlan made their first contribution in #21141
- @TheDcoder made their first contribution in #19439
- @luojiyin1987 made their first contribution in #21322
- @999purple999 made their first contribution in #20867
Full Changelog: desktop-v2026.6.1...desktop-v2026.7.0