Commit Graph

3368 Commits

Author SHA1 Message Date
github-actions[bot]
74d2c61dc3
Bumped client version(s) (#20940)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Addison Beck <github@addisonbeck.com>
2026-06-02 20:15:58 +00:00
Jordan Aasen
0ef50abdf6
[PM-34615] - add ability to toggle interstitial prompts (#20293)
* add flag to disable all interstitial prompts

* remove changes to search service

* fix type error

* check for auto confirm and enforce data ownership

* fix type error

* create ServerSettingsResponse
2026-06-02 11:30:59 -07:00
Brandon Treston
29d2eef4ec
[PM-36406] Edit member dialog (#20868)
* add edit member dialog, refactored to be ts-strict from member-dialog component

* clean up

* fix dialog selector pattern

* remove feature flag logic

* clean up, fix type error

* fix circular dependency, fix dialog directive

* fix remove user

* refactor nested-checkbox, add story

* update member-access-report to use new member edit component
2026-06-02 09:51:28 -04:00
Bernd Schoolmann
d4acb9e67e
[PM-37875] Split out crypto verification UI (#20856)
* Extract user crypto dialog to ui module

* Fix build

* Prettier

* Fix DI injection
2026-06-02 08:13:39 -05:00
Eli Grubb
db88f20f6e
[PM-30146] Support key rotation for TDE users (#20938) 2026-06-01 21:38:33 -06:00
Jordan Aasen
7ed5638c29
fix onboarding (#20921) 2026-06-01 17:03:42 -07:00
Jared Snider
82246bea68
PM-38423 - FIx unsavedSendEditsGuard not handling null component emission on logout while component is active. (#20967) 2026-06-01 20:03:11 -04:00
bw-ghapp[bot]
b7a1047a62
Autosync the updated translations (#20905)
Co-authored-by: bw-ghapp[bot] <178206702+bw-ghapp[bot]@users.noreply.github.com>
2026-06-01 21:51:26 +02:00
Jordan Aasen
2fb6d447d8
[PM-36534] - fixes to coachmarks (#20533)
* fixes to spotlight and coachmarks

* remove viewportMargin

* revert change to IN lang

* remove spotlightTargetSelector
2026-06-01 10:28:00 -07:00
Nick Krantz
b16d99dafc
[PM-37798] Fix bank account section label to show "Bank account details" (#20779) 2026-06-01 11:13:51 -05:00
Leslie Tilton
d07a6acf62
[PM-37079] Fix applicationName empty save and fetch in Access Intelligence (#20886)
* Fix applicationName empty save and fetch in access intelligence

* Trim fallback uri in getTrimmedCipherUris. Added test cases
2026-05-29 21:00:20 -05:00
Jackson Engstrom
75caebfb95
[PM-38113] In AC, when item filter is selected and user add new item, it does not default the creation form to selected item type (#20901)
* Adds fallback for when a cipher type isn't passed

* adds tests
2026-05-29 13:01:16 -07:00
Leslie Xiong
42b0a4dff2
[CL-963] Update breadcrumb styles (#20085) 2026-05-29 12:59:13 -04:00
Mike Amirault
dbd9c69cd4
[PM-28178] Remove Send UI refresh feature flag (#20753) 2026-05-29 10:04:45 -04:00
Brandon Treston
ef34c468e7
[PM-36067] Add stories for invite link and invite member dialog (#20731)
* add stories for invite link and invite member dialog

* enhance story functionality

* clean up

* add groups to stories

* fix circular dependency, update stories

* update story logic

* mock saving behavior for all invite link stories
2026-05-29 09:14:00 -04:00
Maciej Zieniuk
f51e144f25
[PM-30848] Key connector for user key rotation (#20805)
* key connector for user key rotation

* one signal, loading state, KC concistency checks

* use bit-spinner component, component not loading

* missing upgradeTokenAction
2026-05-29 11:13:35 +02:00
Will Martin
23c1141bcb
[CL-1129] Enable @angular-eslint/template/elements-content lint rule (#19505)
* Enable @angular-eslint/template/elements-content lint rule

Enables the elements-content rule with bitIconButton exempted via allowList,
since icon buttons use that directive in place of text content. Suppresses
false positives in WebAuthn connector pages where content is injected at
runtime, and flags a genuine empty <a> in change-plan-dialog for follow-up.

* Add FIXME lint suppressions for elements-content in copy-click spec

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
2026-05-28 15:49:37 -04:00
Stephon Brown
2abb233e60
[PM-36878] Update Existing User Trail Flow (#20610)
* feat(billing): introduce constant for default trial length

* feat(billing): pass trial initiation ID to backend

* feat(billing): display dynamic trial length in UI

* fix(billing): format

* refactor(billing): remove unused trialInitiationId

* fix(billing): update trial initiation button loading condition

* refactor(billing): remove deprecated fixed-length trial message keys

* refactor(i18n): update payment charged with trial message key

* feat(admin-console): add custom trial length to organization creation

* feat(billing): implement custom trial length in organization plans

* feat(billing): display default trial length in individual upgrade summary

* test(billing): add tests for custom trial length in organization plans

* test(billing): fix test getter call

* feat(billing): introduce showTrialOffer variable to exclude free tier

* refactor(billing): utilize showTrialOffer variable in template conditions

* fix(billing): run prettier

* refactor(billing): remove hardcoded default trial length for new organizations

* refactor: use undefined for optional trialLength properties

* refactor: update trialLength check for undefined in API request

* feat: include custom trial length in free trial determination

* fix(billing): use plan's trialPeriodDays for payment description if available

* fix(billing): correctly determine free trial display based on length

* fix(billing): run formatter
2026-05-28 12:46:57 -04:00
bw-ghapp[bot]
1c6c008403
Autosync the updated translations (#20693)
Co-authored-by: bw-ghapp[bot] <178206702+bw-ghapp[bot]@users.noreply.github.com>
2026-05-28 17:25:33 +02:00
Nick Krantz
ed8b37e025
[PM-35656] Update Copy functionality for new item types (#20708)
* update copy options for new item types

* add event collection for new item types

* bump sdk version

* formatting

* Update apps/desktop/src/vault/app/vault-v3/vault-orig.component.ts

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

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2026-05-27 21:32:15 -05:00
Thomas Rittson
007b5d9335
[PM-34157] Wire up SDK to NewPolicyService (#20377)
* Add shim in PolicyService to NewPolicyService
* Wire up NewPoilcyService to SDK
* Use SDK enum
2026-05-28 07:14:53 +10:00
Vijay Oommen
995ab6de2f
[PM-34724] Access Intelligence Carousel for first time admins (#20734) 2026-05-26 14:28:04 -05:00
Bryan Cunningham
f6ea7dd6bf
[CL-1204] bulk actions bar (#20735)
* adding bulk actions bar

* responsive bulk actions bar

* allow for custom position of menu

* remove border from compact container

* do not screenshot table story

* supress tooltip showing when a menu is open

* updated docs

* add aria-label to icon only actions

* add aria-label to additional actions button

* fix spec descriptions

* add missing translations

* more grammatically corrrect annoucement

* have consumer provide their own menu

* use data holder components to solve for menu complexities

* use actual icon

* fix trigger being added twice

* rebuild focusKeyManager in case actions change

* address strong agree feedback comments

* update spacing tovisually align dividers

* rename input to avoid collision with popover/coachmark position input

* merge positions

* fix test

* simplify compact mode logic

* more verbose keydown handling for a11y

* remove commented code left in error
2026-05-26 11:31:25 -04:00
John Harrington
f684840ab0
[PM-36563] Send access event logs (#20740)
* added enum, i18n key, and service logic

* add enums, i18n, and service logic

* initial work to support Send access logs

* adjust wording of i18n values
2026-05-26 07:09:24 -07:00
Jordan Aasen
97de2515db
[PM-35120] - Update user delete flows with org ownership (#20462)
* update delete account flows

* fix type error

* add account deletion service

* revert i18n key add to IN

* fixes to delete account dialog flow
2026-05-22 09:58:43 -07:00
Brandon Treston
59faddb1e9
[PM-34407] Allow deleting domains (#20699)
* allow deleting domains

* design updates
2026-05-22 09:44:34 -04:00
rr-bw
af790b6dec
chore: Remove claude plan md file (#20662) 2026-05-21 21:14:03 -07:00
Brandon Treston
85d86b3a9f
prefill allowed domains (#20704) 2026-05-21 11:27:49 -04:00
Jared
98d6948969
Add unit tests for VaultComponent to enhance coverage and fix organization switch behavior (#20732)
- Introduced a new spec file for VaultComponent to test its functionality.
- Implemented a fix to ensure the component refreshes correctly when switching organizations, addressing an issue where subsequent fetches were blocked after the initial load.
2026-05-21 11:26:22 -04:00
Will Martin
d7d74825f8
[CL-1046] Add no-bit-dialog-wrapper lint rule (#20698)
* [CL-1046] Add no-bit-dialog-wrapper lint rule

Errors when <bit-dialog> or <bit-simple-dialog> appears inside any
parent HTML element. The dialog selector should be applied as an
attribute on the root element (e.g. <form bit-dialog>) so that the
form receives the dialog's height styling.

* Migrate admin console dialogs to new form pattern

Updates organization member, group, collection, provider, and domain verification dialogs to use <form bit-dialog> pattern following the component library updates.

* Migrate auth settings dialogs to new form pattern

Updates two-factor authentication, WebAuthn, and emergency access dialogs to use <form bit-dialog> pattern following the component library updates.

* Migrate Secrets Manager dialogs to new form pattern

Updates project, service account, access token, and secret dialogs to use <form bit-dialog> pattern following the component library updates.

* Migrate remaining dialogs to new form pattern

Applies the <form bit-dialog> / <form bit-simple-dialog> attribute selector
pattern to the rest of the codebase, satisfying the no-bit-dialog-wrapper
lint rule. 55 templates across auth, admin console, billing, vault,
key management, secrets manager, provider, dirt integrations, importer,
browser, and desktop apps.

* Migrate key rotation dialog to new form pattern
2026-05-20 09:47:14 -04:00
Jackson Engstrom
f08a733997
[PM-31312] Remove Flagged logic from clients pm-29437-welcome-dialog feature flag (#20618) 2026-05-19 16:11:40 -07:00
Nick Krantz
77218dae08
[CL] disable the CDK from using the native popover API globally (#20730) 2026-05-19 15:59:51 -04:00
Vijay Oommen
cdbe896d63
[PM-35058]welcome modal post scan state (#20672) 2026-05-19 11:28:27 -05:00
Vijay Oommen
2087bee993
[PM-35134] Change assign tasks to send notifications (#20640) 2026-05-18 20:09:20 -05:00
github-actions[bot]
87aa085375
Bumped client version(s) (#20690)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Addison Beck <github@addisonbeck.com>
2026-05-18 17:06:15 +00:00
Thomas Avery
0b4e7d9ce9
[PM-30213] Add key rotation UI (#20407)
* Add key rotation UI

* Code review updates

* Design feedback changes
2026-05-18 11:40:50 -05:00
Will Martin
69c937e592
[CL-954] Upgrade to Angular 21 (#19725)
* prune desktop packages

* Fix @napi-rs/cli version mismatch in desktop napi workspace

Aligns package.json declaration with the locked version (3.2.0) to
resolve npm workspace inconsistency that was blocking ng update.

* update Storybook to v10

* update Angular to v21

* override jest in ng builder

* Add jest-environment-jsdom as explicit dependency

Previously installed as a side effect of a jest@29 override; removing
that override caused it to disappear from node_modules.

* Add .claude/worktrees/ to .gitignore

* Restore @napi-rs/cli to 3.5.1 to match main

* Pin jest-environment-jsdom to 29.7.0 and add to renovate config

* Override jest-environment-jsdom to 29.7.0 in build-angular context

* Add isolatedModules to libs/subscription tsconfig.spec.json to fix Angular 21 module resolution

* Change moduleResolution to bundler for Angular 21 subpath export compatibility

* Add isolatedModules to Angular libs with old spec tsconfig pattern

* Disable emitDecoratorMetadata in spec tsconfigs with isolatedModules

* Fix HostListener event parameter types for Angular 21 compiler strictness

* Revert accidental change to access-selector spec

* Remove accidentally generated desktop package-lock.json

* Fix type-only imports/exports caught by Rolldown in Storybook v10/Vite v8

* fix vault-wrapper type error from Angular 21 stricter generic inference

ngComponentOutlet accepts Type<unknown>; annotate computed() explicitly
since VaultComponent is generic and VaultOrigComponent is not, preventing
TypeScript from inferring a compatible union constructor type.

* Fix kitchen-sink interaction tests for Storybook v10

Replace fire-and-forget navigateTo + synchronous getByRole with
navigateAndWaitFor<T>, which sets the hash and retries the ready
callback via waitFor. Storybook v10 starts play functions before
Angular's initial router navigation completes, so synchronous DOM
queries after navigation were failing intermittently.

* Provide ZoneJS change detection scheduler for Storybook stories

Angular 21 no longer sets up the ZoneJS change detection scheduler by
default in bootstrapApplication. Storybook's Angular renderer uses
bootstrapApplication internally and does not add provideZoneChangeDetection
automatically, so Default CD components relying on zone.js to trigger
re-renders after async operations were not updating before Chromatic
snapshots.

* Wait for dialog/side nav to render before Chromatic snapshot

After userEvent.click the dialog and side nav open asynchronously.
Without an explicit waitFor, Chromatic captures the snapshot before the
resulting UI state is present.

* Fix kitchen-sink waitFor: re-query side nav button, use querySelector for dialog

- openSideNav: re-query the toggle button inside waitFor to avoid reading
  a stale DOM reference after Angular re-renders the element post-click
- SimpleDialogOpen / VirtualScrollBlockingDialog: replace getByRole("dialog")
  with querySelector("cdk-dialog-container") to avoid testing-library's
  visibility check failing on a momentarily inaccessible overlay element

* Revert kitchen-sink stories to main

* Bump Angular, Storybook, and ng-select to latest patch versions

* Trigger pre-commit hooks on merge

* Regenerate package-lock.json with --force to fix npm ci sync
2026-05-18 10:55:47 -05:00
Brandon Treston
2c3cb3ff52
add test ids for automation (#20674) 2026-05-18 10:27:35 -04:00
Brandon Treston
783dab6123
[PM-36363] Refactors org user view models and consumers to be ts-strict compliant (#20559)
* refactors org user view models and consumers to be ts-strict compliant

* DRY up invite logic

* clean up

* run prettier

* fix circular dep

* fix circular dependency (real)

* update test

* more clean up

* more type saftey fixes

* more types

* even more types

* add jsdoc

* fix test
2026-05-18 09:45:58 -04:00
Stephon Brown
d02edc6625
[PM-29067] Remove Feature Flag Code for PM-24032 (#20415)
* refactor(feature-flags): remove PM24032_NewNavigationPremiumUpgradeButton feature flag

* refactor(account-switcher): migrate to Angular Signals and OnPush change detection

* Revert "refactor(account-switcher): migrate to Angular Signals and OnPush change detection"

This reverts commit 0a48683be0.

* refactor(product-switcher): remove ConfigService from ProductSwitcherService

* test(product-switcher): update ProductSwitcherService tests after ConfigService removal
2026-05-18 13:44:16 +00:00
Stephon Brown
672a54f50e
[PM-35357] Update Trial Length Parameter (#20544)
* feat(billing): introduce constant for default trial length

* feat(billing): pass trial initiation ID to backend

* feat(billing): display dynamic trial length in UI

* fix(billing): format

* refactor(billing): remove unused trialInitiationId

* fix(billing): update trial initiation button loading condition

* refactor(billing): remove deprecated fixed-length trial message keys
2026-05-18 09:32:21 -04:00
Leslie Xiong
1053964b03
[CL-999] Update tabs (#20010)
* WIP updated tab styles and added responsive behavior

* fixes after converting class properties to readonly signals

* - updated host binding to component definition
- converted static class properties to `readonly`

* fixed overflow more button tabindex

* - named `tw-group` in `tab-list-item.directive`
- exported `tabListContainerGap` px value

* migrated `@Input` to `model`

* added tab ordering behavior when selecting from overflow menu

* - updated tabs mdx and stories
- updated tab header margin
- fixed selected tab bottom border not displaying
- fixed keyboard nav between tabs

* fixed type error

* - added 'preserveContentTabs' and 'keyboardNavigation' stories to mdx
- updated 'preserveContent' jsdoc to fix formatting in story

* renamed to `TAB_LIST_CONTAINER_GAP`

* - removed `tw-border-0`
- added "more" translation

* added "more" translation to desktop and browser

* added new line

* updated navigation tabs to include 'bitLabelDirective', trailing icons, overflow responsive behavior

* - removed horizontal spacing from tab group and tab body content
- updated tabs in dialog story and 'header' component to horizontally align tabs correctly

* added "more" translation to kitchen-sink stories

* fixed 'EmptyTab' story for overflow tab behavior

* fix chromatic build error

* updated to `contentChild()`

* fixing keyboard navigation

* add specs for tabs components

* remove debugging text

* remove unused input

* use signal and update styles

* fix keyboard navigation and misalignment

* fix berry rendering bug

* remove tab role from more button

* remove getters and use inject

* remove disablePadding left in error

* remove obsolete input

* fix broken aria attr

* update trailingIcon to endIcon

* remove label directive and use start icon

* apply gap to host style property

* fix broken exports and imports

* remove active getter

* use anchors for overflow menu

* render start icon in tab link component

* remove unneeded aria attr

* display start icon in list and use correct menu item slots

* fix overflow label not rendering

* minor grammar update

* remove unused imports

* [CL-667] refactor(components): extract reusable overflow-list directive (#20651)

* refactor(components): extract reusable overflow-list directive

* refactor(overflow-list): collapse measurement effect into afterNextRender

The closure-flag effect was working around a timing claim that doesn't hold:
content queries are populated by ngAfterContentInit, well before afterNextRender
runs. A single afterNextRender callback covers measurement, RO attachment, and
cleanup — no mutable flag, no zombie effect re-firing on every items() change.

* fix(overflow-list): drop host overflow:hidden clipping focus rings

The host's overflow:hidden was clipping tab focus rings (and any other
legitimate visual overflow). Items get [hidden] applied synchronously
when they overflow, so the clipping safety net wasn't earning its cost.

* fix(tab-nav-bar): apply roving tabindex to align with tab-group

tab-nav-bar already installs a FocusKeyManager for arrow-key navigation,
but every tab-link was also a natural tab stop — so users tabbing through
the page hit each link individually instead of one stop for the nav.

Push tabindex state down from the parent in updateActiveLink: the active
(or first non-disabled) link gets 0, the rest get -1. Seeded once from
ngAfterViewInit so the initial route lands with correct tab order.

* update tab group

---------

Co-authored-by: Bryan Cunningham <bryan.cunningham@me.com>
Co-authored-by: Will Martin <contact@willmartian.com>
2026-05-18 08:50:08 -04:00
SmithThe4th
c07c4707d0
[PM-29654] Hide copy button when custom field has no value (#20459)
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
* Hide copy buttone when there is no value

* Added no value entered to the screenreader
2026-05-15 16:26:21 -05:00
Mike Amirault
84a4bdb927
[PM-32743] Convert collections to folders when importing into My Items (#20453)
* [PM-32743] Convert collections to folders when importing into My Items

* Fix multi collection detection bug

* Add tests
2026-05-15 14:03:18 -07:00
Jackson Engstrom
d306f1d0f4
[PM-31317] Removes feature flag pm-29438-welcome-dialog-with-extension-prompt and flagged logic (#20619) 2026-05-15 09:40:38 -07:00
John Harrington
cf8f4f7ded
Send edit changes to respect lock or logout signal (#20669) 2026-05-15 09:24:38 -07:00
Nick Krantz
a642ed0abf
[PM-32738] Passport Web (#20514)
* add passport translations

* add passport to web app

* add date-field-group to combine logic for reuse across cipher types

* implement date field for passport

* Add missing passport model files and integrate into cipher models

* update section heading

* Remove numeric values from month selector

* add copy action for national identification number

* fix tests

* omit linked types

* add placeholder for AC

* fix test

* emit failures to validation from child form

* remove old tests

* update date field component to match drivers license implementation

* fix removed translations that were duplicates between drivers license PR and passport

* add events for passport number viewed

* fix update to bank account to quiet down the diff

* collect number visible event

* add passport getter

* add fixedWith for icon
2026-05-15 11:17:26 -05:00
John Harrington
9445d9a651
[PM-36560] Create Send event logs (#20567)
* initial send creation logging

* adjust capitalization
2026-05-15 07:28:41 -07:00
Vincent Salucci
63676eeadf
[PM-36972] [PM-37468] Update revocation reason tooltips (#20649)
* feat: update default/user declined revocation reason, refs PM-37468

* chore: remove unused message, refs PM-37648
2026-05-15 09:27:36 -05:00
bw-ghapp[bot]
225bb1be3c
Autosync the updated translations (#20661)
Co-authored-by: bw-ghapp[bot] <178206702+bw-ghapp[bot]@users.noreply.github.com>
2026-05-15 10:18:09 +00:00