Commit Graph

306 Commits

Author SHA1 Message Date
Andreas Coroiu
1d9ebb028e
[PM-24615][PM-24999] Adjust autofill badge updater to only calculate the active tab (#16163)
* wip

* feat: refactor how we react to tab changes

* feat: always begin me emitting all active tabs

* feat: only calculate autofill for active tabs

* fix: bug not properly listening to reloads

* wip

* fix: clean up

* fix: clean up
2025-09-05 09:18:10 +02:00
Nick Krantz
5967cf0539
[PM-14571] At Risk Passwords - Badge Update (#15983)
* add exclamation badge for at risk passwords on tab

* add berry icon for the badge when pending tasks are present

* remove integration wtih autofill for pending task badge

* add ability to override Never match strategy
- This is helpful for non-autofill purposes but cipher matching is still needed. This will default to the domain.

* add at-risk-cipher badge updater service

* Revert "add exclamation badge for at risk passwords on tab"

This reverts commit a9643c03d5.

* remove nullish-coalescing

* ensure that all user related observables use the same user.id

---------

Co-authored-by: Shane Melton <smelton@bitwarden.com>
2025-09-02 15:09:20 -05:00
Patrick-Pimentel-Bitwarden
c828b3c4f4
Auth/pm 23620/auth request answering service (#15760)
* feat(notification-processing): [PM-19877] System Notification Implementation - Implemented auth request answering service.

* test(notification-processing): [PM-19877] System Notification Implementation - Added tests.
2025-08-28 13:47:05 -04:00
Andreas Coroiu
ff64cf5063
Fix a cache race condition in local backed session storage (#16177)
* fix: cache race condition

* fix: typo and order

* feat: tweak log message
2025-08-28 13:30:57 +02:00
Justin Baur
5f7f1d1924
Resolve state <-> state-test-utils circular dependency (#16093)
* Resolve state <-> state-test-utils circular dependency

* Fix type errors
2025-08-25 12:38:28 -04:00
Vicki League
805b6fe7aa
[CL-573] Move all svg icons to new libs/assets (#16020)
* create libs/assets

* treeshake lib and filter out non-icons from icon story

* update docs

* fix icon colors in browser and desktop

* better name for vault icon

* move illustrations
2025-08-21 11:35:59 -05:00
Patrick-Pimentel-Bitwarden
719a43d050
Feat PM-19877 System Notification Processing (#15611)
* feat(notification-processing): [PM-19877] System Notification Implementation - Minor changes to popup logic and removed content in login component.

* docs(notification-processing): [PM-19877] System Notification Implementation - Added more docs.

* docs(notification-processing): [PM-19877] System Notification Implementation - Added markdown document.

* fix(notification-processing): [PM-19877] System Notification Implementation - Updated condition for if notification is supported.

* fix(notification-processing): [PM-19877] System Notification Implementation - Updated services module with correct platform utils service.
2025-08-20 12:42:16 -04:00
Bryan Cunningham
4449d8baf6
[CL-689][CL-799] Fix Icon button a11y errors (#15750)
* Throw error if appA11yTitle is null in icon button

* Add required label input

* Fix icon button errors in CL components and storeis

* fix popover aria-label errors

* remove commented code

* add labels to icon buttons in browser

* add labels to icon buttons in web

* add labels to icon buttons in license

* add labels to icon buttons in send

* add labels to icon buttons in angular

* fix missing pipe error

* fix sso icon button missed in error

* update labels in vault

* add section expand button label

* Adding labels to icon buttons

* Add lint rule to not allow icon buttons without label input

* rename util file

* trigger updates on title change

* update eslint rule name and folder

* add edit collection label to vault headers

* fix web header story label

* add show/hide summary labels

* update summary message

* fix breadcrumbs label message

* fix JSDoc to use correct input

* remove commented code

* use label as aria-label always. Remove init function

* add moreBreadcrumbs translation message to other apps

* add @bitwarden/team-ui-foundation as code owner for component eslint rules

* switch title to const variable

* add jsdoc comment on what the label input is used for

* [PM-22415] Tax ID notifications for Organizations and Providers (#15996)

* [NO LOGIC] Rename BillableEntity to BitwardenSubscriber

This helps us maintain paraody with server where we call this choice type ISubscriber. I chose BitwardenSubscriber to avoid overlap with RxJS

* [NO LOGIC] Move subscriber-billing.client to clients folder

* [NO LOGIC] Move organization warnings under organization folder

* Move getWarnings from OrganizationBillingApiService to new OrganizationBillingClient

I'd like us to move away from stashing so much in libs and utilizing the JsLibServicesModule when it's not necessary to do so. These are invocations used exclusively by the Web Vault and, until that changes, they should be treated as such

* Refactor OrganizationWarningsService

There was a case added to the Inactive Subscription warning for a free trial, but free trials do not represent inactive subscriptions so this was semantically incorrect. This creates another method that pulls the free trial warning and shows a dialog asking the user to subscribe if they're on one.

* Implement Tax ID Warnings throughout Admin Console and Provider Portal

* Fix linting error

* Jimmy's feedback

* remove duplicate messages keys

* revert changes to popover stories

* add back dupe myItems key for now as it was already here

* fix directive type errors

* remove variable left in error from merge conflict

* revert unintentional change to reports layout

* add back reports change

---------

Co-authored-by: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com>
2025-08-19 15:15:41 -04:00
Andreas Coroiu
1a57ad3fc5
fix(badge): [PM-24661] Improve performance of badge state calculation for large number of tabs
* refactor: rewrite the badge service to only calculate states for active tab

This also fixes an issue where the `difference` function didn't work and caused
all tabs to update for every single state update.

* fix: compilation issue

* feat: add error logging

* fix: linting

* fix: badge clearing on reload on firefox

* feat: optimize observable

* feat(wip): update all active tabs

tests are broken

* fix: existing tests

* feat: add new tests
2025-08-19 12:05:06 -04:00
Will Martin
827c4c0301
[PM-15847] libs/components strict migration (#15738)
This PR migrates `libs/components` to use strict TypeScript.

- Remove `@ts-strict-ignore` from each file in `libs/components` and resolved any new compilation errors
- Converted ViewChild and ContentChild decorators to use the new signal-based queries using the [Angular signal queries migration](https://angular.dev/reference/migrations/signal-queries)
  - Made view/content children `required` where appropriate, eliminating the need for additional null checking. This helped simplify the strict migration.

---

Co-authored-by: Vicki League <vleague@bitwarden.com>
2025-08-18 15:36:45 -04:00
Justin Baur
939fd402c3
[PM-24677] Slim StateService down so it can be moved to state lib (#16021)
* Slim StateService down so it can be moved to state lib

* Fix accidental import changes

* Add `switchAccount` assertion

* Needs to use mock
2025-08-18 12:37:25 -04:00
Jonathan Prusik
0c166b3f94
remove BlockBrowserInjectionsByDomain feature flag (#16008) 2025-08-18 10:17:05 -04:00
Oscar Hinton
40455546d1
[CL-652] Remove bootstrap and enable tailwind preflight (#8071)
Wraps up the tailwind migration by removing bootstrap from the web vault.
2025-08-12 20:32:19 +02:00
Andreas Coroiu
c3f6892f9e
[PM-24451] firefox extension crash due to huge memory usage when unlocking vault (#15938)
* feat: only set badge state for the active tab

* fix: tests

* feat: avoid calculating states unecessarily

* Revert BrowserApi.removeListener change

* Add fatal log on observable failure

* Use fromChromeEvent

* Remove required-using tests

* Only disable some

* One of each

---------

Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
2025-08-07 13:19:14 -04:00
Vicki League
26c0176e2e
[CL-712] Update icon button, components using it, and affected virtual scroll heights (#15683) 2025-08-05 10:58:49 -04:00
renovate[bot]
2dd6164fce
[deps] Autofill: Update prettier to v3.6.2 (#15496)
Some checks failed
Chromatic / Check PR run (push) Has been cancelled
Scan / Check PR run (push) Has been cancelled
Testing / Run tests (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
Chromatic / Chromatic (push) Has been cancelled
Scan / Checkmarx (push) Has been cancelled
Scan / Sonar (push) Has been cancelled
Testing / Upload to Codecov (push) Has been cancelled
* [deps] Autofill: Update prettier to v3.6.2

* fix: [PM-23425] Fix prettier issues related to dependency updte

Signed-off-by: Ben Brooks <bbrooks@bitwarden.com>

* [deps] Autofill: Update prettier to v3.6.2

---------

Signed-off-by: Ben Brooks <bbrooks@bitwarden.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ben Brooks <bbrooks@bitwarden.com>
2025-08-01 14:02:54 -07:00
Vicki League
6a2d8ee294
[CL-768] Fix small a11y errors in storybook stories (#15826) 2025-07-29 14:29:37 -04:00
Justin Baur
a563e6d910
Add messaging & messaging-internal libraries (#15711) 2025-07-22 11:47:25 -04:00
Bernd Schoolmann
8b5e6adc37
[PM-21378] Switch encrypt service to use SDK functions (#14538)
* Add new encrypt service functions

* Undo changes

* Cleanup

* Fix build

* Fix comments

* Switch encrypt service to use SDK functions

* Move remaining functions to PureCrypto

* Tests

* Increase test coverage

* Enforce sdk.ready and drop unused codepaths

* Delete unused code

* Add forgotten sdk init logic

* Fix build error

* Fix browser extension failing to unlock after process reload due to outdated usage of decryptString

* Fix send encryption

* Fix client key half decryption being stuck

* Attempt to fix sharereplay

* Fix build

* Fix type / add filter / add distinctuntilchange

* Fix capitalization
2025-07-21 15:52:38 +02:00
Bernd Schoolmann
60855c734f
[PM-17666] Move Encstring to KM ownership (#15457)
* Move Encstring to KM ownership

* Fix wrong import

* Fix build

* Fix remaining imports

* Fix tests
2025-07-16 11:15:24 -04:00
Vicki League
6811ea4c0b
[CL-707] Migrate CL codebase to signals (#15340) 2025-07-16 08:39:37 -04:00
Andreas Coroiu
90b7197279
[PM-20210] Expand badge API (#14801)
* feat: scaffold new badge service structure

* feat: add state override

* feat: add priority-based override

* feat: implement state clearing

* feat: add docs to badge service functions

* feat: add support for setting icon

* feat: implement unsetting

* feat: implement setting text

* feat: add support for setting background

* fix: default icon

* feat: clean up old update-badge

* feat: save state using StateProvider

* feat: migrate auth status badge updating

* feat: migrate autofill badge updating

* fix: auto set to default values

* chore: woops, clean up copy-pasta

* fix: lint and types

* chore: nit updates from PR review

* feat: remove ability to send in arbitrary icons

* feat: move init to separate function

* fix: wrong import

* fix: typing issues

* fix: try again to fix typing issues

* feat: scaffold tests for new tabId-specific states

* feat: add diffence util function

* feat: add support for limiting state to tabId

* feat: re-implement autofill badge updater to only update when a tab actually changes

* feat[wip]: always set all tabs when changing the general state

* feat[wip]: implement general states for mutliple open tabs

* feat[wip]: implement fully working multi-tab functionality

* feat: optimize api calls

* feat: adjust storage

* chore: clean up old code

* chore: remove unused log service

* chore: minor tweaks

* fix: types

* fix: race condition causing wrong icon on startup

The service assumes that the first emission from the state will be an empty one and discards it
(techincally it just doesn't act on it because pairwise requires a minimum two emissions). This
caused issues when a service is able to update the state before the observable got a change to
properly initialize. To fix this we simply force an empty emission before anything else,
that way we will always react to the emission from the state provider (because that would end up
being the second emission). We then use distinctUntilChanged to avoid unecessarily acting on
an empty state.
2025-07-09 15:38:33 -04:00
Bryan Cunningham
a6ae7d23f7
[CL-686] updated hover states (#15463) 2025-07-07 11:28:38 -04:00
Todd Martin
d1c6b334b1
feat(DuckDuckGo): [PM-9388] Add new device type for DuckDuckGo browser
* Add new device type for DuckDuckGo browser

* Added feature support property for sync domains

* Added new features

* Added isDuckDuckGo() to CLI

* Addressed PR feedback.

* Renamed new property

* Fixed rename that missed CLI.
2025-07-03 11:27:28 -04:00
Vicki League
04ddea5bf3
[CL-473] Adjust popup page max width and scroll containers (#14853) 2025-06-30 09:39:39 -04:00
Andreas Coroiu
71d4f989b7
[PM-18042] Build request response structure (#15163)
* feat: add support for discover command

* feat: make client public to allow RPC

* feat: update SDK
2025-06-26 14:01:31 +02:00
Oscar Hinton
1ede507f3d
[PM-22631] Move platform popup utils out from popup. (#15206)
First step in resolving angular being imported in background.js. Removes the dependency of angular from PlatformPopupUtils and moves it out of popup.
2025-06-20 08:35:46 -04:00
Daniel Riera
05b34e9d00
PM-21160 (#15125) 2025-06-17 14:31:11 -04:00
Oscar Hinton
674886a28b
[PM-22207] Remove wasm fallback for browser (#15003)
We currently ship a transpiled version of the WebAssembly module to maintain backwards compataibility in case someone can't run the WebAssembly bundle. The filesize of this fallback now exceeds 4mb, but Firefox only supports javascript files 4mb and smaller in extensions. This resulted in us being unable to publish the latest version.

This PR removes the fallback.
2025-06-17 15:42:45 +02:00
Oscar Hinton
70ad4d048b
[PM-22629] Forbid importing popup outside (#15168)
Adds an eslint rule forbidding non popup scripts from importing popups. Also added a webpack plugin that throws if it detects @angular inside background output.
2025-06-13 08:54:49 -05:00
Andreas Coroiu
0e608639cc
[PM-20615] Only process incoming messages once (#14645)
* feat: start ipc client

* fix: payload serialization issues

* feat: filter incoming messages by destination

* fix: adapt to SDK renames

* feat: update sdk
2025-06-12 10:17:03 +02:00
Oscar Hinton
26fb7effd3
Remove standalone true from platform and UIF (#15032)
Remove standalone: true from every instance since it's the default as of Angular 19.
2025-06-02 20:03:04 +02:00
Patrick-Pimentel-Bitwarden
cb770f5cd3
refactor(browser-platform-utils): Remove Deprecation and Fix Code (#14709)
* refactor(browser-platform-utils): Remove Deprecation and Fix Code - Changed usages of firefox to private and moved the usages to the preferred public method and removed the deprecations.

* fix(browser-platform-utils): Remove Deprecation and Fix Code - Tiny changes.

* test(browser-platform-utils): Remove Deprecation and Fix Code - Fixed up test
2025-05-27 16:01:07 -04:00
Oscar Hinton
5423ab3268
[PM-21934] Upgrade to eslint 9 (#14754)
Upgrades to Eslint v9. Since this is a major version there were breaking changes, but since we've previously migrated to flat configs in #12806 those were minimal.
2025-05-27 13:13:15 -04:00
Oscar Hinton
745ab21946
Remove unused imports in browser and desktop (#14875)
Removes unused imports from browser and desktop. These were missed in #14795.
2025-05-26 08:38:02 -04:00
Addison Beck
56a3b14583
Introduce eslint errors for risky/circular imports (#14804)
* first draft at an idea dependency graph

* ignore existing errors

* remove conflicting rule regarding internal platform logic in libs

* review: allow components to import from platform
2025-05-23 08:01:25 -04:00
Nick Krantz
1c4d851046
[PM-21005] Clear Add/Edit form cache when browser loses focus (#14634) 2025-05-21 08:00:49 -05:00
Bernd Schoolmann
d93f547cfb
[PM-21001] Move platform code to new encrypt service interface (#14544)
* Move platform code to new encrypt service interface

* Fix tests

* Fix tests

* Fix cli build
2025-05-20 19:45:40 +02:00
Oscar Hinton
ac49e594c1
Add standalone false to all non migrated (#14797)
Adds standalone: false to all components since Angular is changing the default to true and we'd rather not have the angular PR change 300+ files.
2025-05-15 10:44:07 -04:00
Vicki League
b3df8a6c13
[PM-17091][PM-17043] Support system zoom in browser extension (#14435) 2025-05-13 14:16:18 -04:00
Jordan Aasen
ce8e123c44
[PM-21480] - check for privacy granted in isBrowserAutofillSettingOverridden (#14748)
* check for privacy granted in isBrowserAutofillSettingOverridden

* check for privacy granted in browserAutofillSettingsOverridden
2025-05-12 12:17:15 -07:00
Todd Martin
eed18c9294
chore(view-cache): [PM-21154] Move view-cache its own feature package and adjust imports
* Moved view-cache services to directory

* Fixed DI for browser extension.

* Fixed tests.
2025-05-12 14:26:52 -04:00
Patrick-Pimentel-Bitwarden
87b875c48b
docs(update-auth-approving-clients): [PM-17111] Add Browser to List of Approving Clients - Updated comments. (#14707) 2025-05-12 09:29:11 -04:00
Jordan Aasen
a7efd2158e
[PM-18802] - Autofill Settings Nudges and Settings Badge (#14439)
* autofill nudge

* remove undismiss logic

* revert change to popup view cache service

* move browser autofill logic to platform. cleanup

* fix test

* adjustments to autofill nudges

* add missing provider

* updates to autofill nudges

* fix date logic

* change autofillBrowserSettingsService isBrowserAutofillSettingOverridden to function

* fix up browser autofill overridden settings logic

* remove check for privacy in isBrowserAutofillSettingOverridden
2025-05-09 08:52:54 -07:00
Vicki League
625256b08e
[CL-680] Fix broken popup layout docs page (#14680) 2025-05-09 08:54:40 -04:00
Vicki League
8ecb32f30f
[CL-333] Icon Refresh Feature Branch (#14298)
Some checks failed
Chromatic / Check PR run (push) Has been cancelled
Scan / Check PR run (push) Has been cancelled
Testing / Run tests (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
Chromatic / Chromatic (push) Has been cancelled
Scan / SAST scan (push) Has been cancelled
Scan / Quality scan (push) Has been cancelled
* [CL-571] Update icons to new fileset and metaphors (#14163)

* [CL-518] Convert icons docs to stories (#14299)

* [CL-574] Update inline autofill icons (#14379)

---------

Co-authored-by: William Martin <contact@willmartian.com>
2025-05-07 17:07:14 -04:00
Andreas Coroiu
e0cabd1df0
[PM-18044] Ensure all calls to receive should get all messages broadcast (#13869)
* feat: make compatible with SDK changes

* feat: use subscription

* feat: update SDK

* fix: lint

* fix: ts strict issues
2025-05-05 12:19:41 -04:00
Andreas Coroiu
77d401f4f8
[PM-19371] Blank Screen on Browser Extension Popup After Approving TDE Request on Popout (#14211)
* feat: clear cached history after successfull login

* Revert "feat: clear cached history after successfull login"

This reverts commit 4ede7f9056.

* feat: only restore router cache once per popup session

The purpose of the router cache is to restore the last visited route
during the startup of the popup, but without any explicit check
the cache would try to restore the route an inifinite number of times.
Because the router cache is never used to restore a route any other time
it is safe to assume that we only want to run the restore function once.
2025-05-05 09:41:05 +02:00
Justin Baur
1d00495078
[PM-20032] Give option to skip token refresh on fullSync (#14423)
* Give option to skip token refresh on fullSync

* Fix listener
2025-05-01 09:32:10 -04:00
Bryan Cunningham
116751d4ca
add small button variant (#14326)
* adds small button size variant

* makes small icon button same size as small button

* testing small button for extension header

* remove extension changes

* update popout layout story

* revert change to small icon button padding

* add whitespace to see if error resolves

* default buttonType to primary

* default buttonType to secondary

* add comment around why nonNullButtonSize value exists

* add comment to  property about using the non null version

* Update apps/browser/src/platform/popup/layout/popup-layout.stories.ts

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>

* updated input syntax when using static values

* remove nonNull value coersion

* allow changing of size input in Story

---------

Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
2025-04-24 15:34:29 -04:00