clients/apps/desktop
Shane Melton 8258ea39b0
[PM-18903] Desktop sync issues (#13681)
* [PM-18707] Use different BroadcasterSubscriptionId in base view component to avoid collision with desktop view component

* [PM-18707] Use userId instead of payloadUserId for cipher notification syncs

* [PM-19032] Live Sync on Desktop (#13851)

* migrate the vault-items to an observables rather than async/promises

- this helps keep data in sync with the service state and avoids race conditions

* migrate the view component to an observables rather than async/promises

- this helps keep data in sync with the service state and avoids race conditions

* decrypt saved cipher from server

* bump timeout for upserting ciphers

* mark `go` as async in desktop vault

- previously it was a floating promise

* Revert "mark `go` as async in desktop vault"

This reverts commit fd28f40b18.

* Revert "bump timeout for upserting ciphers"

This reverts commit e963acc377.

* move vault utilities to `common` rather than `lib` to avoid circular dependencies

* use `perUserCache$` for `cipherViews$` to avoid new subscriptions from being created

* use userId from observable rather than locally set to be the most up to date

* [PM-18707] Add clearBuffer$ input to perUserCache$ helper so that  the internal share replay buffers can be cleared

* [PM-18707] Rework forceCipherViews$ to clearBuffer$ refactor

- Add dependency for cipherDecryptionKeys$ for the cipherViews so that decryption is never attempted without keys

* [PM-18707] Add overload to perUserCache to satisfy type checker

* [PM-18707] Fix overloads

* [PM-18707] Add check for empty failed to decrypt ciphers

* [PM-18707] Mark vault component for check after observable emits.

The cipherViews$ observable now persists between subscriptions, meaning that updates via the sync push notifications can occur outside the AngularZone causing delays in updating the view.

---------

Co-authored-by: Nick Krantz <125900171+nick-livefront@users.noreply.github.com>
Co-authored-by: Nick Krantz <nick@livefront.com>
2025-04-15 12:17:41 -07:00
..
.vscode Multi root workspace tweaks (#2858) 2022-06-13 21:39:36 -05:00
config [deps] SM: Update typescript-eslint monorepo to v8 (major) (#10601) 2025-01-14 11:23:59 -05:00
desktop_native [deps]: Update Rust crate tokio to v1.43.1 [SECURITY] (#14170) 2025-04-09 18:08:22 +02:00
macos PM-19095: Wire passkey autofill to UI (#13051) 2025-03-24 07:50:11 -04:00
native-messaging-test-runner [deps]: Lock file maintenance (#13565) 2025-02-25 15:48:39 -05:00
resources Add support for Zen browser integration on mac (#13895) 2025-04-07 15:48:44 +00:00
scripts update mas-dev SHA-1 (#14290) 2025-04-15 13:57:37 +00:00
src [PM-18903] Desktop sync issues (#13681) 2025-04-15 12:17:41 -07:00
stores Update all instances of copyright with 2023 to 2024 (#7396) 2023-12-29 15:28:14 +00:00
.gitignore [PM-9022] scaffold the extension and build pipeline (#9948) 2024-11-13 15:54:35 +01:00
crowdin.yml Fix Crowdin Pull workflow (#2667) 2022-05-10 10:20:32 -04:00
electron-builder.json [PM-18884] Enable fido2 2FA on Linux (#13038) 2025-03-13 16:21:41 +01:00
installer.nsh Add NSIS custom installer script for UAC fix on Windows (#2856) 2022-06-08 08:47:10 -04:00
jest.config.js [PM-5537] Biometric State Service (#7761) 2024-02-05 13:02:28 -05:00
package.json Bumped Desktop client to 2025.4.1 2025-04-10 17:27:43 +00:00
postcss.config.js eslint: report unused disable directives (#13463) 2025-03-10 09:33:08 -04:00
README.md Update urls to match the contributing docs (#4192) 2022-12-06 11:20:27 +01:00
sign.js [deps] SM: Update typescript-eslint monorepo to v8 (major) (#10601) 2025-01-14 11:23:59 -05:00
tailwind.config.js eslint: report unused disable directives (#13463) 2025-03-10 09:33:08 -04:00
test.setup.ts [PM-18599] Forbid unknown property and element in tests (#13556) 2025-02-25 14:02:19 -08:00
tsconfig.json [PM-18599] Forbid unknown property and element in tests (#13556) 2025-02-25 14:02:19 -08:00
tsconfig.renderer.json Add support for migrated jslib (#2826) 2022-06-03 18:01:07 +02:00
tsconfig.spec.json [SG-397] Configure jest for Desktop and add simple tests (#3467) 2022-09-15 12:31:15 -04:00
webpack.main.js Switch to rustcrypto argon2 on desktop (#11753) 2024-12-04 11:54:55 +00:00
webpack.preload.js Remove clean-webpack-plugin (#8240) 2024-03-12 18:02:47 +01:00
webpack.renderer.js [CL-349] Allow @apply styles to be used in CL css (#13414) 2025-02-20 12:56:22 -05:00

Github Workflow build on master Crowdin Join the chat at https://gitter.im/bitwarden/Lobby

Bitwarden Desktop Application

Platforms

The Bitwarden desktop app is written using Electron and Angular. The application installs on Windows, macOS, and Linux distributions.

Desktop Vault

Documentation

Please refer to the Desktop section of the Contributing Documentation for build instructions, recommended tooling, code style tips, and lots of other great information to get you started.