From 1baed4dea8992081cf3456bdd74c624766cf668c Mon Sep 17 00:00:00 2001 From: Derek Nance Date: Thu, 22 Jan 2026 15:12:15 -0600 Subject: [PATCH 1/6] [PM-30470] Revert to using X11 on Linux desktop (#18465) --- apps/desktop/resources/linux-wrapper.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/desktop/resources/linux-wrapper.sh b/apps/desktop/resources/linux-wrapper.sh index 3c5d16c3a3d..e1cb69274d7 100644 --- a/apps/desktop/resources/linux-wrapper.sh +++ b/apps/desktop/resources/linux-wrapper.sh @@ -12,9 +12,13 @@ if [ -e "/usr/lib/x86_64-linux-gnu/libdbus-1.so.3" ]; then export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libdbus-1.so.3" fi +# A bug in Electron 39 (which now enables Wayland by default) causes a crash on +# systems using Wayland with hardware acceleration. Platform decided to +# configure Electron to use X11 (with an opt-out) until the upstream bug is +# fixed. The follow-up task is https://bitwarden.atlassian.net/browse/PM-31080. PARAMS="--enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform-hint=auto" -if [ "$USE_X11" = "true" ]; then - PARAMS="" +if [ "$USE_X11" != "false" ]; then + PARAMS="--ozone-platform=x11" fi $APP_PATH/bitwarden-app $PARAMS "$@" From a9d8edc52ccdeec6d3d46df880ed8856344e40a2 Mon Sep 17 00:00:00 2001 From: Nick Krantz <125900171+nick-livefront@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:20:53 -0600 Subject: [PATCH 2/6] [PM-28749] Desktop Transfer Items (#18410) * add transfer items prompt to desktop * add transfer service to vault v3 --- .../desktop/src/vault/app/vault-v3/vault.component.ts | 11 +++++++++++ .../desktop/src/vault/app/vault/vault-v2.component.ts | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/apps/desktop/src/vault/app/vault-v3/vault.component.ts b/apps/desktop/src/vault/app/vault-v3/vault.component.ts index c104f76ff2d..a64830c3b5d 100644 --- a/apps/desktop/src/vault/app/vault-v3/vault.component.ts +++ b/apps/desktop/src/vault/app/vault-v3/vault.component.ts @@ -79,6 +79,8 @@ import { VaultFilter, VaultFilterServiceAbstraction as VaultFilterService, RoutedVaultFilterBridgeService, + VaultItemsTransferService, + DefaultVaultItemsTransferService, } from "@bitwarden/vault"; import { SearchBarService } from "../../../app/layout/search/search-bar.service"; @@ -130,6 +132,7 @@ const BroadcasterSubscriptionId = "VaultComponent"; provide: COPY_CLICK_LISTENER, useExisting: VaultComponent, }, + { provide: VaultItemsTransferService, useClass: DefaultVaultItemsTransferService }, ], }) export class VaultComponent implements OnInit, OnDestroy, CopyClickListener { @@ -214,6 +217,7 @@ export class VaultComponent implements OnInit, OnDestroy, CopyClickListener { private archiveCipherUtilitiesService: ArchiveCipherUtilitiesService, private routedVaultFilterBridgeService: RoutedVaultFilterBridgeService, private vaultFilterService: VaultFilterService, + private vaultItemTransferService: VaultItemsTransferService, ) {} async ngOnInit() { @@ -266,6 +270,11 @@ export class VaultComponent implements OnInit, OnDestroy, CopyClickListener { if (this.vaultItemsComponent) { await this.vaultItemsComponent.refresh().catch(() => {}); } + if (this.activeUserId) { + void this.vaultItemTransferService.enforceOrganizationDataOwnership( + this.activeUserId, + ); + } break; case "modalShown": this.showingModal = true; @@ -372,6 +381,8 @@ export class VaultComponent implements OnInit, OnDestroy, CopyClickListener { .subscribe((collections) => { this.filteredCollections = collections; }); + + void this.vaultItemTransferService.enforceOrganizationDataOwnership(this.activeUserId); } ngOnDestroy() { diff --git a/apps/desktop/src/vault/app/vault/vault-v2.component.ts b/apps/desktop/src/vault/app/vault/vault-v2.component.ts index c1ab9d6f22a..efbdee97798 100644 --- a/apps/desktop/src/vault/app/vault/vault-v2.component.ts +++ b/apps/desktop/src/vault/app/vault/vault-v2.component.ts @@ -92,6 +92,8 @@ import { PasswordRepromptService, CipherFormComponent, ArchiveCipherUtilitiesService, + VaultItemsTransferService, + DefaultVaultItemsTransferService, } from "@bitwarden/vault"; import { NavComponent } from "../../../app/layout/nav.component"; @@ -150,6 +152,7 @@ const BroadcasterSubscriptionId = "VaultComponent"; provide: COPY_CLICK_LISTENER, useExisting: VaultV2Component, }, + { provide: VaultItemsTransferService, useClass: DefaultVaultItemsTransferService }, ], }) export class VaultV2Component @@ -264,6 +267,7 @@ export class VaultV2Component private policyService: PolicyService, private archiveCipherUtilitiesService: ArchiveCipherUtilitiesService, private masterPasswordService: MasterPasswordServiceAbstraction, + private vaultItemTransferService: VaultItemsTransferService, ) {} async ngOnInit() { @@ -317,6 +321,11 @@ export class VaultV2Component .catch(() => {}); await this.vaultFilterComponent.reloadOrganizations().catch(() => {}); } + if (this.activeUserId) { + void this.vaultItemTransferService.enforceOrganizationDataOwnership( + this.activeUserId, + ); + } break; case "modalShown": this.showingModal = true; @@ -420,6 +429,8 @@ export class VaultV2Component .subscribe((collections) => { this.allCollections = collections; }); + + void this.vaultItemTransferService.enforceOrganizationDataOwnership(this.activeUserId); } ngOnDestroy() { From daacff888d5da3cb6eae4dedf258377440c44f7f Mon Sep 17 00:00:00 2001 From: Bryan Cunningham Date: Thu, 22 Jan 2026 16:55:35 -0500 Subject: [PATCH 3/6] [CL-1020] background color updates (#18417) * Adding new background colors * add sidenav color variables * fix admin console text color * update sidenav logos to use correct fill color * update nav logo focus ring color --- libs/assets/src/svg/svgs/admin-console.ts | 4 +-- libs/assets/src/svg/svgs/password-manager.ts | 4 +-- libs/assets/src/svg/svgs/provider-portal.ts | 4 +-- libs/assets/src/svg/svgs/secrets-manager.ts | 4 +-- libs/assets/src/svg/svgs/shield.ts | 4 +-- .../src/icon-button/icon-button.component.ts | 4 +-- .../src/navigation/nav-group.component.html | 2 +- .../src/navigation/nav-item.component.html | 16 ++++++------ .../src/navigation/nav-item.component.ts | 2 +- .../src/navigation/nav-logo.component.html | 2 +- .../src/navigation/side-nav.component.html | 12 ++++----- libs/components/src/tw-theme.css | 26 +++++++++++++++++++ libs/components/tailwind.config.base.js | 15 +++++++---- 13 files changed, 65 insertions(+), 34 deletions(-) diff --git a/libs/assets/src/svg/svgs/admin-console.ts b/libs/assets/src/svg/svgs/admin-console.ts index 83c8cf9f0e1..3e8f47ec4a5 100644 --- a/libs/assets/src/svg/svgs/admin-console.ts +++ b/libs/assets/src/svg/svgs/admin-console.ts @@ -2,13 +2,13 @@ import { svgIcon } from "../icon-service"; const AdminConsoleLogo = svgIcon` - + - + diff --git a/libs/assets/src/svg/svgs/password-manager.ts b/libs/assets/src/svg/svgs/password-manager.ts index 17b6f148be3..5b19562e022 100644 --- a/libs/assets/src/svg/svgs/password-manager.ts +++ b/libs/assets/src/svg/svgs/password-manager.ts @@ -2,13 +2,13 @@ import { svgIcon } from "../icon-service"; const PasswordManagerLogo = svgIcon` - + - + diff --git a/libs/assets/src/svg/svgs/provider-portal.ts b/libs/assets/src/svg/svgs/provider-portal.ts index 51c04e1553b..fad2ce6b864 100644 --- a/libs/assets/src/svg/svgs/provider-portal.ts +++ b/libs/assets/src/svg/svgs/provider-portal.ts @@ -2,13 +2,13 @@ import { svgIcon } from "../icon-service"; const ProviderPortalLogo = svgIcon` - + - + diff --git a/libs/assets/src/svg/svgs/secrets-manager.ts b/libs/assets/src/svg/svgs/secrets-manager.ts index 27589e7e2f9..62b54174c55 100644 --- a/libs/assets/src/svg/svgs/secrets-manager.ts +++ b/libs/assets/src/svg/svgs/secrets-manager.ts @@ -2,13 +2,13 @@ import { svgIcon } from "../icon-service"; const SecretsManagerLogo = svgIcon` - + - + diff --git a/libs/assets/src/svg/svgs/shield.ts b/libs/assets/src/svg/svgs/shield.ts index 38d429604aa..af626a98e9d 100644 --- a/libs/assets/src/svg/svgs/shield.ts +++ b/libs/assets/src/svg/svgs/shield.ts @@ -3,11 +3,11 @@ import { svgIcon } from "../icon-service"; const BitwardenShield = svgIcon` - + - + diff --git a/libs/components/src/icon-button/icon-button.component.ts b/libs/components/src/icon-button/icon-button.component.ts index c7eb28fc086..3b5e01132a2 100644 --- a/libs/components/src/icon-button/icon-button.component.ts +++ b/libs/components/src/icon-button/icon-button.component.ts @@ -71,9 +71,9 @@ const styles: Record = { primary: ["!tw-text-primary-600", "focus-visible:before:tw-ring-primary-600", ...focusRing], danger: ["!tw-text-danger-600", "focus-visible:before:tw-ring-primary-600", ...focusRing], "nav-contrast": [ - "!tw-text-alt2", + "!tw-text-fg-sidenav-text", "hover:!tw-bg-hover-contrast", - "focus-visible:before:tw-ring-text-alt2", + "focus-visible:before:tw-ring-border-focus", ...focusRing, ], }; diff --git a/libs/components/src/navigation/nav-group.component.html b/libs/components/src/navigation/nav-group.component.html index 1790fea179a..d305f89063e 100644 --- a/libs/components/src/navigation/nav-group.component.html +++ b/libs/components/src/navigation/nav-group.component.html @@ -19,7 +19,7 @@