* Implement error handling for suspended organizations in CipherForm component
- Added a new error message for when an item cannot be saved due to the associated organization being suspended.
- Updated the CipherForm component to check the status of the target organization before saving, displaying an error toast if the organization is suspended.
- Updated localization files for browser, desktop, and web to include the new error message.
* Refactor cipher creation logic to handle suspended organizations
- Removed the error message for saving items when the organization is suspended from localization files.
- Updated various components to check if a cipher can be created based on the organization's status, ensuring that new items cannot be saved to suspended organizations.
- Enhanced the user interface to conditionally display options for creating ciphers based on the organization's enabled state.
- Improved overall error handling and user experience when interacting with organizations in the vault.
* Enhance cipher creation logic to account for organization status
- Introduced checks across various components to determine if a cipher can be created based on the organization's enabled state.
- Added tests to verify behavior when organizations are suspended, ensuring that no cipher options are displayed or actions are allowed in such cases.
- Updated the NewItemDropdown and AddItemGrid components to conditionally render options based on the canCreateCipher input.
- Improved overall error handling and user experience when interacting with vault items related to organizational status.
* Implement organization status checks in vault components
- Added logic to disable creation buttons across various components when the organization is suspended, enhancing user experience by preventing actions that cannot be completed.
- Integrated tooltip messages to inform users why certain actions are disabled, improving clarity.
- Updated imports to include TooltipDirective where necessary to support new tooltip functionality.
- Ensured consistent handling of organization status across the vault interface, aligning with recent changes to cipher creation logic.
* Implement Automatic App Login Policy v2 and associated components
- Added a new description for the v2 version of the Automatic App Login policy in the localization file.
- Introduced `AutomaticAppLoginPolicyV2Component` with updated UI elements, including a switch for enabling the policy.
- Created story files for both the original and v2 components to facilitate visual testing.
- Updated the main policy component to reference the new v2 variant and its description.
- Added unit tests for the new policy component to ensure functionality and integration with existing services.
* Refactor automatic app login component layout by simplifying the HTML structure and removing unnecessary grid elements. Update related tests to reflect the changes in the component structure.
* Migrate from @angular/platform-browser-dynamic to @angular/platform-browser
@angular/platform-browser-dynamic has been marked as deprecated
* Remove @angular/platform-browser-dynamic as a direct dependency, but keep it as a peerDependency
* Remove @angular/platform-browser-dynamic from renovate updates, as it will get updated/removed by it's peer dependencies
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Add @bitwarden/storybook lib with feature-flags addon
Introduce a dedicated @bitwarden/storybook library housing Storybook
addons and utilities.
feature-flags addon:
- Manager-side "Feature Flags" panel listing every boolean flag from the
FeatureFlag enum; toggles write to a Storybook global.
- Preview-side mock ConfigService whose getFeatureFlag$ values are driven
by that global (reactive, so toggles update stories live).
- Flag catalog seeded into globals so the manager bundle never imports
@bitwarden/* (esbuild can't resolve those aliases).
- featureFlagModes() helper for opt-in Chromatic on/off snapshot modes.
- Documentation/Feature Flags MDX page describing panel + modes usage.
Also:
- Move .storybook/format-args-for-code-snippet into the lib and repoint
the 19 component stories to import from @bitwarden/storybook.
- Enable jsx ("react") in tsconfig.base.json for the manager panel (.tsx);
the Storybook manager builder emits the classic runtime.
- .storybook wiring: preview registers the decorator + seeds globals,
manager loads the panel by relative path.
package-lock.json also picks up npm's normalization of a few pre-existing
entries on main (readdirp dedupe, encoding removal) alongside the new
workspace registration.
* Add enabledFlags helper for per-story flag state
- enabledFlags(...flags) builds a story-level `globals` override so one
story can render with a flag on and another with it off.
- featureFlagModes now reuses enabledFlags for a single source of truth.
- Document the per-story pattern in the Feature Flags MDX.
* Fix CI failures for the feature-flags addon
- Decorator: skip providing the mock ConfigService when a story already
provides one at the application root (applicationConfig). Fixes the
danger-zone story crash "Cannot mix multi providers and regular
providers" — it registers ConfigService as `multi: true`.
- Lib jest: set isolatedModules in tsconfig.spec.json so ts-jest
transpiles without type-checking; its node10 resolution can't read
@storybook/angular's exports-based types (typecheck is covered by tsc).
- Reformat 5 component stories that were left prettier-dirty after the
import repoint (pre-commit runs prettier before eslint's import sort).
* Remove comments from tsconfig.spec.json and manager.js
Adds a passkey report that shows users which of their logins could be upgraded with passkey authentication but haven't been yet. It pulls a directory of passkey-capable services from the server, matches them against the user's login items by domain, and flags any that are missing FIDO2 credentials. The report shows whether each service supports passwordless login, MFA, or both, and links out to setup instructions where available. There's an individual version that covers your personal vault and org memberships (with filtering), and an org-level version for admins. Requires premium and the PasskeyLoginReport feature flag.
* Implement AvatarIdPipe for consistent avatar identification across components and update usages in member dialogs and lists. Add tests for AvatarIdPipe and resolveAvatarId utility function to ensure correct behavior.
* Add AvatarIdPipe to bulk confirm and remove dialog components for enhanced avatar handling
* Refactor AvatarIdPipe and resolveAvatarId utility function documentation for clarity and conciseness. Remove redundant comments while retaining essential information about avatar id resolution.
* add new design for edit member dialog
* fix test
* fix stories
* replace radios, fix more actions, clean up design
* fix created date, update stories
* fix stories
* move sm check box
* add feature flag with temporary name
* update copy for collection dialog based on feature flag
* update copy and startIcon for domain rules based on feature flag
* update copy, icon and button type for new send dropdown based on feature flag
* update copy for vault component based on feature flag
* update copy for SM project dialog based on feature flag
* update copy for SM secret-dialog based on feature flag
* update copy and startIcon for SM service accounts list based on feature flag
* update copy for SM new-menu based on feature flag
* update copy and startIcon for SM projects list based on feature flag
* update copy and startIcon for SM secrets list based on feature flag
* update copy for new send dropdown V1 and V2 based on feature flag
* update copy for add edit dialog based on feature flag
* update copy for new cipher menu based on feature flag
* update copy for vault item dialog based on feature flag
* update copy for AC groups and group add edit based on feature flag
* update copy and icon for domain verification based on feature flag
* fix tests
* update feature flag name
* add i18n keys used by lib components in browser and desktop
* update feature flag variable name
* update individual vault empty button to be secondary and no plus icon
* update AC empty vault add button v1/v2
* update SM add machine account modal copy
* update new domain modal copy
* fix tests
* fix new send dropdown when hideIcon and feature flag are false, show old copy
* add initial value to btnTextAddCreateFeatureFlag signal
* revert changes to new send dropdown in libs, out of scope for web
* fixes missed lib change reversion
* fix issue from merge conflict
* update add-edit header copy
* update vault new button copy to add
* update view header copy to sentence case
* update copy for new send dropdown lib
* update send buttonType
* update buttonType and icon for empty vault list
* add optional icon and buttonType
* change copy for secondary buttons
* fix tests
* add bank account list view sdk support to allow for bankAccountSubtitle to work properly
* Revert "add bank account list view sdk support to allow for bankAccountSubtitle to work properly"
This reverts commit 26b17c3326.
* fix double injection of config service
* fix lack of feature flag gating for vault-list
Uses Vfo1TerminologyService to gate the label behind the VFO1Foundation
feature flag, showing "New vault" when enabled and "New organization" otherwise.
Adds the "newVault" i18n key and unit tests covering both flag states and
the SingleOrg policy suppression of the add action.
Introduce a bitMenuClose marker directive: clicking an element (or descendant)
carrying it closes the enclosing bit-menu. bitMenuItem applies it automatically
via hostDirectives, so standard menu items keep closing as before. The menu now
detects the marker via a data attribute instead of emitting closed on every
content click, so non-item content (search fields, checkboxes, section headers)
no longer dismisses the menu unexpectedly.
Add bitMenuClose to the product-switcher's plain navigation links, which are not
bitMenuItems, to preserve their close-on-click behavior.
Race condition between clearing pin and clearing user key causes pin clear to throw error and leaves user in locked state. The logout procedure never finishes successfully.
* feat: User is no longer logged out when their email is changed. This must be behind a feature flag until salt and email are seperated.
Addressed tech-debt as well enforcing strict typing, signals, and onPush for all components in this PR.
Updated multiple bulk dialog components to enhance the rendering of user avatars by incorporating the userId and avatarColor properties. This change ensures consistent avatar display across the application, improving user experience and visual coherence.
* desktop-autofill: Implement lock status and window handle IPC
This is needed for Windows passkey plugin for presenting the Electron
app and focusing the subsequent Window Hello user verification dialog
during passkey operations.
* desktop-autofill: Require context field to be populated
* desktop-autofill: Add cancel request callback
Add base English keys (sharedFolder, sharedFolders, myFolder, myFolders)
to the web, browser, desktop, and CLI en/messages.json files. Existing
collection*/folder* keys are preserved intact for rollback.