Commit Graph

2050 Commits

Author SHA1 Message Date
Nick Krantz
2d702e0eac
[PM-32661] Update Transfer Items Dialog (#19498)
* refactor decline and leave to be a link button rather than a secondary button

* update supporting text for transfer dialog

* add aria-label for learn more link
2026-03-11 16:19:09 -05:00
Daniel James Smith
46bb683d7b
[PM-29232] Add cookie acquisition (#19392)
* Add cookie acquisition to ServerCommunicationConfigService

* Fix DI for ServerCommunicationConfigPlatformApiService

* Rename param for acquireCookie from hostname to url

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-11 16:52:44 +01:00
Andreas Coroiu
35d25b7f8e
[PM-24047] Make popout windows respect vault timeout when unfocused (#19019)
* PM-24047: Make popout windows respect vault timeout when unfocused

Replace the heartbeat message-passing mechanism for popup detection
with direct browser API queries (getContexts on MV3, getExtensionViews
on MV2/Safari) that can distinguish focused from unfocused popout
windows. Unfocused popout windows no longer prevent vault timeout.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* PM-24047: Add isAnyViewFocused(), revert isPopupOpen() to simple popup detection

Addresses PR review feedback by separating focus-aware logic from the
isPopupOpen() semantics, which other callers depend on for simple
popup detection:

- BrowserApi.isPopupOpen(): reverted to return views.length > 0 for
  popup-type views only (original behavior)
- BrowserApi.isAnyViewFocused(): new method that checks popup views
  (always focused), sidebar tab views (always focused), and popout
  tab views (focused only if document.hasFocus() is true)
- BrowserPlatformUtilsService.isPopupOpen(): simplified MV3 path
  uses getContexts({ contextTypes: ['POPUP'] })
- BrowserPlatformUtilsService.isAnyViewFocused(): new method with
  MV3 (POPUP/SIDE_PANEL/focused TAB) and MV2/Safari paths
- PlatformUtilsService: adds isAnyViewFocused() to the interface
- Web/Desktop/CLI stubs return false (no popout windows)
- VaultTimeoutService now calls isAnyViewFocused() instead of
  isPopupOpen() so unfocused popouts don't block vault timeout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Move MV3/MV2 routing into BrowserApi

isPopupOpen() and isAnyViewFocused() now use feature detection for
chrome.runtime.getContexts to select the right API internally,
rather than having the routing in BrowserPlatformUtilsService.
This means BrowserApi is the single owner of view-detection logic,
and the service methods are simple one-line delegations.

Using typeof getContexts === "function" rather than isManifestVersion()
handles Safari naturally: if Safari doesn't support getContexts it
falls back to getExtensionViews, without needing an explicit isSafari()
exclusion.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Scope MV3/MV2 routing refactor to isAnyViewFocused only

isPopupOpen() keeps its existing pattern (MV3/MV2 routing in the
service, simple getExtensionViews in BrowserApi) to avoid touching
unrelated code. Only isAnyViewFocused() has its routing moved into
BrowserApi via feature detection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Restore isPopupOpen to main branch implementation

isPopupOpen() and its tests are restored exactly to the main branch
version (heartbeat-based approach). Only isAnyViewFocused is new code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Refactor isPopupOpen() to use getContexts/getViews instead of heartbeat

Replaces the message-passing heartbeat approach with the same
chrome.runtime.getContexts() (MV3) / chrome.extension.getViews() (MV2/Safari)
introspection pattern used by isAnyViewFocused(). This eliminates the need
for a heartbeat listener in the popup and makes both methods consistent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Simplify isAnyViewFocused() using Array.some()

Collapse the two separate POPUP/SIDE_PANEL checks into a single .some()
call, and replace the synchronous MV2/Safari tab view loop with .some().
The async TAB/popout window check stays as a for loop.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: improve tabs loop readability somewhat

* PM-24047: Fix MV3 popout focus check using wrong uilocation filter

The TAB context filter was checking for `uilocation=sidebar` instead of
`uilocation=popout`. In MV3, sidebars are SIDE_PANEL contexts (already
handled above), so this filter never matched, causing focused popout
windows to be silently ignored and the vault to timeout while a user was
actively viewing one.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* PM-24047: Rename isViewOpen to isViewFocused for semantic accuracy

The variable and parameter previously named isViewOpen reflected
the old "is any view open?" semantics. After the refactor to
isAnyViewFocused(), the naming is updated to match the actual
behavior: checking whether a view is focused, not merely open.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-11 14:10:32 +01:00
Thomas Avery
c842f76539
[PM-27297] Remove ConsolidatedSessionTimeoutComponent feature flag (#18616)
* Remove flag

* Remove legacy components

* Update unit tests

* update messages json
2026-03-10 13:09:35 -05:00
Oscar Hinton
77e837fe80
Remove shared module from desktop (#19414) 2026-03-10 19:09:20 +01:00
Oscar Hinton
b373e9c1ff
[PM-28754] [PM-28755] Cleanup desktop ui milestone 1 & 2 (#19081)
Removes feature flags for milestone 1 and 2 for desktop ui migration.
2026-03-10 12:02:23 +01:00
renovate[bot]
f3b4da0590
[deps] Platform: Update Rust crate sysinfo to v0.38.2 (#18882)
* [deps] Platform: Update Rust crate sysinfo to v0.38.2

* Add Wdk feature

* Use Wdk_System_SystemServices instead

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel García <dani-garcia@users.noreply.github.com>
2026-03-10 11:43:17 +01:00
Will Martin
5e90565a79
[CL-1063] add enforce-readonly-angular-properties ESLint rule (#19201)
* Add enforce-readonly-angular-properties ESLint rule
2026-03-09 10:26:42 -07:00
neuronull
918dfd8ac3
[BEEEP] Desktop Native simpler napi errors (#18824) 2026-03-09 10:30:20 -06:00
cyprain-okeke
2a2bce7c82
[PM-31229][Desktop app] Upgrade to Premium card issues (#19337)
* Fix the bug month

* Resolve teh pr comment
2026-03-09 16:07:31 +01:00
Daniel James Smith
d4c5f85bd7
[PM-29149] Add ServerCommunicationConfigService (#18837)
* Add state- and key-definitions for persisting serverCommunicationConfig(s)

* Add implementation of the SDK-defined ServerCommunicationConfigRepository

* Add ServerCommunicationConfigService

* Add state- and key-definitions for persisting serverCommunicationConfig(s)

* Add implementation of the SDK-defined ServerCommunicationConfigRepository

* Add ServerCommunicationConfigService

* Fix instantiation of ServerCommunicationConfigClient due to additional dependency on ServerCommunicationConfigPlatformApi

* Fix broken tests

* Fix ts-strict error

* Call setCommunicationType when ConfigService.serverCommunicationConfig$ emits (#19218)

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>

* Move service instantiation to desktop's service.module

* Deleted unused tests

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-09 14:06:05 +01:00
bw-ghapp[bot]
d066a06caf
Autosync the updated translations (#19442)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-03-09 02:21:05 -05:00
Oscar Hinton
a697417f08
Remove most JslibModule usages from desktop (#19384) 2026-03-06 09:22:29 +01:00
bw-ghapp[bot]
8ad7eb853a
Autosync the updated translations (#19409)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-03-06 09:14:41 +01:00
Daniel James Smith
f7a5dd85ad
Remove unused templates from desktop's app.component (#19391)
* Remove unused templates from desktops app.component

* Remove all unused services from ctor

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-05 16:41:44 +01:00
Github Actions
9672c576dc Bumped Desktop client to 2026.3.0 2026-03-05 14:02:20 +00:00
Daniel James Smith
b932ae04fd
Remove unused ColorPasswordCountPipe and ColorPasswordPipe (#19345)
With the replacement of the vault cipher view and add-edit views on the desktop client, we no longer require the ColorPasswordCountPipe or the ColorPasswordPipe, as these are now handled by the ColorPasswordComponent from the Bitwarden component library

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-05 08:56:31 +01:00
Bernd Schoolmann
944b3ffdc2
[PM-31406] fix: TypeScript 5.9 type compatibility fixes for auth-owned code (#19187)
* fix: add TypeScript 5.9 type compatibility fixes for auth-owned code

Add explicit `as BufferSource` casts and `Uint8Array` wrapping to satisfy
stricter type checking in TypeScript 5.9. Non-functional changes.

* Fix type errors

* Fix test

* Fix tests

* Fix typing in auth tests

* Also change unlock service to uint8array<arraybuffer>

* Fix types

* Prettier

* Apply fixes for jest spy type
2026-03-04 19:12:44 -07:00
Andy Pixley
e1078a00fa
[BRE-1530] Updating certificate name from 8bit to Bitwarden (#19380) 2026-03-04 16:16:12 -05:00
renovate[bot]
8125954c04
[deps]: Update Rust crate serial_test to v3.4.0 (#19315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: neuronull <9162534+neuronull@users.noreply.github.com>
2026-03-04 10:25:03 -07:00
Daniel James Smith
9ed87a4166
Remove gitter chat badges from READMEs (#19368)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-04 16:33:27 +00:00
neuronull
23da514cce
Desktop Native: Add missing docs lint for _some_ modules in core (#18983)
Adds the clippy lint for docs warning to core to align with our contributing docs guidelines.
2026-03-04 09:21:02 -07:00
Isaiah Inuwa
d0ca8f7b0a
Split NAPI modules [PM-31598] (#19113)
NAPI modules are all in one file. We use nested modules to define types within TypeScript namespaces, and NAPI requires nested modules to be inline due to rust proc-macro limitations.

However, we can still split these into multiple files and repeat the nested module name for the namespace.

This will improve the ability to set code ownership and navigate the data.

This PR splits the NAPI module files without further modification and assigns code ownership to @bitwarden/team-autofill-desktop-dev for the autofill, autotype and sshagent modules. I verified locally that the generated index.d.ts file does not change at all with this PR; all types are generated exactly the same.
2026-03-04 07:27:39 -06:00
Bernd Schoolmann
f28bea4ca4
[PM-31406] Migrate duckduckgo to purpose-built dangerous-crypto-compat function (#19223)
* Introduce dangerous-compat crypto implementations

* Migrate duckduckgo to purpose-built dangerous-crypto-compat function

* Update typescript version
2026-03-04 10:58:01 +01:00
renovate[bot]
5b35973944
[deps]: Update Rust crate rusqlite to v0.38.0 (#18202)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Dragovich <46065570+itsadrago@users.noreply.github.com>
2026-03-03 17:12:10 -08:00
bw-ghapp[bot]
51a878ab8b
Autosync the updated translations (#19269)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-03-03 09:42:52 +01:00
neuronull
7b44917b27
SSH Agent v2: In-memory encrypted key store (#18596)
Co-authored-by: Bernd Schoolmann <mail@quexten.com>
2026-03-02 08:33:33 -07:00
Leslie Xiong
cfa4b1c27f
[PM 29776] Move Account Switcher (#18686)
* moved account switcher into page header

* Added 'header-actions' slot for AnonLayout

* removed 'standalone: true'

* cleanup

* more cleanup

* fixed lint error

* use 'app-avatar' in dropdown

* fixed account avatar vertical centering

* revert back to `standalone: false`

* moved new account switcher behind 'desktop-ui-migration-milestone-4' FF

* - added to default FF
- fixed template formatting
- removed type of 'configService'
- renamed to 'account-switcher-v2'

* fixed test

* moved 'account-switcher-v2' into '/auth'

* updated class and style from 'v3' to 'v2'

* removed ts-strict-ignore

* added back `ts-strict-ignore`

* added `aria-label` to `bit-avatar`

* fixed page load issue after clearing local session data

* fixed 'Access denied' toast appearing when milestone4 FF is false

* fixed new account switcher missing from 'locked vaults' and other 'AnonLayouts'

* fixed styles for non-logged in account-switcher button

* fixed duplicate account switcher bug

* lint fix

* updated 'account switcher' anon layout styles/colors

* fixed color from `bg-brand-strong` to `bg-brand`

---------

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
2026-02-28 14:57:57 -05:00
Oscar Hinton
59c0b28816
Deprecated SharedModules (#19260) 2026-02-27 11:45:06 +01:00
Bernd Schoolmann
dc772c22f7
[PM-31406] fix: TypeScript 5.9 type compatibility fixes for fido2 & platform-owned code (#19188)
* fix: TypeScript 5.9 type compatibility fixes for platform-owned code

Add explicit `as BufferSource` casts and `Uint8Array` wrapping to satisfy
stricter type checking in TypeScript 5.9. Non-functional changes.

* Fix fido2 issues

* Fix another type error

* Fix another type error
2026-02-27 10:59:52 +01:00
Nick Krantz
d04210926c
pass addCollectionIds as an array rather than null (#19204) 2026-02-26 16:10:55 -06:00
Leslie Xiong
b3439482fa
[PM-18768] Migrate vault cipher list (#18522)
* migrated vault cipher list

* added back `rounded` prop to `bit-layout`

* moved account switcher to right corner

* moved username below cipher item name

* fixed spacing to align with send pages

* removed commented out

* fixed options buttons overflowing if has launch

* fixed "options" label disappearing when width is insufficient

* reverted search component, added search directly to vault-list

* placed new vault cipher list work behind 'desktop-ui-migration-milestone-3' feature flag

* reverted scss changes

* added back search bar when FF not enabled

* fixed owner column responsiveness (set to table width instead of screen)

* fixed 'owner' column responsiveness

* hide 'owner' column at 'md' breakpoint

* Remove duplicate badge component and org name pipe

* Convert to standalone

* Added back translations

* used correct 'tw' variants for 'px'

* extended existing `item-footer` component

* removed unused `showGroups()` from `vault-cipher-row`

* removed 'addAccess' from `vault-list.component`

* removed more unused, separated 'cipher collections' from 'filter collections'

* converted `vault-wrapper` to use signal

* updated original 'vault.component' to reflect main

* fixed `templateUrl`, merge fix

* changed to `getFeatureFlag$`

* fixes for `item-footer` and `vault-collection-row`

* fixed lint error

* - replaced using global css with tailwind
- added functionality and ui for empty states
- moved search and vault header from 'vault-list' to 'vault component'

* fixed accessing `this.userCanArchive$`

* converted more to tailwind in vault component

* removed unused 'selection' from `vault-list`

* Fix flashing vault list

* Move app-header title to routing module

* Remove broken half-migrated new form

* removed unnecessary `this.organizations$` block

* removed `firstSetup$`, cleaned up unused, separated 'delete' and 'restore' handling for footer and cipher menu

* used desktop 'launch' functionality

* moved 'bit-no-items' into `vault-list`

* removed unused locales

* aligned `handleDelete` and `handleRestore` with original desktop functionality

* Fix linting and tests

* Move no-items out of table similar to send.

* Re-add newline end of messges.json

* Remove events

* Hide copy buttons if there is nothing to copy. Simplify

* fix

* Get rid of unused copyField

* Use dropdown button in vault list instead

* Fix linting

* removed unused imports

* updated `vault-orig` to current in main

* fixed `vault-orig` templateUrl

* fixed import order, removed unused `combineLatest` block

* fixed `onVaultItemsEvent` "delete"

* removed duplicate rendering of logo

* preserve cipher view after 'cancel'

* filter from `allCiphers`

* moved `enforceOrganizationDataOwnership` call inside "syncCompleted" block

* converted `showAddCipherBtn` to observable

* removed unused

* added `submitButtonText` to `app-vault-item-footer`

* removed filtering restricted item types

* fixed `cancelCipher` pass in and set `cipherId`

* updated `submitButtonText`

* updated `vault-orig` to current `vault` in main

---------

Co-authored-by: Hinton <hinton@users.noreply.github.com>
2026-02-26 16:41:02 -05:00
Oscar Hinton
6b326a5fd0
[CL-1051] Generic closeOnNavigation for drawers (#19031)
Exposes closeOnNavigation from cdk config and implements a drawer close solution on navigation. More complex scenarios may still require custom handling.

DialogService is referenced in imported components in some tests meaning we need to use overrideProvider rather than providers.
2026-02-26 17:44:49 +01:00
Vince Grassia
727bc02a63
Add signing options for DLLs and Node files (#19197) 2026-02-25 13:25:12 -05:00
Jason Ng
2e38f409ec
[PM-31408] update archive flag check in desktop vault (#19230) 2026-02-25 13:05:29 -05:00
Nick Krantz
0bbdcb69c7
adds cipher edit permission to the attachments dialog in the vault-v3 (#19231) 2026-02-25 11:33:39 -06:00
Colton Hurst
385ba70b5c
Electron gtk bug fixed, workaround is no longer needed. (#18520) 2026-02-25 10:21:26 -05:00
Nick Krantz
c03ea5b29f
only show delete button when the user has delete permissions (#19200) 2026-02-24 10:36:29 -06:00
Andreas Coroiu
69f0e61cda
[PM-32442] Enforce tsc-strict on desktop and CLI apps (#19058)
* fix: ts-strict not applying to desktop

* fix: ts-strict not applying to cli

* fix: desktop ESM module resolution in storybook
2026-02-24 09:20:44 +01:00
Will Martin
e7bf683503
[CL-1057] remove desktop global styles from bitLink (#19140) 2026-02-23 16:12:12 -05:00
Will Martin
c5e73b4b8c
[CL-971] update responsive behavior of three panel layout (#19086)
* update responsive behavior of three panel layout; give sidenav extra top padding on electron; add stories that show mix of drawer and sidenav states

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 11:56:01 -05:00
bw-ghapp[bot]
760b426c22
Autosync the updated translations (#19129)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-02-23 04:34:43 -06:00
Sola
2e284c5e5a
Fix biometric authentication in sandboxed environments (Flatpak, Snap, etc.) (#18625)
Biometric authentication was failing in Flatpak with the error "Unix process
subject does not have uid set". This occurred because polkit could not validate
the sandboxed PID against the host PID namespace.

Use polkit's system-bus-name subject type instead of unix-process. This allows
polkit to query D-Bus for the connection owner's host PID and credentials,
bypassing the PID namespace issue. Includes fallback to unix-process for edge
cases where D-Bus unique name is unavailable.
2026-02-23 09:50:13 +01:00
Isaiah Inuwa
cae1ae6491
Revert "Split NAPI modules [PM-31598] (#18722)" (#19112)
This reverts commit fd90efabe4.
2026-02-20 13:45:30 -06:00
Github Actions
531a9df6b0 Bumped Desktop client to 2026.2.1 2026-02-20 19:25:42 +00:00
Nick Krantz
a610ce01a2
[PM-31433] Welcome Dialog with Extension Prompt (#18849)
* add welcome prompt when extension is not installed

* add feature flag

* move prompt logic to internal service and add day prompt

* rename dialog component

* remove feature flag hardcode and add documentation

* use i18n for image alt

* move state into service

* be more explicit when the account or creation date is not available

* remove spaces

* fix types caused by introducing a numeric feature flag type

* add `typeof` for feature flag typing
2026-02-20 10:23:59 -06:00
John Harrington
767caa4312
[PM-32472] [Defect] Generator page will not display on desktop (#19085)
* remove redundant link and import

* apply lost styles
2026-02-20 07:51:05 -07:00
bw-ghapp[bot]
b0549dbfb6
Autosync the updated translations (#19093)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-02-20 12:04:36 +01:00
Oscar Hinton
8ec9c55b18
Adjust desktop header color (#19082) 2026-02-19 21:18:48 +01:00
Oscar Hinton
caa28ac5b3
[PM-32481] Apply same custom scrollbar to nav (#19083)
* Apply same custom scrollbar to nav

* Split colors
2026-02-19 21:18:17 +01:00