1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-20 11:24:07 +00:00
Commit Graph

20857 Commits

Author SHA1 Message Date
✨ Audrey ✨
e66a1f37b5 Extract urlOriginsMatch utility and refactor senderIsInternal (#19076)
Adds urlOriginsMatch to @bitwarden/platform, which compares two URLs by
scheme, host, and port. Uses `protocol + "//" + host` rather than
`URL.origin` because non-special schemes (e.g. chrome-extension://)
return the opaque string "null" from .origin, making equality comparison
unreliable. URLs without a host (file:, data:) are explicitly rejected
to prevent hostless schemes from comparing equal.

Refactors senderIsInternal to delegate to urlOriginsMatch and to derive
the extension URL via BrowserApi.getRuntimeURL("") rather than inline
chrome/browser API detection. Adds full test coverage for
senderIsInternal.

The previous string-based comparison used startsWith after stripping
trailing slashes, which was safe in senderIsInternal where inputs are
tightly constrained. As a general utility accepting arbitrary URLs,
startsWith can produce false positives (e.g. "https://example.com"
matching "https://example.com.evil.com"). Structural host comparison
is the correct contract for unrestricted input.
2026-02-19 08:45:24 -05:00
Bernd Schoolmann
6498ec42f8 [BEEEP] Add util functions for uint8 array conversion (#18451)
* Add util functions for uint8 array conversion

* Use polyfill instead of old functionality

* Replace last usage of old functions
2026-02-19 14:04:43 +01:00
Thomas Avery
c9b821262c [PM-30927] Fix lock component initialization bug (#18822) 2026-02-18 17:08:33 -06:00
Leslie Xiong
1efd74daaf fixed berry styles for dark mode (#19068) 2026-02-18 17:59:18 -05:00
Jackson Engstrom
d1250cf5a4 [PM-26704] Vault List Item Ordering for Extension (#18853)
* shows all/filtered ciphers in allItems instead of the ones that haven't been bubbled up into autofill or favorites

* removes remainingCiphers$ remnants

* updates loading$ observable logic

* updates loading$ test
2026-02-18 14:34:17 -08:00
Meteoni-San
c90b4ded33 Revert "Inform user if Desktop client already running (#17846)" as per user feedback (#18897)
This reverts commit a199744e24.

Co-authored-by: neuronull <9162534+neuronull@users.noreply.github.com>
2026-02-18 15:22:38 -07:00
John Harrington
f8b5e15a44 [PM-31731] [Defect] No error is returned when entering an invalid email + an invalid verification code (#18913)
* share i18n key for both invalid email and invalid otp submission

* claude review
2026-02-18 14:08:57 -08:00
John Harrington
263ec94124 [PM-32161] Remove all emails when email list field is cleared and send is saved (#18959)
* add new validation criteria to prevent authType.Email with an empty emails field

* simplify validation logic
2026-02-18 14:59:34 -07:00
Jason Ng
bca2ebaca9 [PM-30122] allow no folders inside browser folder settings (#19041) 2026-02-18 16:22:50 -05:00
Mike Amirault
6dea7504a6 [PM-26732] Remove Chromium ABE importer feature flag (#19039) 2026-02-18 14:49:51 -05:00
Stephon Brown
ab59590019 [PM-29823] Add Tests for Updates (#19040)
* refactor: Remove direct self-hosted org creation from OrganizationPlansComponent

* tests: Add comprehensive test suite for OrganizationPlansComponent
2026-02-18 14:32:08 -05:00
Isaac Ivins
5444869456 PM-31733: Sends Drawer Persisting On Side Nav Change (#18762)
* using activeDrawerRef with onDestroy

* improved refs type checking - removed cdr
2026-02-18 10:20:08 -08:00
Todd Martin
c086df14e7 chore(ownership): Move account-fingerprint to KM ownership 2026-02-18 12:56:53 -05:00
Bernd Schoolmann
935bf3655c Update sdk to 546 (#19056) 2026-02-18 10:08:16 -07:00
Mike Amirault
f7f06267ee [PM-31347] Add missing messages resulting in empty toast on invalid export master password (#19037) 2026-02-18 11:50:52 -05:00
John Harrington
bc6b1c3b83 [PM-32242] Error message is incorrectly formatted for password protected Send (#18991)
* re-work error display to match design specs

* fix password auth in attemptV1Access

* fix locales file (formatting)
2026-02-18 09:34:57 -07:00
Alex
1ef8f257b0 [PM-31803] Fix Password Manager reports not displaying items with limited collection access (#18956)
When "Owners and admins can manage all collections and items" is OFF, Password Manager
reports incorrectly filter out items from collections where the user has "Can view",
"Can view except passwords", or "Can edit except passwords" access.

The root cause is that all five PM report components filter ciphers using
`(!this.organization && !edit) || !viewPassword`. Since PM reports run without an
organization context (this.organization is undefined), this condition excludes any
item where edit=false or viewPassword=false. These permission checks are unnecessary
for PM reports because:

1. Personal vault items always have edit=true and viewPassword=true, so the checks
   never applied to them.
2. Organization items should appear in reports regardless of permission level — the
   user has collection access, and edit restrictions should only affect the item
   dialog, not report visibility.
3. Admin Console reports (which work correctly) skip this filtering because
   this.organization is always set, making the condition always false.

This also explains why "Can edit except passwords" items only appeared in the
Unsecured Websites report — it was the only report that didn't check !viewPassword.

Removed the edit/viewPassword filter conditions from all five PM report components:
- exposed-passwords-report
- weak-passwords-report
- reused-passwords-report
- inactive-two-factor-report
- unsecured-websites-report
2026-02-18 08:00:36 -08:00
Isaiah Inuwa
dda862a8c6 Revert "Bumped client version(s)" (#19062)
This reverts commit 51731c1526. The desktop version was bumped erroneously, skipping 2026.2.0.
2026-02-18 15:39:58 +00:00
Alex Morask
5161a232f5 [PM-29055] Remove pm-25379-use-new-organization-metadata-structure feature flag (#18848)
Remove the fully-enabled feature flag and simplify the billing metadata
API to always use the vNext endpoints. The legacy API path is removed
since the server will no longer serve it.

- Remove FeatureFlag.PM25379_UseNewOrganizationMetadataStructure enum and default
- Delete legacy getOrganizationBillingMetadata() API method (old /billing/metadata path)
- Rename vNext methods to remove VNext suffix
- Simplify OrganizationMetadataService to always use cached vNext path
- Remove ConfigService dependency from OrganizationMetadataService
- Update tests to remove feature flag branching
2026-02-18 09:06:10 -06:00
bitwarden-devops-bot
51731c1526 Bumped client version(s) 2026-02-18 14:32:21 +00:00
Isaiah Inuwa
cf5e194639 [BRE-1621] Fix Appx Release (#19043)
* Revert to electron-builder appx manifest template
* Remove comments
* Remove unnecessary namespaces
* Re-include Tamil translation files
* Reinstate bitwarden protocol handler
* Set minimum version to Windows 10 2016 Anniversary Update

* Fix spacing
2026-02-18 06:57:29 -06:00
Bernd Schoolmann
1f911c09d0 Fix non-relative imports (#19022) 2026-02-18 09:32:08 +01:00
Alex
03340aee71 [PM-31163] stabilize table column widths with fixed layout (#18708)
* stabilize table column widths with fixed layout (PM-31163)

Add layout="fixed" and explicit width classes to report tables to prevent
column widths from shifting during virtual scroll.

Files changed:
- weak-passwords-report.component.html
- reused-passwords-report.component.html
- exposed-passwords-report.component.html
- inactive-two-factor-report.component.html
- unsecured-websites-report.component.html

* use auto width for name column to fix width calculation (PM-31163)

  Remove tw-w-1/2 from name column headers. With layout="fixed", the
  explicit percentages didn't sum to 100%, causing inconsistent column widths.

  Before: | 48px | 50% | 25% | 25% | = 48px + 100% (overflow)
  After:  | 48px | auto | 25% | 25% | = columns sum correctly

  Name column now uses auto to fill remaining space.

* render headers in Admin Console to fix column widths (PM-31163)

  Admin Console reports had a very wide icon column because no headers were
  rendered. Without headers, table-layout: fixed uses data row content to
  determine column widths, causing inconsistent sizing.

  Root cause:
  Three reports had their entire <ng-container header> block inside
  @if (!isAdminConsoleActive), so when isAdminConsoleActive=true (Admin
  Console), no headers were rendered at all.

  Before (broken):
    @if (!isAdminConsoleActive) {
      <ng-container header>        <!-- Entire header skipped in Admin Console -->
        <th>Icon</th>
        <th>Name</th>
        <th>Owner</th>
      </ng-container>
    }

  After (fixed):
    <ng-container header>          <!-- Always render headers -->
      <th>Icon</th>
      <th>Name</th>
      @if (!isAdminConsoleActive) {
        <th>Owner</th>             <!-- Only Owner is conditional -->
      }
    </ng-container>

  This matches the pattern already used by weak-passwords-report and
  exposed-passwords-report, which were working correctly.

  Files changed:
  - unsecured-websites-report.component.html
  - reused-passwords-report.component.html
  - inactive-two-factor-report.component.html

  Result:
  - Admin Console now renders headers with correct column widths
  - Icon column is 48px (tw-w-12) as expected
  - Owner column properly hidden in Admin Console view

* truncate long item names to prevent column overflow

- you can hover cursor for tooltip to see full name
2026-02-17 20:31:08 -08:00
Alex
ec33ea4f3c [PM-27782] Update Access Intelligence loading state text (#18808)
* [PM-27782] Update Access Intelligence loading state text

  Simplify the loading progress messages shown during Access Intelligence
  report generation to be more user-friendly and concise.

  Changes:
  - Add new i18n keys with simplified text
  - Update ProgressStepConfig to use new keys

  Progress message updates:
  - "Fetching member data..." → "Reviewing member data..."
  - "Analyzing password health..." → "Analyzing passwords..."
  - "Calculating risk scores..." → "Calculating risks..."
  - "Generating report data..." → "Generating reports..."
  - "Saving report..." → "Compiling insights..."
  - "Compiling insights..." → "Done!"

* delete old messages

* remove all "this might take a few minutes"
2026-02-17 20:29:41 -08:00
Jordan Aasen
ff775c7bbc fix click on "Fill" text (#19047) 2026-02-17 16:43:37 -08:00
Jordan Aasen
24c3b8fb2b fix autofill on click behavior (#19046) 2026-02-17 16:43:23 -08:00
Dave
e262441999 [PM-31088] saltForUser should emit salt from master password unlock data (#18976)
* feat(salt-for-user) [PM-31088]: Add feature flag for saltForUser.

* feat(salt-for-user) [PM-31088]: Flag saltForUser logic to return unlockdata.salt or emailToSalt.

* test(salt-for-user) [PM-31088]: Update tests to include coverage for new behavior.
2026-02-17 17:43:00 -05:00
John Harrington
9f18a68707 remove unwanted text and place wanted in bit-hint (#18989) 2026-02-17 14:10:55 -07:00
SmithThe4th
61326979b9 Updated delete attachment to conform with the server side changes (#19014) 2026-02-17 16:07:14 -05:00
bitwarden-devops-bot
e760b1c923 Bumped client version(s) 2026-02-17 20:45:06 +00:00
aj-bw
044db949fa remove release draft key for DAS test enablement (#19035) 2026-02-17 15:06:48 -05:00
Brandon Treston
8a670f1731 fix circular dependency (#19023) 2026-02-17 14:05:14 -05:00
rr-bw
4a651fbfb3 refactor(input-password-flows) [Auth/PM-27086] Use new KM Data Types in InputPasswordComponent flows - TDE & Permission User (#18400)
Updates the SetInitialPasswordService TDE + Permission user flow to use the new KM data types:
- `MasterPasswordAuthenticationData`
- `MasterPasswordUnlockData`
This allows us to move away from the deprecated `makeMasterKey()` method (which takes email as salt) as we seek to eventually separate the email from the salt.

The new `setInitialPasswordTdeUserWithPermission()` method essentially takes the existing deprecated `setInitialPassword()` method and:
- Removes logic that is specific to a `JIT_PROVISIONED_MP_ORG_USER` case. This way the method only handles `TDE_ORG_USER_RESET_PASSWORD_PERMISSION_REQUIRES_MP` cases.
- Updates the logic to use `MasterPasswordAuthenticationData` and `MasterPasswordUnlockData`

Behind feature flag: `pm-27086-update-authentication-apis-for-input-password`
2026-02-17 10:44:21 -08:00
SmithThe4th
3715ed1441 Assign Vault team ownership of shared onboarding components via CODEOWNERS (#19016) 2026-02-17 12:14:09 -05:00
Nik Gilmore
e8df377ba1 [PM-30735] Fix bug causing ciphers not to load under certain circumstances. (#18895) 2026-02-17 09:10:39 -08:00
Mike Amirault
c0e9678c06 [PM-31770] Fix Send expires text formatting (#18926)
* [PM-31770] Fix Send expires text formatting

* Address PR review comments
2026-02-17 10:49:30 -05:00
Bernd Schoolmann
c47881624a Fix types in auth-request abstraction (#19021)
* Fix types in auth-request abstraction

* Fix firefox build
2026-02-17 10:43:41 -05:00
Brandon Treston
c2b89608ae fix missing provider (#18974) 2026-02-17 10:07:08 -05:00
bmbitwarden
ef786225c9 PM-18607 reimplemented errorOnUnknownProperties (#18922)
* PM-18607 reimplemented errorOnUnknownProperties

* claude review

* claude review

---------

Co-authored-by: John Harrington <84741727+harr1424@users.noreply.github.com>
2026-02-16 19:37:36 -05:00
John Harrington
728eab3dab set auth to false for anon file send access (#18978) 2026-02-16 15:55:03 -07:00
John Harrington
5623568a2f [PM-31620] Browser - Incorrect "Copy link" message when Send is shared with specific people (#18982)
* add existing Send creation messages to browser

* remove unused method and associated tests
2026-02-16 15:54:22 -07:00
John Harrington
c415beb653 add password specific header (#18988) 2026-02-16 15:53:46 -07:00
Bernd Schoolmann
460b9ccb67 Fix high CPU usage on flatpak (#19006) 2026-02-16 12:42:56 +01:00
bw-ghapp[bot]
22a6fb1e6d Autosync the updated translations (#19009)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-02-16 11:42:43 +01:00
bw-ghapp[bot]
eb4b5721a6 Autosync the updated translations (#19007)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-02-16 10:36:54 +00:00
bw-ghapp[bot]
8620a2d7e4 Autosync the updated translations (#19008)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2026-02-16 04:36:42 -06:00
renovate[bot]
470f91ae57 [deps]: Update dtolnay/rust-toolchain digest to efa25f7 (#18997)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 04:10:07 -06:00
SmithThe4th
8bd1e5a855 [PM-30580] Add encryptMany to SDK for batch cipher encryption (#18942)
* Migrated encrypt many to the sdk

* removed comment

* updated sdk package
2026-02-13 23:13:41 +00:00
SmithThe4th
2297082b1a [PM-31668] Race condition in cipher cache clearing causes stale failed decryption state after leaving organization (#18941)
* Refactored the search index to index with the cipherlistview

* Fixed comment

* clear encrypted cipher state to prevent stale emissions during sync

* skip decrypt call when cipher arry is emoty during sync
2026-02-13 16:46:29 -05:00
John Harrington
f5b1be7e62 add dynamic EV headers (#18949) 2026-02-13 14:14:31 -07:00