* 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>
* use new badge api for icon
* new default max width for badges
* update js doc comment
* remove margin that was not rendering previously and keep whitespace for spacing
* [PM-34177] Fix feature flag key value for Organization Invite Links
* Rename feature flag key from OrganizationInviteLinks to GenerateInviteLink for clarity and consistency.
* Add fix-angular-fixmes skill to resolve Angular FIXME migration comments
This new skill provides a structured approach to address recurring FIXME comments related to Angular modernization, specifically for CL-764 (Migrate to OnPush) and CL-903 (Migrate to Signals). It includes detailed steps for discovering FIXMEs, implementing necessary changes, and validating the updates. The skill emphasizes the use of Angular CLI for migrations and outlines a cleanup checklist to ensure all related comments and imports are properly managed.
* Refactor fix-angular-fixmes skill to address eslint-disable suppression comments
Updated the skill to focus on resolving eslint-disable suppression comments throughout the Bitwarden clients codebase. The description and steps have been revised to emphasize fixing underlying issues rather than merely removing comments. Enhanced the discovery process for suppressions and clarified the approach for migrating to OnPush and Signals, ensuring a more structured cleanup of technical debt.
* Refine fix-angular-fixmes skill to enhance guidance on Angular modernization
Updated the skill to provide clearer instructions for migrating to OnPush and Signals, emphasizing the use of Angular CLI for migrations and manual cleanup of related comments. The documentation now includes specific steps for handling FIXME comments and clarifies the scope of the skill in relation to broader Angular modernization practices.
* Enhance fix-angular-fixmes skill with updated ESLint suppression handling
Revised the skill to improve guidance on resolving eslint-disable suppression comments, including specific patterns for discovery and detailed instructions for addressing Angular modernization issues. Clarified the relationship between this skill and broader Angular practices, particularly regarding OnPush and Signals, while emphasizing the importance of fixing underlying issues rather than merely removing comments.
* Update .claude/skills/fix-angular-fixmes/SKILL.md
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* Update .claude/skills/fix-angular-fixmes/SKILL.md
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
* [PM-25688] Migrate folder.request.ts to TS strict
* [PM-25688] Remove ts-strict-ignore from FolderWithIdRequest and update importer service to use FolderRequest instead
* [PM-25688] Add unit test to ensure Folder Id is never set for import request
* [PM-25688] Introduce FolderWithOptionalIdRequest for Import service
* replace PAT with github app token
* test deploy
* remove test conditions
* replace PAT with github app token
* add repositories
* add if to match related steps
* temporarily disable ifs to test token generation
* dry run
* remove test conditions
* fix built-in token
* trying with github token
* speed up test process
* trying with github token
* revert to working state
* try again with built in token
* remove test conditions
* try again with built in token
* try test conditions
* try test conditions
* try test conditions
* try test conditions
* try test conditions
* remove test conditions
* found straggling test conditions
* upddating branches
* Added cipher type skill
* Refined the cipher type skills a bit
* Removed reference to personal docs folder claude kept referencing
* Fixed comments from PR
* Added new critical points
* Removed cross-repo prerequisites
* Removed the arguments
* added optional params
* update user-invocable
* update create command path
* update argument hint to be a string rather than array
---------
Co-authored-by: Nick Krantz <125900171+nick-livefront@users.noreply.github.com>
Co-authored-by: Nick Krantz <nick@livefront.com>
* [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>
* 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
* Add page level components
* Add missed applications html file
* Update styling on password change metric component to match other widget border colors
* Add storybooks, add story mocks file
* Move testing files. Rename and move activity tab. Move password change metric component
* Move review applications view and new applications dialog to live under activity folder
* Rename applications-v2 to applications-tab for consistency with activity-tab rename
* Update properties access modifiers
* Removed review applications view stories now included in new applications dialog component stories. Cleanup
* Fixed selectors. Storybook cleanup
- 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.
* generate keypair even if there is no current one on password login
* fix imports for cli
* fix test
* fix more tests
* remove regen from login strategy
* add test for new regen condition
* change test to reflect what actually happens when public key is missing