Commit Graph

6750 Commits

Author SHA1 Message Date
Jordan Aasen
51a306f5cd
automatically autofill in search results (#19951) 2026-04-08 08:43:50 -07:00
Kyle Spearrin
92b04c24fe
new event log for 2fa recovery (#20055) 2026-04-08 11:31:45 -04:00
Jared
405c30008a
[PM-31778] Multi-step policy edit dialog (#19406)
* implement multi-step policy ui framework

* policy wip

* Refactor organization data ownership policy component to use multi-step dialog and signals. Remove deprecated dialog component and update related tests. Add organizationId input to base policy edit component and implement save logic in the new dialog structure.

* Update multi-step policy edit dialog to handle loading state and improve template initialization. Adjust button disable logic to account for loading status and modify ViewChild static property for proper change detection.

* Refactor policy confirmation logic in base policy edit component. Remove deprecated confirm method and update policy edit dialog to handle confirmation checks dynamically. Adjust organization data ownership policy component to align with new confirmation structure.

* Update apps/web/src/app/admin-console/organizations/policies/policy-edit-definitions/auto-confirm-policy.component.html

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Refactor multi-step policy dialog component and remove legacy confirm method

- Deleted the multi-step policy plan documentation.
- Introduced a new `MultiStepPolicyEditDialogComponent` to handle multi-step workflows.
- Updated `BasePolicyEditComponent` to support multi-step configurations and removed the deprecated `confirm()` method.
- Enhanced `PolicyStep` type to include optional `disableSave` and `bodyContent` properties.
- Adjusted HTML templates to utilize signals for dynamic content rendering.
- Refactored existing policy components to integrate with the new multi-step dialog structure.

* Refactor AutoConfirmPolicy component constructor to use readonly modifier for firstTimeDialog parameter

* Update multi-step policy edit dialog template to ensure proper rendering of policy form before lifecycle hooks. Added comment for clarity on rendering behavior.

* Update apps/web/src/app/admin-console/organizations/policies/policy-edit-definitions/auto-confirm-policy.component.html

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Add confirmation step before policy submission in dialog component

- Introduced an optional `confirm` method in `BasePolicyEditComponent` to allow components to implement a confirmation step before saving.
- Updated `PolicyEditDialogComponent` to call the `confirm` method and handle user confirmation.
- Added new test files for `AutoConfirmPolicyEditComponent` and `MultiStepPolicyEditDialogComponent` to ensure proper functionality and behavior of the new confirmation logic.

* Update apps/web/src/app/admin-console/organizations/policies/policy-edit-definitions/vnext-organization-data-ownership.component.ts

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Refactor policy edit components to streamline side effects and improve save logic

- Moved side effect logic from inline definitions to dedicated methods in AutoConfirmPolicyEditComponent.
- Updated vNextOrganizationDataOwnershipPolicyComponent to remove unused template references.
- Adjusted PolicyStep type to allow for side effects returning void.
- Enhanced save button logic in MultiStepPolicyEditDialogComponent to utilize a computed signal for save state management.

* Enhance MultiStepPolicyEditDialogComponent tests and update references

- Refactored tests in multi-step policy edit dialog to improve saveDisabled logic and ensure accurate state management.
- Updated references from AutoConfirmPolicyDialogComponent to MultiStepPolicyEditDialogComponent in web-vault-prompt service tests for consistency.

* Refactor auto-confirm policy component template and update imports

- Improved readability of the auto-confirm policy component template by formatting the button element.
- Cleaned up import statements in the auto-confirm policy component test file for consistency.

* Update WebVaultPromptService tests to validate firstTimeDialog property

- Added assertion to ensure the firstTimeDialog property is correctly passed in the policy data during dialog closure in WebVaultPromptService tests.

* Refactor policy edit components to support migration to new policy steps

- Added TODO comments in BasePolicyEditComponent and PolicyEditDialogComponent to indicate the removal of the confirm method when the `MigrateMyVaultToMyItems` feature flag is deprecated.
- Updated vNextOrganizationDataOwnershipPolicyComponent to ensure proper handling of organizationId.
- Enhanced MultiStepPolicyEditDialogComponent template for improved subtitle handling and readability.

* Refactor policy edit components to utilize Angular's input function

- Replaced traditional @Input() properties with the new input() function in BasePolicyEditComponent for better reactivity.
- Updated policy edit dialog component to set inputs using the new method for improved clarity and consistency.
- Adjusted various policy components to ensure compatibility with the new input handling, enhancing overall code maintainability.

* fix(policy-edit): update policy access method to use function call syntax

Changed the way policy properties are accessed in the auto-confirm policy component template, ensuring compatibility with the updated policy structure.

* refactor(session-timeout): update policyResponse handling in component and tests

Modified the SessionTimeoutPolicyComponent to use function call syntax for accessing policyResponse. Updated corresponding unit tests to reflect this change, ensuring consistent handling of policy data across the component and its tests.

* refactor(policy-edit-dialog): simplify test structure and improve saveDisabled logic

Updated the unit tests for MultiStepPolicyEditDialogComponent to eliminate the use of fakeAsync and detectChanges, replacing them with direct state manipulation and TestBed.flushEffects(). This change enhances test clarity and reliability. Additionally, refactored the account age calculation in WebVaultExtensionPromptService to use UTC midnight for accurate day counting, addressing potential off-by-one errors.

* Fix change to prompt service which was unneeded

* refactor(policy-edit): enhance savePolicy method and inject dependencies

Updated the BasePolicyEditComponent to inject AccountService, KeyService, and PolicyApiServiceAbstraction. Refactored the savePolicy method to streamline the policy saving process, ensuring proper handling of organization keys and error management. Adjusted AutoConfirmPolicyEditComponent and vNextOrganizationDataOwnershipPolicyComponent to utilize the new savePolicy implementation.

* refactor(policy-edit): remove unused AccountService dependency

Removed the AccountService dependency from MasterPasswordPolicyComponent and ResetPasswordPolicyComponent as it was not utilized. Added a getter for autoConfirmPolicy in AutoConfirmPolicyEditComponent to enhance code clarity.

* refactor(policy-edit): update sideEffect callbacks in AutoConfirmPolicyEditComponent

Modified the sideEffect properties in the AutoConfirmPolicyEditComponent to use arrow functions, ensuring proper context binding for the savePolicy and navigateToExtensionPromptStep methods.

* refactor(policy-edit): update sideEffect to use arrow function in vNextOrganizationDataOwnershipPolicyComponent

Changed the sideEffect property in the vNextOrganizationDataOwnershipPolicyComponent to use an arrow function for the savePolicy method, ensuring proper context binding.

* Fixes tests for PR

* refactor(vault): improve account age calculation to use UTC boundaries

Updated the account age calculation in WebVaultExtensionPromptService to utilize UTC midnight boundaries, preventing issues with Daylight Saving Time skewing the day count.

* Refactor PolicyEditDialogComponent to improve signal usage for save button state management

- Changed saveDisabled property to use a private signal for better encapsulation.
- Updated template bindings to call loading() and saveDisabled() as functions for correct state handling.
- Enhanced observables management for save button disable logic to ensure proper state updates.

* Fix optional chaining in policy confirmation and add policy steps to vNext organization data ownership component

* Update tests for vNext organization data ownership component to use fixture inputs and add missing service mocks

---------

Co-authored-by: Brandon <btreston@bitwarden.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2026-04-08 11:17:14 -04:00
Jared McCannon
78626a608d
[PM-34255] - SCIM Key Fix (#20036)
* Prompt for MP when requesting SCIM key and pass to endpoint.

* Adding dialog and message

* Added some tests for the changes
2026-04-08 09:59:25 -05:00
Vicki League
e8e2e81a7b
[CL-1130] Fix storybook a11y and console errors for platform files (#19918) 2026-04-08 09:34:54 -04:00
Kyle Spearrin
be9099defb
[PM-15489] 2fa account recovery (#19894)
* claude plan

* PR feedback

* implement 2fa reset to account recovery policy

* tests

* fix locales

* PR feedback

* PR fixes

* PR feedback

* fix CI build errors
2026-04-08 09:10:31 -04:00
Bernd Schoolmann
f3aff99db5
[PM-33554] Don't log out when trust denied for sdk key rotation (#19961)
* Don't log out when trust denied

* Cleanup
2026-04-08 00:07:13 +09:00
Andreas Coroiu
26cb88bd8c
Bitwarden IPC improvements/refactor (#19935)
* fix: types after SDK change

* feat: update SDK
2026-04-07 17:05:37 +02:00
Vijay Oommen
e0a9496bd6
[PM-34230] Blumira Integration using HEC (#20008) 2026-04-07 09:29:54 -05:00
Stephon Brown
9180d75244
[PM-34685][Defect] Subscription status for organizations not updating with feature flag enabled (#20018) 2026-04-07 07:57:24 -04:00
Jordan Aasen
898f21abe2
Revert "add missing i18n key" (#19975)
This reverts commit caf65d7391.
2026-04-06 12:46:58 -05:00
Ben Brooks
5f43b501ca
[PM-33580] fix: skip change-password notification when no ciphers exist for URL (#19761)
* [PM-33580] fix: skip change-password notification when no ciphers exist for URL
* [PM-33580] consolidate password-only notification branches into single block

---------

Signed-off-by: Ben Brooks <bbrooks@bitwarden.com>
2026-04-06 09:42:07 -07:00
bitwarden-devops-bot
4a13f45409
Bumped client version(s) 2026-04-06 15:59:38 +00:00
Daniel García
767a979314
[PM-32783] Cached electron storage (#19590)
* [PM-32783] Cached electron storage

* Fix strict types

* Fix has bug

* Revert accidental change

* Revert import

* Fix review comments

* Add flag
2026-04-06 16:32:37 +02:00
Nick Krantz
3fea195737
[PM-22890] Automatically open Extension in FireFox (#19456)
* check for open popup with polling to allow for more deviation in browser behavior

* firefox bug has been resolved, remove check for firefox

* add check for `getContexts` returning `undefined` rather than a promise in MV2 scenarios

* remove old tests

* fix merge conflict mistake
2026-04-06 09:26:32 -05:00
Mike Amirault
c755016915
[PM-33993] Fix CLI bug that allowed File Send downloads to save at arbitrary paths (#19890) 2026-04-06 09:57:19 -04:00
bw-ghapp[bot]
4497b65926
Autosync the updated translations (#19960)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-04-06 14:12:23 +02:00
bw-ghapp[bot]
70316103b3
Autosync the updated translations (#19959)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-04-06 13:57:35 +02:00
Bernd Schoolmann
2c7ce3c8db
Revert "Default autostart to true for desktop apps (#19906)" (#20003)
This reverts commit ea732b6866.
2026-04-06 19:04:50 +09:00
Bernd Schoolmann
ea732b6866
Default autostart to true for desktop apps (#19906) 2026-04-06 17:32:58 +09:00
Brad
e0c45fdd62
[PM-34556, PM-34558, PM-34557] Access Intelligence trend chart design tweaks (#19977)
Some checks failed
Scan / Check PR run (push) Has been cancelled
Testing / Run typechecking (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-browser junit:junit-browser.xml name:Browser paths:apps/browser bitwarden_license/bit-browser]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-cli junit:junit-cli.xml name:CLI paths:apps/cli bitwarden_license/bit-cli]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-desktop junit:junit-desktop.xml name:Desktop paths:apps/desktop]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-libs junit:junit-libs.xml name:Libs paths:libs bitwarden_license/bit-common]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-web junit:junit-web.xml name:Web paths:apps/web bitwarden_license/bit-web]) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (macos-14) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (ubuntu-22.04) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (windows-2022) (push) Has been cancelled
Testing / Rust Coverage (push) Has been cancelled
Scan / Checkmarx (push) Has been cancelled
Scan / Sonar (push) Has been cancelled
Testing / Upload to Codecov (push) Has been cancelled
Testing / Run tests (push) Has been cancelled
- Updates the line labels for the "applications" view in the trend chart. Now matches Figma design

- Right aligns the chart's period selector dropdown items. Now matches Figma design

- Chart wraps period selector and shrinks view selector button at small screen sizes, fixes overflow issue.
2026-04-03 16:54:21 -05:00
Todd Martin
5cd2c19f55
chore(tech-debt): [PM-33963] Remove legacy Duo Web SDK v2 from desktop
* Remove legacy Duo Web SDK v2

* Removed #duo-frame references.
2026-04-03 17:04:06 -04:00
Bryan Cunningham
5d530adc2a
remove base directive import (#19978)
* remove base directive import

* remove unused icon button import
2026-04-03 16:36:37 -04:00
Jordan Aasen
2aff7f7640
[PM-33426 ] - add popup focus wrap directive (#19666)
* add popup focus wrap directive

* fix comment
2026-04-03 12:39:13 -07:00
rr-bw
4a196a533b
fix(sso-callback-server-host) [Auth/PM-32604] Specify argument in listen method (#19766)
Specifies localhost in the `callbackServer.listen()` method in `LoginCommand` (CLI) and `SSOLocalhostCallbackService` (Desktop)
2026-04-03 10:56:08 -07:00
Leslie Tilton
4c3cf00a5a
[PM-33928] Fix: Can view MyItems Passwords in Org Vault Health Reports (#19874)
* fix(bug): Admin/Owner viewing and editing ciphers from within health reports

* Change check for unassigned ciphers to include default collection check

* Remove unnecessary typecasting
2026-04-03 12:45:48 -05:00
Vicki League
3751227752
[CL-958] Update avatar component to new styles (#18975) 2026-04-03 10:24:46 -04:00
bw-ghapp[bot]
d9e4271a78
Autosync the updated translations (#19958)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-04-03 12:03:59 +02:00
Bernd Schoolmann
97329383a1
[PM-33173] Use unlock service for password login strategy (#19371)
Some checks failed
Scan / Check PR run (push) Has been cancelled
Testing / Run typechecking (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-browser junit:junit-browser.xml name:Browser paths:apps/browser bitwarden_license/bit-browser]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-cli junit:junit-cli.xml name:CLI paths:apps/cli bitwarden_license/bit-cli]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-desktop junit:junit-desktop.xml name:Desktop paths:apps/desktop]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-libs junit:junit-libs.xml name:Libs paths:libs bitwarden_license/bit-common]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-web junit:junit-web.xml name:Web paths:apps/web bitwarden_license/bit-web]) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (macos-14) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (ubuntu-22.04) (push) Has been cancelled
Testing / Run Rust tests on ${{ matrix.os }} (windows-2022) (push) Has been cancelled
Testing / Rust Coverage (push) Has been cancelled
Scan / Checkmarx (push) Has been cancelled
Scan / Sonar (push) Has been cancelled
Testing / Upload to Codecov (push) Has been cancelled
Testing / Run tests (push) Has been cancelled
* Use unlock service for login

* Fix build

* Apply feedback to move more logic behind feature flag, and use newer unlock service

* Fix types

* Fix type

* Fix test

* Fix dependencies on cli

* Cleanup

* Fix types

* Fix imports

* Fix eslint

* Prettier

* Address feedback

* Eslint

* Move unlockServiceForPasswordLogin to passwordloginstrategydata

* Eslint
2026-04-03 12:42:17 +09:00
Todd Martin
8a260537e4
fix(secure-storage): [PM-33582] Remove obsolete secure storage code
* Remove obsolete JSON value parsing.

* Remove obsolete method.
2026-04-02 19:41:28 -04:00
blackwood
6380248ce9
Share inline menu qualification service implementation of keyword matching with autofill service (#19263) 2026-04-02 14:56:59 -04:00
Leslie Xiong
5010c47864
fixed avatar color syncing between client apps (#19943) 2026-04-02 14:24:30 -04:00
Github Actions
dd2c8765d6 Bumped Desktop client to 2026.4.0 2026-04-02 16:05:27 +00:00
Daniel Riera
1f3b479d47
[PM-22406]Setting Bitwarden to default browser fails after accepting permission prompt (#19813)
* preserve make default toggle when permission modal closes popup

* wire runtime
2026-04-02 09:48:30 -05:00
bmbitwarden
d91328cf89
PM-33577 added email validation (#19707) 2026-04-01 21:21:14 -04:00
bmbitwarden
73c79c4178
PM-30340 implemented upgrade button on desktop navbar (#19708) 2026-04-01 21:19:01 -04:00
Vicki League
f8cd437503
[CL-1105] Ensure hover and focus states match spec (#19638) 2026-04-01 14:39:55 -04:00
Conner Turnbull
a5db8ef2d8
Remove pm-23341-milestone-2 flagged logic from user-subscription component (#19867)
Remove the enableDiscountDisplay$ feature flag observable and collapse the
ngIf/else template to always show the discount badge. The badge handles
null/no-discount gracefully.
2026-04-01 12:58:56 -05:00
BitToby
e96a0c5309
[PM-32584] fix: warn user about unsaved changes before applying desktop update (#19147)
* fix: warn user about unsaved changes before applying desktop update

* fix: update dialog

* fix: update restart to properly clean up IPC listeners on timeout and warn about unsaved Send forms

* revert: Revert AddEditComponent changes

* fix: solve type error

* fix: warn user about unsaved chagnes

* fix: use FormGroupDirective in DirtyFormService to detect dirty forms after form reassignment

---------

Co-authored-by: bittoby <bittoby@users.noreply.github.com>
2026-04-01 15:33:26 +02:00
Bernd Schoolmann
7a624abcbd
[no ticket] Improve matching of dev extension (#19880)
* Improve matching of dev extension

* Eslint

* Prettier
2026-04-01 07:15:39 +09:00
Alex
b85e096b49
[PM-33067] Fix false success toast when mark/unmark critical apps API fails (#19344)
* fix(dirt): check response.error before showing success toast for critical apps

The orchestrator's catchError converts API failures into next emissions
with response.error set. The component's next handler was unconditionally
showing a success toast without checking this field.

Now checks response.error and shows an error toast when the API call
failed. Selection is preserved on error so users can retry.

Also ensures updatingCriticalApps signal is reset on all paths (success,
caught error, and uncaught error).

[PM-33067]

* test(dirt): add tests for mark/unmark critical apps error handling

Tests verify that:
- Success toast shown when response.error is null
- Error toast shown when response.error is non-null
- Selection preserved on error, cleared on success

[PM-33067]

* fix(dirt): use specific error toast for unmark critical apps failure

Replace generic "An unexpected error has occurred" with
"Failed to unmark applications as critical" for consistency
with the mark-as-critical error toast.

* fix(dirt): check response.error in Review New Applications mark critical

The AllApplicationsComponent (Review New Applications widget) had the
same false success toast bug as the All Applications tab. The next
handler ignored the response parameter entirely, showing a success
toast even when response.error was set by the orchestrator's catchError.

Now checks response.error before showing toast. On error: shows
"Failed to mark applications as critical" and preserves selection.
Also resets markingAsCritical on all paths.

Adds unit tests for mark success and error paths.

[PM-33067]

* Revert "fix(dirt): check response.error in Review New Applications mark critical"

This reverts commit b646598613.

* fix(dirt): check response.error in application review dialog before showing success toast

The saveApplicationReviewStatus$ orchestrator method uses catchError
to convert API failures into next emissions with response.error set.
The dialog used firstValueFrom inside try/catch, but since catchError
prevents the Observable from erroring, firstValueFrom resolves
successfully and the catch block never fires.

Now checks response.error on the resolved value before showing the
success toast. On error: shows "Error saving review status" and
stays on the dialog so the user can retry.

[PM-33067]
2026-03-31 14:53:36 -07:00
neuronull
4d7ed035e6
Bump Rust version to 1.94.1 (#19888) 2026-03-31 15:01:08 -06:00
John Harrington
3f39b88b4c
[PM-31885] Consolidate all Send policies to a single policy (#19314) 2026-03-31 13:57:01 -07:00
Jordan Aasen
6ee1f7eba5
[PM-32085] - popup width migration (#19408)
* add popup width migration

* fix width names

* add type guard for popupWidthOption
2026-03-31 12:45:09 -07:00
Daniel James Smith
e014042087
[PM-33167] Replace img with TwoFactorIcon component (#19865)
* Replace usage of two factor images with TwoFactorIcon component

* Delete web scss and now unused two-factor images

* Remove mfaType from eslint whitelist

* Delete unused mfaType scss entries on browser and desktop

* Fix linting issue

* Remove icons from two factor setup dialogs

* Delete unused images on browser and desktop

* Remove mfaLogoSuffix

* Remove paragraph

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-31 20:22:55 +02:00
Jackson Engstrom
6980030a36
adds check for login cipher type in the more options autofill (#19712) 2026-03-30 15:06:05 -07:00
Jared Snider
011c750b9b
Auth/PM-33261 - Desktop - Change password dialog location fix (#19875)
* PM-33261 - Desktop Change Password Dialog - put into correct auth owned folder

* PM-33261 - Fix import
2026-03-30 17:41:33 -04:00
rr-bw
6a858b64f8
fix(multi-client-change-password): [Auth/PM-34199] [Extension] Change Password Routing Fix (#19794)
Makes a distinct `"settings-change-password"` route on Extension - to be used when the user initiates changing their password by navigating to Settings > Account Recovery. This route uses the `ChangePasswordPageComponent` (unlike the "change-password" route, which uses the `ExtensionAnonLayoutWrapperComponent`).

Feature flag: `pm-32413-multi-client-password-management`
2026-03-30 11:00:18 -07:00
Brandon Treston
303f242034
[PM-32096] Collection name style fix (#19809)
* fix style

* add cursor
2026-03-30 13:10:21 -04:00
Leslie Xiong
9b859bbdaf
[CL-1136] Updated disabled org trailing icon color (#19755)
* updated disabled org trailing icon color

* added `aria-label` and `appA11yTitle` back in to icon

* updated `attr.aria-label` to `ariaLabel`
2026-03-30 12:45:57 -04:00