diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 187f500828c..4b956fd577a 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -131,6 +131,7 @@ apps/web/src/translation-constants.ts @bitwarden/team-platform-dev
.github/workflows/version-auto-bump.yml @bitwarden/team-platform-dev
# ESLint custom rules
libs/eslint @bitwarden/team-platform-dev
+libs/eslint/components @bitwarden/team-ui-foundation
# Typescript tooling
tsconfig.base.json @bitwarden/team-platform-dev
nx.json @bitwarden/team-platform-dev
diff --git a/.github/renovate.json5 b/.github/renovate.json5
index 906bbbd7125..e646049c3d6 100644
--- a/.github/renovate.json5
+++ b/.github/renovate.json5
@@ -197,6 +197,7 @@
"nx",
"oo7",
"oslog",
+ "parse5",
"pin-project",
"pkg",
"postcss",
diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json
index fc708ba9790..b33378458d1 100644
--- a/apps/browser/src/_locales/en/messages.json
+++ b/apps/browser/src/_locales/en/messages.json
@@ -4134,15 +4134,11 @@
"selectImportCollection": {
"message": "Select a collection"
},
- "importTargetHint": {
- "message": "Select this option if you want the imported file contents moved to a $DESTINATION$",
- "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.",
- "placeholders": {
- "destination": {
- "content": "$1",
- "example": "folder or collection"
- }
- }
+ "importTargetHintCollection": {
+ "message": "Select this option if you want the imported file contents moved to a collection"
+ },
+ "importTargetHintFolder": {
+ "message": "Select this option if you want the imported file contents moved to a folder"
},
"importUnassignedItemsError": {
"message": "File contains unassigned items."
@@ -5582,5 +5578,9 @@
},
"showLess": {
"message": "Show less"
+ },
+ "moreBreadcrumbs": {
+ "message": "More breadcrumbs",
+ "description": "This is used in the context of a breadcrumb navigation, indicating that there are more items in the breadcrumb trail that are not currently displayed."
}
}
diff --git a/apps/browser/src/autofill/popup/settings/blocked-domains.component.html b/apps/browser/src/autofill/popup/settings/blocked-domains.component.html
index 8156525301b..6a08b4483af 100644
--- a/apps/browser/src/autofill/popup/settings/blocked-domains.component.html
+++ b/apps/browser/src/autofill/popup/settings/blocked-domains.component.html
@@ -30,7 +30,7 @@
diff --git a/apps/browser/src/vault/popup/components/vault-v2/view-v2/view-v2.component.html b/apps/browser/src/vault/popup/components/vault-v2/view-v2/view-v2.component.html
index 8c76db600ae..9b8380a4214 100644
--- a/apps/browser/src/vault/popup/components/vault-v2/view-v2/view-v2.component.html
+++ b/apps/browser/src/vault/popup/components/vault-v2/view-v2/view-v2.component.html
@@ -33,7 +33,7 @@
type="button"
buttonType="danger"
bitIconButton="bwi-trash"
- [appA11yTitle]="(cipher.isDeleted ? 'deleteForever' : 'delete') | i18n"
+ [label]="(cipher.isDeleted ? 'deleteForever' : 'delete') | i18n"
>
diff --git a/apps/browser/src/vault/popup/settings/folders-v2.component.html b/apps/browser/src/vault/popup/settings/folders-v2.component.html
index 8cea05f9c17..b36b5affc23 100644
--- a/apps/browser/src/vault/popup/settings/folders-v2.component.html
+++ b/apps/browser/src/vault/popup/settings/folders-v2.component.html
@@ -25,7 +25,7 @@
slot="end"
type="button"
(click)="openAddEditFolderDialog(folder)"
- [appA11yTitle]="'editFolderWithName' | i18n: folder.name"
+ [label]="'editFolderWithName' | i18n: folder.name"
bitIconButton="bwi-pencil-square"
class="tw-self-end"
data-testid="edit-folder-button"
diff --git a/apps/browser/src/vault/popup/settings/trash-list-items-container/trash-list-items-container.component.html b/apps/browser/src/vault/popup/settings/trash-list-items-container/trash-list-items-container.component.html
index 11ed2674178..d1e70390844 100644
--- a/apps/browser/src/vault/popup/settings/trash-list-items-container/trash-list-items-container.component.html
+++ b/apps/browser/src/vault/popup/settings/trash-list-items-container/trash-list-items-container.component.html
@@ -37,8 +37,7 @@
type="button"
bitIconButton="bwi-ellipsis-v"
size="small"
- [attr.aria-label]="'moreOptionsLabel' | i18n: cipher.name"
- [title]="'moreOptionsTitle' | i18n: cipher.name"
+ [label]="'moreOptionsLabel' | i18n: cipher.name"
[bitMenuTriggerFor]="moreOptions"
>
diff --git a/apps/cli/src/platform/services/cli-platform-utils.service.ts b/apps/cli/src/platform/services/cli-platform-utils.service.ts
index 7bed495bbf5..9e02b9dcca9 100644
--- a/apps/cli/src/platform/services/cli-platform-utils.service.ts
+++ b/apps/cli/src/platform/services/cli-platform-utils.service.ts
@@ -75,7 +75,7 @@ export class CliPlatformUtilsService implements PlatformUtilsService {
return false;
}
- isViewOpen() {
+ isPopupOpen() {
return Promise.resolve(false);
}
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 37650c08b95..42eb7017e03 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -1,7 +1,7 @@
{
"name": "@bitwarden/desktop",
"description": "A secure and free password manager for all of your devices.",
- "version": "2025.8.0",
+ "version": "2025.8.1",
"keywords": [
"bitwarden",
"password",
diff --git a/apps/desktop/src/app/app.component.ts b/apps/desktop/src/app/app.component.ts
index 04651ed0c10..197290cf690 100644
--- a/apps/desktop/src/app/app.component.ts
+++ b/apps/desktop/src/app/app.component.ts
@@ -62,7 +62,7 @@ import { MessagingService } from "@bitwarden/common/platform/abstractions/messag
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { SystemService } from "@bitwarden/common/platform/abstractions/system.service";
-import { NotificationsService } from "@bitwarden/common/platform/notifications";
+import { ServerNotificationsService } from "@bitwarden/common/platform/server-notifications";
import { StateEventRunnerService } from "@bitwarden/common/platform/state";
import { SyncService } from "@bitwarden/common/platform/sync";
import { UserId } from "@bitwarden/common/types/guid";
@@ -155,7 +155,7 @@ export class AppComponent implements OnInit, OnDestroy {
private messagingService: MessagingService,
private collectionService: CollectionService,
private searchService: SearchService,
- private notificationsService: NotificationsService,
+ private notificationsService: ServerNotificationsService,
private platformUtilsService: PlatformUtilsService,
private systemService: SystemService,
private processReloadService: ProcessReloadServiceAbstraction,
diff --git a/apps/desktop/src/app/services/init.service.ts b/apps/desktop/src/app/services/init.service.ts
index 2c68821b6c7..6b511ff366d 100644
--- a/apps/desktop/src/app/services/init.service.ts
+++ b/apps/desktop/src/app/services/init.service.ts
@@ -13,7 +13,7 @@ import { I18nService as I18nServiceAbstraction } from "@bitwarden/common/platfor
import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import { SdkLoadService } from "@bitwarden/common/platform/abstractions/sdk/sdk-load.service";
import { StateService as StateServiceAbstraction } from "@bitwarden/common/platform/abstractions/state.service";
-import { NotificationsService } from "@bitwarden/common/platform/notifications";
+import { ServerNotificationsService } from "@bitwarden/common/platform/server-notifications";
import { ContainerService } from "@bitwarden/common/platform/services/container.service";
import { MigrationRunner } from "@bitwarden/common/platform/services/migration-runner";
import { UserAutoUnlockKeyService } from "@bitwarden/common/platform/services/user-auto-unlock-key.service";
@@ -38,7 +38,7 @@ export class InitService {
private i18nService: I18nServiceAbstraction,
private eventUploadService: EventUploadServiceAbstraction,
private twoFactorService: TwoFactorServiceAbstraction,
- private notificationsService: NotificationsService,
+ private notificationsService: ServerNotificationsService,
private platformUtilsService: PlatformUtilsServiceAbstraction,
private stateService: StateServiceAbstraction,
private keyService: KeyServiceAbstraction,
diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json
index e190ad8c5ae..276c0c435f2 100644
--- a/apps/desktop/src/locales/en/messages.json
+++ b/apps/desktop/src/locales/en/messages.json
@@ -3494,15 +3494,11 @@
"selectImportCollection": {
"message": "Select a collection"
},
- "importTargetHint": {
- "message": "Select this option if you want the imported file contents moved to a $DESTINATION$",
- "description": "Located as a hint under the import target. Will be appended by either folder or collection, depending if the user is importing into an individual or an organizational vault.",
- "placeholders": {
- "destination": {
- "content": "$1",
- "example": "folder or collection"
- }
- }
+ "importTargetHintCollection": {
+ "message": "Select this option if you want the imported file contents moved to a collection"
+ },
+ "importTargetHintFolder": {
+ "message": "Select this option if you want the imported file contents moved to a folder"
},
"importUnassignedItemsError": {
"message": "File contains unassigned items."
@@ -4080,5 +4076,9 @@
},
"enableAutotypeDescription": {
"message": "Bitwarden does not validate input locations, be sure you are in the right window and field before using the shortcut."
+ },
+ "moreBreadcrumbs": {
+ "message": "More breadcrumbs",
+ "description": "This is used in the context of a breadcrumb navigation, indicating that there are more items in the breadcrumb trail that are not currently displayed."
}
}
diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json
index 44ee6ec862d..6daff35e115 100644
--- a/apps/desktop/src/package-lock.json
+++ b/apps/desktop/src/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bitwarden/desktop",
- "version": "2025.8.0",
+ "version": "2025.8.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bitwarden/desktop",
- "version": "2025.8.0",
+ "version": "2025.8.1",
"license": "GPL-3.0",
"dependencies": {
"@bitwarden/desktop-napi": "file:../desktop_native/napi"
diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json
index ffe70bb7bd7..ea2e8affda2 100644
--- a/apps/desktop/src/package.json
+++ b/apps/desktop/src/package.json
@@ -2,7 +2,7 @@
"name": "@bitwarden/desktop",
"productName": "Bitwarden",
"description": "A secure and free password manager for all of your devices.",
- "version": "2025.8.0",
+ "version": "2025.8.1",
"author": "Bitwarden Inc. (https://bitwarden.com)",
"homepage": "https://bitwarden.com",
"license": "GPL-3.0",
diff --git a/apps/desktop/src/platform/services/electron-platform-utils.service.ts b/apps/desktop/src/platform/services/electron-platform-utils.service.ts
index 43b867b7a68..23fb29e932a 100644
--- a/apps/desktop/src/platform/services/electron-platform-utils.service.ts
+++ b/apps/desktop/src/platform/services/electron-platform-utils.service.ts
@@ -59,7 +59,7 @@ export class ElectronPlatformUtilsService implements PlatformUtilsService {
return ipc.platform.isMacAppStore;
}
- isViewOpen(): Promise {
+ isPopupOpen(): Promise {
return Promise.resolve(false);
}
diff --git a/apps/web/src/404.html b/apps/web/src/404.html
index 1a01aee40c7..b3b5a5713ca 100644
--- a/apps/web/src/404.html
+++ b/apps/web/src/404.html
@@ -15,23 +15,206 @@
-
-
+
+
+
+
+
Sorry, this page isn't available.
-
-
Sorry, this page isn't available.
+
+ The link you followed may be broken, or the page may have been removed. Try going back to
+ the previous page or see our
+ Help Center
+ for more information.
+
- The link you followed may be broken, or the page may have been removed. Try going back to
- the previous page or see our
- Help Center for
- more information.
-