1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-04 10:43:47 +00:00
Commit Graph

19685 Commits

Author SHA1 Message Date
Claude
de82d28793 feat(dirt): implement review workflow for new applications
Handle dialog results and save review status through orchestrator.
Marks ALL new applications as reviewed and selected ones as critical.
UI updates automatically via reactive pipeline.

- Update onReviewNewApplications() to handle dialog results
- Call dataService.saveApplicationReviewStatus() with selections
- Add success/error toast notifications
- Add I18nService and ToastService dependencies
- Business logic properly separated from dialog

Related to PM-27284
2025-10-28 21:21:52 +00:00
Claude
5eab495710 refactor(dirt): make new applications dialog pure UI component
Convert dialog to pure UI that returns user selections to calling
component. Business logic (save operations) moved to parent component.
Follows Dialog Pattern best practices.

- Update onMarkAsCritical() to return selections via dialogRef.close()
- Add NewApplicationsDialogResult interface
- Update dialog template (Cancel button uses bitDialogClose)
- Remove business logic from dialog component

Related to PM-27284
2025-10-28 21:20:46 +00:00
Claude
0ab40debb3 refactor(dirt): use reactive newApplications$ in AllActivitiesService
Replace manual newApplications population with subscription to
orchestrator's reactive observable. Ensures automatic updates
when applicationData changes.

- Subscribe to dataService.newApplications$
- Add setNewApplications() helper method
- Remove newApplications update from setAllAppsReportSummary()
- Data now flows through dedicated observable pipeline

Related to PM-27284
2025-10-28 21:19:27 +00:00
Claude
7194a24361 feat(dirt): expose newApplications$ in data service
Expose orchestrator's newApplications$ observable and save method
through RiskInsightsDataService facade. Maintains clean separation
between orchestrator (business logic) and components (UI).

- Expose newApplications$ observable
- Expose saveApplicationReviewStatus() delegation method
- Maintains facade pattern consistency

Related to PM-27284
2025-10-28 21:18:32 +00:00
Claude
1539e8308a feat(dirt): add saveApplicationReviewStatus$ to orchestrator
Implement method to save application review status and critical flags.
Updates all applications where reviewedDate === null to set current date,
and marks selected applications as critical.

- Add saveApplicationReviewStatus$() method
- Add _updateReviewStatusAndCriticalFlags() helper
- Uses existing encryption and API update patterns
- Single API call for both review status and critical flags
- Follows same pattern as saveCriticalApplications$()

Related to PM-27284
2025-10-28 21:17:32 +00:00
Claude
9e9d50e7bf feat(dirt): add newApplications$ observable to orchestrator
Add reactive observable that filters applicationData for unreviewed apps
(reviewedDate === null). Observable automatically updates when report
state changes through the pipeline.

- Add newApplications$ observable with distinctUntilChanged
- Filters rawReportData$.data.applicationData
- Uses shareReplay for multi-subscriber efficiency

Related to PM-27284
2025-10-28 21:16:18 +00:00
Maciej Zieniuk
ff30df3dd6 [PM-19300] Session timeout policy (#16583)
* Session timeout policy

* default "custom" is 8 hours, validation fixes

* ownership update

* default max allowed timeout is not selected

* adjusting defaults, fixing backwards compatibility, skip type confirmation dialog when switching between the never and on system lock

* unit test coverage

* wording update, custom hours, minutes jumping on errors

* wording update

* wrong session timeout action dropdown label

* show dialog as valid when opened first time, use @for loop, use controls instead of get

* dialog static opener

* easier to understand type value listener

* unit tests

* explicit maximum allowed timeout required error

* eslint revert
2025-10-28 20:28:34 +01:00
Mick Letofsky
69d5c533ef Implement Claude respond reusable workflow (#17079) 2025-10-28 20:19:41 +01:00
Dave
af1809222f fix(input-password-component) [PM-24266]: Update modal title. (#16932) 2025-10-28 15:14:48 -04:00
Daniel Riera
fe26826369 PM-27366 drop scss and convert to vanilla css (#17046) 2025-10-28 18:47:49 +00:00
renovate[bot]
185c912c62 [deps]: Update peter-evans/repository-dispatch action to v4 (#16848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 14:46:17 -04:00
Mick Letofsky
11d3f5247c Refactor canClone method to use CipherAuthorizationService (#16849) 2025-10-28 19:00:56 +01:00
Brandon Treston
c1a988c2ab fix DI (#17076) 2025-10-28 12:25:56 -04:00
John Harrington
8d54ad7883 PM-26201 [Defect] [Safari] Cannot unzip vault export (#16909)
• ensure extension method can accept both `blob` type and `arrayBuffer` type 
• replace usage of Swift's `url.absoluteString` with `url.path`
• explicitly discard promise returned by `downloadSafari()`
• confine `data` type to `string` since code all code paths assign a `string` value
2025-10-28 09:02:38 -07:00
Alex
2058c772ac [PM-26352] drawers for activity cards (#16895)
* new drawer functions for crit apps

* logic for triggering the drawer functions in components

* cleanup unused logic and rename "navigation" to "action"
- ... since the click is now triggering the drawer instead of navigating to another tab/page

* null check for reportData in drawer methods

* use criticalReportResults$ to avoid duplicating logic

* use criticalReportResults$ to avoid dupe logic

* remove unused code
2025-10-28 08:44:42 -07:00
Stephon Brown
bf66b5ac19 -[PM-27123] Update Signals and Update Estimated Tax and Credit Logic (#17055)
* billing(fix): update signals and update estimated tax and credit logic

* fix(billing): update with claude feedback and expose total observable
2025-10-28 15:25:07 +00:00
Miles Blackwood
714daa5779 Removes deprecated keypress event. (#17058) 2025-10-28 11:09:29 -04:00
Alex
6505ce05db [PM-27162] Add runtime type guards for decrypted JSON data (#16996)
* Add runtime type guards for decrypted JSON data

- Create risk-insights-type-guards.ts with validation functions
- Replace unsafe type assertions with runtime validation in encryption service
- Validate ApplicationHealthReportDetail, OrganizationReportSummary, and OrganizationReportApplication
- Add detailed error messages for validation failures
- Remove TODO comments for type guard implementation

Improves security by preventing malformed data from bypassing type safety and ensures data integrity for decrypted report structures.

* test file fix

* date validation

* add runtime type guards and validation failure tests

Issue 1: Missing Test Coverage for Type Guard Validation Failures
- Create comprehensive test suite with 17 tests covering all validation scenarios
- Test invalid structures, missing fields, wrong types, and edge cases
- Verify proper error messages and validation logic for all data types

Issue 2: Silent Failure on Validation Errors (Security Concern)
- Re-throw validation errors instead of silently returning empty/default data
- Add descriptive error messages indicating potential data corruption or tampering
- Ensure all validation failures are surfaced as security issues, not swallowed

Additional Fix: Date Validation Vulnerability
- Validate date strings before creating Date objects to prevent Invalid Date (NaN)
- Throw explicit errors for unparseable date strings
- Update error handling to catch and properly surface date validation failures

* add empty string validation and sanitize error messages

- Validate array elements are non-empty strings (atRiskCipherIds, cipherIds, newApplications)
- Sanitize validation error messages to prevent information disclosure
- Log detailed errors for debugging, re-throw generic messages
- Add tests for empty string validation and error message sanitization

* add comprehensive validation for scalar strings and numeric ranges

- Validate all scalar string fields are non-empty (applicationName, userName, email, cipherId, userGuid)
- Add numeric range validation (finite, non-negative) for all count fields
- Export type guard functions for testability and reusability
- Add 19 new tests covering edge cases (empty strings, NaN, Infinity, negative numbers)

* prevent prototype pollution and unexpected property injection in type guards

- Validate object prototype is Object.prototype (prevents __proto__ attacks)
- Check for dangerous own properties (constructor, prototype)
- Strict property enumeration - reject objects with unexpected properties
- Add comprehensive security tests (prototype pollution, unexpected props)
- Protects against data tampering and information leakage

* security: always sanitize error messages to prevent information disclosure

- Remove fragile pattern matching in error handlers
- Always throw generic error messages by default
- Log detailed errors for debugging, never expose to callers
- Future-proof against validation error message changes
- Prevents disclosure of internal data structure details

Applies to all decryption/validation methods in encryption service

* security: comprehensive hardening of type validation system

CRITICAL FIXES:
- Add __proto__ to prototype pollution checks (loop-based)
- Remove conditional error sanitization (always sanitize)

SECURITY ENHANCEMENTS:
- Add integer overflow protection (Number.isSafeInteger)
- Add DoS prevention (array/string length limits: 50K/1K)
- Strengthen all 4 type guards with 10-layer validation

LIMITS:
- Max string length: 1,000 characters
- Max array length: 50,000 elements
- Max safe integer: 2^53 - 1

DOCUMENTATION:
- Update code-review-methodology.md with patterns
- Update .cursorrules with security best practices
- Create comprehensive security audit document

All 57 tests passing. No linting errors.
Defense-in-depth complete - production ready.

* fix: consolidate security constants and add upper bound validation

CRITICAL FIXES:
- Consolidate MAX_STRING_LENGTH and MAX_ARRAY_LENGTH to file level (DRY)
- Add MAX_COUNT constant (10M) for upper bound validation
- Apply upper bound checks to all 12 count fields

BENEFITS:
- Single source of truth for security limits
- Prevents business logic issues from extreme values
- Easier maintenance and updates
2025-10-28 08:03:11 -07:00
Stephon Brown
6f34b6098a [PM-27252] Upgrade Dialog Should not Show in Self Host (#17051)
* fix(billing): update and refactor observable logic

* tests(billing): add additional expects for dialog

* fix(billing): update for claude feedback

* tests(billing): update test conditions and comments
2025-10-28 14:51:30 +00:00
Brandon Treston
8162c06700 [PM-26372] Add auto confirm service (#17001)
* add state definition for auto confirm

* typo

* refactor organziation user service

* WIP create auto confirm service

* add POST method, finish implementation

* add missing userId param, jsdoc

* fix DI

* refactor organziation user service

* WIP create auto confirm service

* add POST method, finish implementation

* add missing userId param, jsdoc

* clean up, more DI fixes

* remove @Injectable from service, fix tests

* remove from libs/common, fix dir structure, add tests
2025-10-28 09:47:54 -04:00
Jonathan Prusik
af061282c6 do not multiply delay of fill script action execution 🕴️ (#17049)
Co-authored-by: Miles Blackwood <milesblackwoodmusic@gmail.com>
2025-10-28 09:36:33 -04:00
Daniel James Smith
8eef78960d [PM-27358] Remove unused getInstalledBrowsers method (#17019)
* Remove unused getInstalledBrowsers metthod

* Run cargo fmt

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2025-10-28 11:13:58 +01:00
renovate[bot]
2b2b1f4a27 [deps] Platform: Update @types/node to v22.18.11 (#15698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 17:29:45 -04:00
Daniel James Smith
47975fda37 Address issues with eslint rules regarding signals and OnPush change detection (#17057)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2025-10-27 19:24:36 +00:00
Alex
32a40a91f5 [PM-26929] filter at risk passwords count to only critical apps (#16879)
* filter at risk passwords count to only critical apps

* PM-26929 assign tasks to those apps that are marked as critical

---------

Co-authored-by: voommen-livefront <voommen@livefront.com>
2025-10-27 11:38:49 -07:00
Mauritz Sjödin
2ff9c23dc4 fix: prevent action buttons from overflowing for long passwords (#17027)
Co-authored-by: Bryan Cunningham <bcunningham@bitwarden.com>
2025-10-27 12:34:22 -04:00
Oscar Hinton
42377a1533 [PM-27341] Chrome importer refactors (#16720)
Various refactors to the chrome importer
2025-10-27 17:24:50 +01:00
Thomas Avery
bd89c0ce6d [PM-23628] Require userId for fetching provider keys (#16993)
* remove getProviderKey and expose providerKeys$

* update consumers
2025-10-27 11:04:17 -05:00
Kyle Denney
b335987213 [PM-27267] fix disappearing border from upgrade plan card (#17007) 2025-10-27 10:44:56 -05:00
Mick Letofsky
d5f2c9d5ec Implement reusable Claude code review workflow (#16979) 2025-10-27 16:25:40 +01:00
tangowithfoxtrot
93227324bf [SM-1465] - Add Terraform provider to integrations page (#16876)
* fix: add Datadog org integration service to SM integrations module

* misc: add Terraform provider integration card

* misc: update Ansible integration link
2025-10-27 10:22:13 -05:00
Bryan Cunningham
f452f39f3c [CL-847] Card consolidation (#16952)
* created shared card directive

* WIP

* use base card in anon layout

* use bit-card for pricing card component

* add base card to integration cards

* add base card to reports cards

* add base card to integration card

* use card content on report card

* use base card directive on base component

* update dirt card to use bit-card

* run prettier. fix whitespace

* add missing imports to report list stories

* add base card story and docs
2025-10-27 11:14:42 -04:00
Oscar Hinton
af6e19335d Vault - Prefer signal & change detection (#16947) 2025-10-27 11:13:11 -04:00
Thomas Avery
fd45689745 [PM-27342] Fix state migration (#17018)
* Fix migration

* Update test
2025-10-27 09:55:31 -05:00
Brandon Treston
ea4b6779a5 [PM-26373] Update invitation accepted toast copy (#17021)
* update copy

* update copy

* update i18n.t

* use toast service, remove toast title

* fix spelling
2025-10-27 10:35:18 -04:00
Andreas Coroiu
64590cb3c8 [PM-25911] Add commercial sdk internal as dependency (#16883)
* feat: add commercial sdk as optional dependency

* feat: add alias to CLI

* feat: add alias to browser

* feat: add alias to web

* fix: revert optional - we cant omit optional dependencies or the builds break

* feat: remove commercial package from browser build

* feat: remove commercial package from cli build

* feat: remove commercial package from web build

* chore: add commercial sdk to renovate

* fix: windows cli workflow

* fix: accidental change

* feat: add lint for version string

* undo weird merge changes
2025-10-27 15:17:20 +01:00
Oscar Hinton
abc6e54bb9 Platform - Prefer signal & change detection (#16946) 2025-10-27 09:13:17 -05:00
Alex Morask
942f403ed0 Fix restart subscription modal showing twice from switcher (#16973) 2025-10-27 08:41:22 -05:00
neuronull
9d849d2234 Convert log crate Records to tracing Events for desktop native. (#16827)
* Convert `log` crate Records to `tracing` Events for desktop native.

* sort deps

* use the feature on tracing_subscriber
2025-10-27 07:39:40 -06:00
cyprain-okeke
b9f48d83b2 [PM 25897] Copy and UI Tweaks for Payment Method Component (#16851)
* Implement the Ui changes to align as expected

* Align the Text in card number, expiration date and security code vertically

* Change the Zip to ZIP

* Remove readonly modifier from signal declarations
2025-10-27 13:53:05 +01:00
Maciej Zieniuk
43a1dfa463 icons and key connector urls for web development (#17043) 2025-10-27 12:40:56 +00:00
cyprain-okeke
a6882c36b9 Resolve the redirect to subscription (#17017) 2025-10-27 13:18:08 +01:00
Bernd Schoolmann
c8ddaae6b3 [PM-27300] Update SDK to 357 (#17003)
* Update sdk to 357

* Package.lock
2025-10-27 13:11:29 +01:00
renovate[bot]
e8db35907d [deps] Platform: Update Rust crate windows-registry to v0.6.1 (#16419)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 10:59:16 +01:00
Rui Tomé
bcc92387b2 [PM-26294] Re-implement SSO and TDE checks for device approvals access after provider user fix (#16642) 2025-10-24 20:42:18 +01:00
Nik Gilmore
b26be1eec6 [PM-27059] Browser: Retain vault filters when editing a cipher from the dropdown (#16910)
* Skip clearing vault filters if a cipher is being edited

* add unit tests for clearVaultStateGuard
2025-10-24 09:36:16 -07:00
Alex
f5f9d1881e [PM-27291] preserve critical app flags when generating new reports (#17008) 2025-10-24 12:20:40 -04:00
Oscar Hinton
fc26a21b85 DIRT - Prefer signal & change detection (#16939) 2025-10-24 11:17:58 -05:00
Daniel Riera
1da4fd2261 PM-26985 Use a Shadow DOM for the notification bar iframe to address FF fingerprinting issues (#16903)
* PM-26985 Use a Shadow DOM for the notification bar iframe to address FF fingerprinting issues

* update tests
2025-10-24 10:35:55 -04:00
Mick Letofsky
bc0e0f0781 Update Claude owners (#17015) 2025-10-24 16:25:15 +02:00