Commit Graph

21179 Commits

Author SHA1 Message Date
Stephon Brown
7e669a53bc
[PM-33787] [Defect] Enable Premium Users to Upgrade to Free Organization (#19611) 2026-03-19 16:52:10 -04:00
Mike Amirault
49e5f0a8c8
[PM-32160] Use shared Send List component in web (#19454)
* [PM-32160] Use shared Send List component in web

* Address AI review comments

* Surface errors on delete and remove password failures
2026-03-19 16:48:58 -04:00
John Harrington
4c9965a75f
[PM-33232] Update UX implemented in PM-33219 to resolve VULN-458 (#19514)
* send AuthType in request payload and allow empty email field

* re-introduce validation enforcing non-empty email field
2026-03-19 13:36:32 -07:00
Jason Ng
5ff9b64925
[PM-33199] update lint rules intro carousel (#19670) 2026-03-19 16:07:36 -04:00
Jason Ng
4a10aaa75e
[PM-33199] Intro Carousel Unit Tests and OnPush (#19396)
* add unit tests. add onPush. update spec to use router
2026-03-19 14:24:30 -04:00
rr-bw
411156aeaa
refactor(input-password-flows): [Auth/PM-27086] Use new KM Data Types in InputPasswordComponent flows - Change Password (#18507)
Updates the `ChangePasswordService` (`changePassword()` and `changePasswordForAccountRecovery()`) 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.

Also moves current password validation into the default and web change password services.

Behind feature flag: `pm-27086-update-authentication-apis-for-input-password`
2026-03-19 10:40:14 -07:00
Jordan Aasen
c117c20755
Revert "handle and parse errors messages for server errors in the browser (#19566)" (#19662)
This reverts commit 7318376528.
2026-03-19 10:01:38 -07:00
Leslie Tilton
5ee8f25490
Remove trend widget empty state storybook (#19659) 2026-03-19 11:58:01 -05:00
Jordan Aasen
50cc059943
Revert "[PM-33426 ] - add popup focus wrap directive (#19508)" (#19661)
This reverts commit e78eca7cdb.
2026-03-19 09:57:45 -07:00
Jared
5d29093644
[PM-31475] Resolves verbiage issues for design (#19610)
* Refactor user self-revocation message in event service and update localization string. The message now provides a clearer context for the action taken by the user.

* Update user self-revocation message in event service and add corresponding localization string. The new message enhances clarity regarding the user's action of declining organization ownership transfer.

* Update user self-revocation message to include user ID placeholder for improved clarity in localization. This change enhances the context of the user's action when self-revoking from an organization.
2026-03-19 12:35:41 -04:00
Mike Amirault
c93ff14d41
Add .nxignore to omit scripts (#19663) 2026-03-19 12:32:07 -04:00
Maciej Zieniuk
17ddfd2e20
remove pm-28813-data-recovery-tool feature flag (#19635) 2026-03-19 16:45:46 +01:00
Shane Melton
3233f6461f
[PM-33446] Ensure attachments are cleared on clone (#19644)
* [PM-33446] Ensure attachments are cleared on clone operation

* [PM-33446] Add unit test
2026-03-19 07:03:00 -07:00
neuronull
81adf155ee
SSH Agent v2: server framework (#19119)
Adds the basic framework for handling new client connections in the server.

Co-authored-by: Bernd Schoolmann <mail@quexten.com>
2026-03-19 07:48:50 -06:00
Andreas Coroiu
477b856519
[PM-31696] Create reverse proxy emulator (#19361)
* [PM-31696] Add reverse proxy emulator for load balancer cookie testing

Adds a local dev/QA tool that emulates AWS ELB authentication without
real AWS infrastructure. It gates all traffic behind a
BitwardenLoadBalancerCookie and serves a simple auth page to issue it,
enabling testing of the load balancer cookie bootstrap flow (PM-27124).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* [PM-31696] Replace http-proxy with Node.js built-ins

http-proxy has not been published in 6 years and uses the deprecated
util._extend API. Replace it with https.request + piping for HTTP and
tls.connect + socket piping for WebSocket, removing the dependency and
the --no-deprecation workaround entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* [PM-31696] Fix TLS verification for public backends

Extend the default CA bundle with the self-signed cert instead of
replacing it, so both localhost dev servers and public backends
(e.g. vault.bitwarden.com) are trusted without --insecure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* [PM-31696] Add cookie rotation via R keypress

Press R while the proxy is running to increment the cookie generation,
immediately invalidating all existing session cookies and forcing
clients to re-authenticate on their next request.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: tweak docs

* feat: improve error messages

* docs: update readme

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 07:56:48 -05:00
Derek Nance
ae17d53772
fix incorrect GNOME Snap tray icon (#19298)
Some checks failed
Scan / Check PR run (push) Has been cancelled
Testing / Run typechecking (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-browser junit:junit-browser.xml name:Browser paths:apps/browser bitwarden_license/bit-browser]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-cli junit:junit-cli.xml name:CLI paths:apps/cli bitwarden_license/bit-cli]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-desktop junit:junit-desktop.xml name:Desktop paths:apps/desktop]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-libs junit:junit-libs.xml name:Libs paths:libs bitwarden_license/bit-common]) (push) Has been cancelled
Testing / Run tests - ${{ matrix.test-group.name }} (map[artifact:jest-coverage-web junit:junit-web.xml name:Web paths:apps/web bitwarden_license/bit-web]) (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
Scan / Checkmarx (push) Has been cancelled
Scan / Sonar (push) Has been cancelled
Testing / Upload to Codecov (push) Has been cancelled
Testing / Run tests (push) Has been cancelled
2026-03-18 17:05:32 -05:00
Nik Gilmore
33d250a964
[PM-30825] Bugfix: Upload multiple attachments in a row to org cipher (#18957)
* Fix bug causing ciphers not to load under certain circumstances.

* Don't set admin flag for non-admin cipher attachment operations

* Use the same flag for getCipherAdmin as for calling Admin API

* Set 'edit' flag on admin
2026-03-18 15:00:23 -07:00
Tyler
9831e8a27a
BRE-1724 feat(chromium_importer): update certificate sha256 thumbprint (#19641) 2026-03-18 17:13:05 -04:00
Leslie Tilton
bfb47cc9da
Add TrendWidget Feature Work (#19639)
* [PM-27772] Add TrendWidget component with Chart.js implementation (#19078)

Add reusable TrendWidget component with Chart.js line chart for displaying risk trends over time in Access Intelligence.

- Configurable datetime/linear x-axis scales
- Theme-aware colors from design system (brand-700/400, gray-200/600)
- Full i18n support (10 new translation keys)
- Loading spinner and error state handling
- Proper Chart.js lifecycle management

* [PM-28530] Implement period selector UI component (#19162)

* feat(dirt): define TimePeriod type for risk-over-time period selector

Add const object type for 5 time periods (month, 3mo, 6mo, 12mo, all)
following ADR-0025 no-enum pattern. Includes PeriodOption interface
and PERIOD_OPTIONS config for rendering.

[PM-28530]

* feat(dirt): create PeriodSelectorComponent using bit-menu

Custom trigger button with bit-menu dropdown for risk-over-time
time period selection. No clear button, neutral styling matching
Figma design. Check icon marks current selection.

[PM-28530]

* feat(dirt): add barrel export for period selector

[PM-28530]

* feat(dirt): add i18n strings for period selector options

Add translation keys for time period labels: pastMonth, last3Months,
last6Months, last12Months, and timePeriod placeholder.

[PM-28530]

* feat(dirt): add Storybook stories for PeriodSelectorComponent

Stories for default state, pre-selected 3 months, and disabled state.

[PM-28530]

* test(dirt): add unit tests for PeriodSelectorComponent

Tests cover default state, period options with pre-translated labels,
selection changes, and selected label reactivity.

[PM-28530]

* feat(dirt): integrate PeriodSelector into TrendWidget component

Replace placeholder with dirt-period-selector dropdown. Add TimePeriod
to TrendWidgetTimespan mapping layer to bridge the two type systems.
Remove standalone Storybook story and disabled input per review feedback
— component now lives inside TrendWidget, not standalone.

[PM-28530]

* refactor(dirt): replace model() with signal() + output() for PeriodSelector

Switch from Angular's model() API to the signal() + output() pattern
used throughout the Access Intelligence module. This matches the
existing convention in TrendWidget (selectedTimespan/timespanChanged),
app-table-row-scrollable (checkboxChange/selectAllChange), and
review-applications-view (onToggleSelection/onToggleAll).

Changes:
- Replace model<TimePeriod>() with signal<TimePeriod>() for internal state
- Add explicit selectedPeriodChange output for parent notification
- Manual .emit() in selectPeriod() to match module convention
- Update test to verify output emission via subscribe spy

No functional change — both patterns emit selectedPeriodChange events.
The template binding (selectedPeriodChange)="..." is unchanged.

* refactor(dirt): update labels to match Figma and unify type system

Update period selector labels per Figma design:
- "Last 3 months" → "Past 3 months" (past3Months)
- "Last 6 months" → "Past 6 months" (past6Months)
- "Last 12 months" → "Past year" (pastYear)
- "All" → "All time" (allTime, new key — pre-existing "all" key untouched)

Rename TimePeriod const keys to match labels:
- Last3Months → Past3Months
- Last6Months → Past6Months
- Last12Months → PastYear
- All → AllTime
Wire values unchanged ("month", "3mo", "6mo", "12mo", "all") to
preserve server API compatibility.

Remove TrendWidgetTimespan entirely — TrendWidget now uses TimePeriod
directly for signals, outputs, and data model. Eliminates the temporary
mapping layer (timePeriodMap + onPeriodSelectorChange). Period selector
wires directly to onTimespanChange().

[PM-28530]

* [PM-28533] Add view selector to TrendWidget component (#19163)

Adds the view selector button group to the TrendWidget component. Hooks up to existing signal and emits events when the view mode is changed. In future development, the parent component of TrendWidget will need to handle these events to fetch updated chart data from the API.

View options are:

Applications
Passwords
Members

* Fix TimePeriod type errors in TrendWidget stories (#19239)

Replace invalid "past-month" string literals with TimePeriod.PastMonth
constant to match the TimePeriod type definition. The TimePeriod const
object uses "month" as the value for PastMonth, not "past-month".

* [PM-32056] Add feature flag for access intelligence trend chart (#19164)

* feat(dirt): add feature flag for access intelligence trend chart

Register the `pm-26961-access-intelligence-trend-chart` feature flag
to gate the upcoming TrendChart widget in the Activity tab. Default
is FALSE (disabled). PM-32057 will consume this flag when wiring up
the widget component.

[PM-32056]

* feat(dirt): read trend chart feature flag in activity component

Inject ConfigService into AllActivityComponent and read the
AccessIntelligenceTrendChart flag on init. This prepares the
component for the TrendChart widget to be conditionally rendered.

[PM-32056]

* feat(dirt): add conditional wrapper for trend chart widget

Add an @if block gated by the AccessIntelligenceTrendChart feature
flag in the Activity tab template. The TrendChart widget will be
placed inside this block when wired up.

[PM-32056]

* reset package files to main

* install chartjs using node v22

* add chartjs to dirt team deps (#19244)

* [PM-32055] Download TrendWidget chart to PNG and CSV (#19245)

This PR adds a download button to the TrendWidget component that supports downloading the "Risk over time" chart data as a PNG or in CSV format.

Logic to dynamically add a chart title and x/y axis labels is included. This required creating a service that recreates a copy of the chart with title and axis labels applied, in an off screen canvas element, and then exporting to blob for file download. This logic is owned by the ChartExportService.

* Fix readonly variables. Update chart variable to use signal

* Fix any type in test file

---------

Co-authored-by: Brad <44413459+lastbestdev@users.noreply.github.com>
Co-authored-by: Alex <55413326+AlexRubik@users.noreply.github.com>
Co-authored-by: Brad Deibert <bdeibert@bitwarden.com>
2026-03-18 16:04:04 -05:00
Shane Melton
e6d6deab9b
[PM-33446] Clear the cipher key when performing a clone operation (#19642) 2026-03-18 13:42:55 -07:00
Vicki League
2d0e79e9e5
[PM-33838][PM-33839] Bump Angular to next patch version (#19640) 2026-03-18 16:24:23 -04:00
Leslie Tilton
6c95b2482e
feat(access-intelligence): add V2 service layer abstractions and implementations (#19633) 2026-03-18 13:55:39 -05:00
Jordan Aasen
7318376528
handle and parse errors messages for server errors in the browser (#19566) 2026-03-18 10:26:25 -07:00
Addison Beck
662e4c7740
feat(platform): extract vaultUrl from /api/config response (#19469)
* feat(platform): extract vaultUrl from /api/config response

Updates DefaultConfigService to extract the vault URL from the server's
/api/config response and populate it in the ServerCommunicationConfig that
gets passed to the SDK.

The vaultUrl field is extracted from response.environment.vault using
optional chaining to safely handle cases where the environment field may
be undefined. This follows the TypeScript camelCase naming convention and
integrates with the SDK's vault_url parameter added in the previous SDK
commits.

This enables the SDK to receive an explicit vault URL for SSO cookie
acquisition redirects, which fixes two critical issues:
1. Port preservation: Prevents localhost:8000 being stripped to localhost
   in local development environments
2. Multi-subdomain routing: Ensures redirects use vault.bitwarden.com
   instead of api.bitwarden.com when the cookie domain differs from the
   vault hostname

The TypeScript interface definition will be added in the next commit to
complete type safety.

Refs: PM-33352

* fix(platform): add vaultUrl parameter to noop acquireCookies

Updates the NoopServerCommunicationConfigPlatformApiService implementation
to match the SDK's ServerCommunicationConfigPlatformApi trait interface
change from SDK PR #832.

The SDK's acquire_cookies() method now requires both hostname and
vault_url parameters. This commit adds the vaultUrl parameter to the
noop implementation's method signature to maintain TypeScript type
compatibility.

The noop service remains a no-op - it continues to return undefined
but now accepts the additional parameter that the SDK interface expects.
This prevents TypeScript compilation errors when the clients repo updates
to SDK version 0.2.0-main.580 or later.

Refs: PM-33352

* feat: update sdk

* fix: add missing vault_url to tests

* review: guard ssoCookieVendor on vaultUrl

Passing undefined for vaultUrl into the SDK's Rust
SsoCookieVendorConfig struct causes a panic at the WASM
boundary. Extract vaultUrl into a local variable and add a
null guard so that configs missing a vault URL fall back to
{ bootstrap: { type: "direct" } } instead of reaching the
SDK with an incomplete struct.

Update the existing ssoCookieVendor test to assert vaultUrl
in the expected output, and add a new case verifying the
direct fallback when environment is absent.

---------

Co-authored-by: Andreas Coroiu <andreas.coroiu@gmail.com>
2026-03-18 12:54:30 -04:00
Jordan Aasen
e78eca7cdb
[PM-33426 ] - add popup focus wrap directive (#19508)
* add popup focus wrap directive

* fix comment
2026-03-18 09:17:23 -07:00
Jonathan Prusik
a883fe5192
[PM-29525] Typefixes in services/autofill-overlay-content.service.ts (#19555)
* fix typing issues

* replace ts-strict-ignore for remaining work
2026-03-18 12:05:09 -04:00
Jonathan Prusik
aaf239a2c5
[PM-33568] Add Claude guidance on injected content script exceptions (#19559)
* add Claude guidance on injected content script exceptions

* update CODEOWNERS

* update CODEOWNERS

* remove high-level Claude guidance

* update CODEOWNERS

* execute PR feedback

* include all autofill content files in the rule
2026-03-18 12:04:29 -04:00
Maciej Zieniuk
5eaba22759
login and sync race condition. (#19474)
This happens because state returns hot observables. There is no guarantee for access token to be present when read, even though it was just written with `await firstValueFrom`. Causes sync to think the auth status for the user is logged out, even though that's false
2026-03-18 16:07:52 +01:00
Max
c60d9edcf5
fix(reports): skip malformed login ciphers and guard splice index in weak password report (#19627)
Co-authored-by: greedy7937 <258126311+greedy7937@users.noreply.github.com>
2026-03-18 15:40:08 +01:00
Leslie Tilton
e4dd535e4f
feat(access-intelligence): expand type guard infrastructure with EnhancedGuard pattern and V2 model validators (#19621) 2026-03-18 09:27:05 -05:00
Alex Morask
c73f1307a3
fix(pricing): display item-level discounts in cart-summary component (#19466) 2026-03-18 08:47:38 -05:00
Mike Amirault
008311fbc8
Improve logging for LastPass direct import (#19615) 2026-03-18 09:25:28 -04:00
Thomas Rittson
1545a9716e
[Autofill] Update event-related import statements (#19547)
Updates import statements in autofill-related files to use direct imports
instead of re-exported paths. This prepares for removal of re-exporting
files in a follow-up PR.

Part of PM-33381
2026-03-18 08:58:17 -04:00
Thomas Rittson
e11c72fe70
[DIRT] Update event-related import statements (#19549)
Updates import statements in DIRT-related files to use direct imports
instead of re-exported paths. This prepares for removal of re-exporting
files in a follow-up PR.

Part of PM-33381
2026-03-18 07:45:46 -05:00
Todd Martin
9744785a31
fix(environment): Handle unordered environment update events on logout
* Introduce check on user environment state

* Add additional check.

* Updated test comments.

* Added comment to explain change.
2026-03-17 22:05:11 -04:00
Justin Baur
5acb7c8503
[PM-19659] Add server-notifications README (#16203)
* Add `server-notifications` README

* Apply suggestions from code review

Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com>

* Formatting

* Docs update from feedback

* Update libs/common/src/platform/server-notifications/README.md

Co-authored-by: Derek Nance <dnance@bitwarden.com>

* Add and Fix links

---------

Co-authored-by: Todd Martin <106564991+trmartin4@users.noreply.github.com>
Co-authored-by: Derek Nance <dnance@bitwarden.com>
2026-03-17 20:03:28 -04:00
Thomas Avery
51c2ac2f16
[PM-31928] Cleanup backwards compatibility code in extension lock service (#19354)
* Cleanup backwards compatibility code in extension lock service

* Add unit test coverage
2026-03-17 18:02:58 -05:00
Dave
4ff3395754
[PM-29796] Parameter validation with pattern match (#19500)
* feat(accept-organization-component) [PM-29796]: Validate Id expected shape.

* feat(utils) [PM-29796]: Remove invalidUrlParams.

* feat(utils) [PM-29796]: Re-add URL pattern matching detection with updated naming and comments.

* feat(accept-organization) [PM-29796]: Update component handling for id validation.

* feat(utils) [PM-29796]: Improve pattern-matching on utils.

* comment(accept-organization) [PM-29796]: Add comments on handling pattern.

* comment(accept-organization) [PM-29796]: Comments around authedHandler handling.

* refactor(utils) [PM-29796]: One entry per line with trailing comments for Prettier.

* refactor(accept-organization) [PM-29796]: Abstract handleInvalidInvite to its own method.

* docs(utils) [PM-29796]: Add/ungroup comments on declared match patterns.

* test(utils) [PM-29796]: Update tests and comments.

---------

Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
2026-03-17 17:50:35 -04:00
Leslie Tilton
54f690df44
[PM-33797] AIV2: Standardize Models and Services: Models and Feature flag (#19612)
* feat(access-intelligence): add V2 data model family, feature flag, and encryption service abstraction

* fix(access-intelligence): remove premature services export from barrel
2026-03-17 16:50:23 -05:00
Jackson Engstrom
56ef1dd3f4
[PM-32180] Change when premium upgrade happens (#19593)
* adds premium-upsell service

* adds and updates tests

* changes name and type in test file

* fixes strict ts

* Update libs/angular/src/vault/services/premium-upsell.service.spec.ts

fix import

Co-authored-by: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com>

* change initial value and fix import order

---------

Co-authored-by: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com>
2026-03-17 14:11:04 -07:00
Will Martin
cf2ff5d85f
[CL-1088] only apply macOS extra top padding to nav logo in overlay mode (#19418)
* fix(uif): only apply macOS extra top padding to nav logo in overlay mode

The macOS extra top padding was unconditionally applied to the nav logo.
Now it only applies when the side nav is in overlay mode (open but not push mode).
2026-03-17 16:26:15 -04:00
Jared Snider
3adbfea82c
Auth/PM-33168 - Emergency Access - Add / Edit dialog - fix missing error toasts (#19412)
* PM-33168 - EmergencyAccess - Add / Edit dialog - add missing validation service call to show errors as toasts

* PM-33168 - Per PR feedback, remove catch and let bitSubmit handle logging and showing error.

* PM-32487 - EmergencyAccessAddEditComponent - clean up unused service
2026-03-17 14:38:49 -04:00
Daniel Riera
0071c3221e
WIP (#19423) 2026-03-17 11:56:21 -04:00
Daniel Riera
01ef859e97
[PM-29527]Remove @ts-strict-ignore in fido2.component.ts (#19464) 2026-03-17 10:30:49 -05:00
Todd Martin
73559a57d4
feat(workflow): [PM-32677] Add new workflow to create PR for sdk-internal update
* Add new workflow.

* Workflow lints

* More security fixes.

* Claude feedback.

* Don't make empty commit.

* Update job name.

* Updated node version check.

* Print environments.

* Addressed PR feedback.

* Removed concept of distingushing downgrade.

* Updated to reference specific run_id if triggered by one.

* Addressed Claude feedback.
2026-03-17 11:27:07 -04:00
Andreas Coroiu
300b920457
[PM-32248] [PM-32233] [PM-32235] Block links from opening in electron window (#19317)
* feat: block window creation from main web renderer

* feat: redirect safe urls to external browser

* [PM-32235] Block unsafe open external call with arbitrary web vault url argument (#19322)

* feat: add safe shell class with openExternal impl

* feat: add lint rule to avoid directy openExternal usage

* feat: replace all unsafe usages

* feat: allow multiple allow-lists

* feat: update usages

* chore: remove static version of function

* fix: additional usages

* fix: tests

* fix: construct arguments

* fix: lint

* feat: block insecure weburls
2026-03-17 15:42:20 +01:00
neuronull
ebbd9ed0ba
SSH Agent v2: define napi-agent-server interface (#18880)
Building upon the prior SSH agent v2 commits, this PR introduces the high level interfaces between the napi layer, the agent, and the underlying server.

Two traits are defined to act as abstraction layers:

AuthPolicy allows the underlying server to externally request authorization to complete the various ssh operation requests it receives. The implementation of this in the BitwardenSshAgent is effectively the agent's business logic, and has unit tests accordingly.

ApprovalRequester allows the agent to externally request approval for those authorization requests.

These interfaces allow better unit test-ability and integration test-ability, and additionally are context-independent from each other; meaning the ssh agent server doesn't know about vault items, or that there is an electron app at all. Similarly, the agent knows it needs to request approval, but it doesn't have to be from an Electron app.

Co-authored-by: Bernd Schoolmann <mail@quexten.com>
2026-03-17 08:38:40 -06:00
Bernd Schoolmann
e97450abba
chore: bump sdk-internal to 0.2.0-main.608 (#19587)
* chore: bump @bitwarden/sdk-internal to 0.2.0-main.608

* [PM-30584] Move key-connector migration to sdk (#19360)

* Move key-connector migration to sdk

* Remove unused import

* Fix DI

* Fix dependencies on cli

* Fix types

* Fix import order

* fix tests

* Remove unused import

* Rename feature flag
2026-03-17 08:24:44 -05:00
Daniel James Smith
255a4ae4e5
Let tldts check for invalid characters within URI/hostname (#19415)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2026-03-17 14:09:31 +01:00
Matt Andreko
eaf410f01f
Add publisherName to Electron build process (#19591)
* PM-33717 - Add publisherName to Electron build
2026-03-17 07:44:56 -04:00