Date: Mon, 25 Aug 2025 15:37:09 -0400
Subject: [PATCH 037/167] fix icon spacing (#16147)
---
.../admin-console/organizations/members/members.component.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/web/src/app/admin-console/organizations/members/members.component.html b/apps/web/src/app/admin-console/organizations/members/members.component.html
index 7e0aa465bf3..cc475009700 100644
--- a/apps/web/src/app/admin-console/organizations/members/members.component.html
+++ b/apps/web/src/app/admin-console/organizations/members/members.component.html
@@ -326,7 +326,7 @@
- |
+ |
Date: Mon, 25 Aug 2025 16:24:50 -0400
Subject: [PATCH 038/167] fix permission order (#16148)
---
.../components/access-selector/access-selector.models.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts b/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts
index 884483d32b0..45691ae98d6 100644
--- a/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts
+++ b/apps/web/src/app/admin-console/organizations/shared/components/access-selector/access-selector.models.ts
@@ -87,10 +87,10 @@ export type Permission = {
export const getPermissionList = (): Permission[] => {
const permissions = [
- { perm: CollectionPermission.View, labelId: "viewItems" },
{ perm: CollectionPermission.ViewExceptPass, labelId: "viewItemsHidePass" },
- { perm: CollectionPermission.Edit, labelId: "editItems" },
+ { perm: CollectionPermission.View, labelId: "viewItems" },
{ perm: CollectionPermission.EditExceptPass, labelId: "editItemsHidePass" },
+ { perm: CollectionPermission.Edit, labelId: "editItems" },
{ perm: CollectionPermission.Manage, labelId: "manageCollection" },
];
From ae2259db2f221ecccee30fb7441fc62545d1ed91 Mon Sep 17 00:00:00 2001
From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com>
Date: Mon, 25 Aug 2025 14:07:22 -0700
Subject: [PATCH 039/167] [PM-17723] - [Web | Browser | Desktop] Cannot search
for port in vault login item URI (#15962)
* add port search in uriExtractor
* revert to original check
---
.../src/vault/services/search.service.ts | 27 ++++++++++++++++---
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/libs/common/src/vault/services/search.service.ts b/libs/common/src/vault/services/search.service.ts
index cb6ac4a0ed4..041f978f4ea 100644
--- a/libs/common/src/vault/services/search.service.ts
+++ b/libs/common/src/vault/services/search.service.ts
@@ -426,11 +426,30 @@ export class SearchService implements SearchServiceAbstraction {
if (u.uri == null || u.uri === "") {
return;
}
- if (u.hostname != null) {
- uris.push(u.hostname);
- return;
- }
+
+ // Match ports
+ const portMatch = u.uri.match(/:(\d+)(?:[/?#]|$)/);
+ const port = portMatch?.[1];
+
let uri = u.uri;
+
+ if (u.hostname !== null) {
+ uris.push(u.hostname);
+ if (port) {
+ uris.push(`${u.hostname}:${port}`);
+ uris.push(port);
+ }
+ return;
+ } else {
+ const slash = uri.indexOf("/");
+ const hostPart = slash > -1 ? uri.substring(0, slash) : uri;
+ uris.push(hostPart);
+ if (port) {
+ uris.push(`${hostPart}`);
+ uris.push(port);
+ }
+ }
+
if (u.match !== UriMatchStrategy.RegularExpression) {
const protocolIndex = uri.indexOf("://");
if (protocolIndex > -1) {
From e10d13faa81a9380238f67e9a1eb5e9aa1c62f0a Mon Sep 17 00:00:00 2001
From: Shane Melton
Date: Mon, 25 Aug 2025 14:50:54 -0700
Subject: [PATCH 040/167] [PM-22695] Remove unused vault service (#16134)
* [PM-22695] Remove obsolete browser vault filter service
* [PM-22695] Remove obsolete vault browser state service
---
.../browser/src/background/main.background.ts | 15 ----
apps/browser/src/popup/app.component.ts | 27 ------
.../src/popup/services/services.module.ts | 30 +------
.../vault-browser-state.service.spec.ts | 87 ------------------
.../services/vault-browser-state.service.ts | 74 ----------------
.../vault/services/vault-filter.service.ts | 88 -------------------
6 files changed, 1 insertion(+), 320 deletions(-)
delete mode 100644 apps/browser/src/vault/services/vault-browser-state.service.spec.ts
delete mode 100644 apps/browser/src/vault/services/vault-browser-state.service.ts
delete mode 100644 apps/browser/src/vault/services/vault-filter.service.ts
diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts
index 2f87e347410..c2c62625bb6 100644
--- a/apps/browser/src/background/main.background.ts
+++ b/apps/browser/src/background/main.background.ts
@@ -299,7 +299,6 @@ import { OffscreenStorageService } from "../platform/storage/offscreen-storage.s
import { SyncServiceListener } from "../platform/sync/sync-service.listener";
import { BrowserSystemNotificationService } from "../platform/system-notifications/browser-system-notification.service";
import { fromChromeRuntimeMessaging } from "../platform/utils/from-chrome-runtime-messaging";
-import { VaultFilterService } from "../vault/services/vault-filter.service";
import CommandsBackground from "./commands.background";
import IdleBackground from "./idle.background";
@@ -364,7 +363,6 @@ export default class MainBackground {
providerService: ProviderServiceAbstraction;
keyConnectorService: KeyConnectorServiceAbstraction;
userVerificationService: UserVerificationServiceAbstraction;
- vaultFilterService: VaultFilterService;
usernameGenerationService: UsernameGenerationServiceAbstraction;
encryptService: EncryptService;
folderApiService: FolderApiServiceAbstraction;
@@ -919,18 +917,6 @@ export default class MainBackground {
this.biometricsService,
);
- this.vaultFilterService = new VaultFilterService(
- this.organizationService,
- this.folderService,
- this.cipherService,
- this.collectionService,
- this.policyService,
- this.stateProvider,
- this.accountService,
- this.configService,
- this.i18nService,
- );
-
this.vaultSettingsService = new VaultSettingsService(
this.stateProvider,
this.restrictedItemTypesService,
@@ -1600,7 +1586,6 @@ export default class MainBackground {
this.cipherService.clear(userBeingLoggedOut),
this.folderService.clear(userBeingLoggedOut),
this.vaultTimeoutSettingsService.clear(userBeingLoggedOut),
- this.vaultFilterService.clear(),
this.biometricStateService.logout(userBeingLoggedOut),
this.popupViewCacheBackgroundService.clearState(),
/* We intentionally do not clear:
diff --git a/apps/browser/src/popup/app.component.ts b/apps/browser/src/popup/app.component.ts
index bd7b41b6e5f..ee75dbaf7af 100644
--- a/apps/browser/src/popup/app.component.ts
+++ b/apps/browser/src/popup/app.component.ts
@@ -49,7 +49,6 @@ import { BiometricsService, BiometricStateService, KeyService } from "@bitwarden
import { PopupCompactModeService } from "../platform/popup/layout/popup-compact-mode.service";
import { PopupSizeService } from "../platform/popup/layout/popup-size.service";
import { initPopupClosedListener } from "../platform/services/popup-view-cache-background.service";
-import { VaultBrowserStateService } from "../vault/services/vault-browser-state.service";
import { routerTransition } from "./app-routing.animations";
import { DesktopSyncVerificationDialogComponent } from "./components/desktop-sync-verification-dialog.component";
@@ -103,7 +102,6 @@ export class AppComponent implements OnInit, OnDestroy {
private i18nService: I18nService,
private router: Router,
private readonly tokenService: TokenService,
- private vaultBrowserStateService: VaultBrowserStateService,
private cipherService: CipherService,
private changeDetectorRef: ChangeDetectorRef,
private ngZone: NgZone,
@@ -135,10 +133,6 @@ export class AppComponent implements OnInit, OnDestroy {
this.compactModeService.init();
await this.popupSizeService.setHeight();
- // Component states must not persist between closing and reopening the popup, otherwise they become dead objects
- // Clear them aggressively to make sure this doesn't occur
- await this.clearComponentStates();
-
this.accountService.activeAccount$.pipe(takeUntil(this.destroy$)).subscribe((account) => {
this.activeUserId = account?.id;
});
@@ -249,13 +243,6 @@ export class AppComponent implements OnInit, OnDestroy {
this.router.events.pipe(takeUntil(this.destroy$)).subscribe(async (event) => {
if (event instanceof NavigationEnd) {
const url = event.urlAfterRedirects || event.url || "";
- if (
- url.startsWith("/tabs/") &&
- (window as any).previousPopupUrl != null &&
- (window as any).previousPopupUrl.startsWith("/tabs/")
- ) {
- await this.clearComponentStates();
- }
if (url.startsWith("/tabs/")) {
await this.cipherService.setAddEditCipherInfo(null, this.activeUserId);
}
@@ -320,20 +307,6 @@ export class AppComponent implements OnInit, OnDestroy {
return firstValueFrom(dialogRef.closed);
}
- private async clearComponentStates() {
- if (this.activeUserId == null) {
- return;
- }
- if (!(await firstValueFrom(this.tokenService.hasAccessToken$(this.activeUserId)))) {
- return;
- }
-
- await Promise.all([
- this.vaultBrowserStateService.setBrowserGroupingsComponentState(null),
- this.vaultBrowserStateService.setBrowserVaultItemsComponentState(null),
- ]);
- }
-
// Displaying toasts isn't super useful on the popup due to the reloads we do.
// However, it is visible for a moment on the FF sidebar logout.
private async displayLogoutReason(logoutReason: LogoutReason) {
diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts
index d8b4b1d600f..aaf85389f9c 100644
--- a/apps/browser/src/popup/services/services.module.ts
+++ b/apps/browser/src/popup/services/services.module.ts
@@ -39,7 +39,6 @@ import {
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { EventCollectionService as EventCollectionServiceAbstraction } from "@bitwarden/common/abstractions/event/event-collection.service";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
-import { DefaultOrganizationService } from "@bitwarden/common/admin-console/services/organization/default-organization.service";
import {
AccountService,
AccountService as AccountServiceAbstraction,
@@ -112,10 +111,7 @@ import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.s
import { InternalSendService } from "@bitwarden/common/tools/send/services/send.service.abstraction";
import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction";
-import {
- FolderService as FolderServiceAbstraction,
- InternalFolderService,
-} from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
+import { InternalFolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
import { TotpService as TotpServiceAbstraction } from "@bitwarden/common/vault/abstractions/totp.service";
import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/restricted-item-types.service";
import { TotpService } from "@bitwarden/common/vault/services/totp.service";
@@ -186,8 +182,6 @@ import { BrowserSystemNotificationService } from "../../platform/system-notifica
import { fromChromeRuntimeMessaging } from "../../platform/utils/from-chrome-runtime-messaging";
import { FilePopoutUtilsService } from "../../tools/popup/services/file-popout-utils.service";
import { Fido2UserVerificationService } from "../../vault/services/fido2-user-verification.service";
-import { VaultBrowserStateService } from "../../vault/services/vault-browser-state.service";
-import { VaultFilterService } from "../../vault/services/vault-filter.service";
import { ExtensionAnonLayoutWrapperDataService } from "../components/extension-anon-layout-wrapper/extension-anon-layout-wrapper-data.service";
import { DebounceNavigationService } from "./debounce-navigation.service";
@@ -402,21 +396,6 @@ const safeProviders: SafeProvider[] = [
useClass: ForegroundVaultTimeoutService,
deps: [MessagingServiceAbstraction],
}),
- safeProvider({
- provide: VaultFilterService,
- useClass: VaultFilterService,
- deps: [
- DefaultOrganizationService,
- FolderServiceAbstraction,
- CipherService,
- CollectionService,
- PolicyService,
- StateProvider,
- AccountServiceAbstraction,
- ConfigService,
- I18nServiceAbstraction,
- ],
- }),
safeProvider({
provide: SECURE_STORAGE,
useExisting: AbstractStorageService, // Secure storage is not available in the browser, so we use normal storage instead and warn users when it is used.
@@ -454,13 +433,6 @@ const safeProviders: SafeProvider[] = [
provide: OBSERVABLE_DISK_STORAGE,
useExisting: AbstractStorageService,
}),
- safeProvider({
- provide: VaultBrowserStateService,
- useFactory: (stateProvider: StateProvider) => {
- return new VaultBrowserStateService(stateProvider);
- },
- deps: [StateProvider],
- }),
safeProvider({
provide: FileDownloadService,
useClass: BrowserFileDownloadService,
diff --git a/apps/browser/src/vault/services/vault-browser-state.service.spec.ts b/apps/browser/src/vault/services/vault-browser-state.service.spec.ts
deleted file mode 100644
index b9369aa826b..00000000000
--- a/apps/browser/src/vault/services/vault-browser-state.service.spec.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import {
- FakeAccountService,
- mockAccountServiceWith,
-} from "@bitwarden/common/../spec/fake-account-service";
-import { FakeStateProvider } from "@bitwarden/common/../spec/fake-state-provider";
-import { Jsonify } from "type-fest";
-
-import { Utils } from "@bitwarden/common/platform/misc/utils";
-import { UserId } from "@bitwarden/common/types/guid";
-import { CipherType } from "@bitwarden/common/vault/enums";
-
-import { BrowserComponentState } from "../../models/browserComponentState";
-import { BrowserGroupingsComponentState } from "../../models/browserGroupingsComponentState";
-
-import {
- VAULT_BROWSER_COMPONENT,
- VAULT_BROWSER_GROUPINGS_COMPONENT,
- VaultBrowserStateService,
-} from "./vault-browser-state.service";
-
-describe("Vault Browser State Service", () => {
- let stateProvider: FakeStateProvider;
-
- let accountService: FakeAccountService;
- let stateService: VaultBrowserStateService;
- const mockUserId = Utils.newGuid() as UserId;
-
- beforeEach(() => {
- accountService = mockAccountServiceWith(mockUserId);
- stateProvider = new FakeStateProvider(accountService);
-
- stateService = new VaultBrowserStateService(stateProvider);
- });
-
- describe("getBrowserGroupingsComponentState", () => {
- it("should return a BrowserGroupingsComponentState", async () => {
- await stateService.setBrowserGroupingsComponentState(new BrowserGroupingsComponentState());
-
- const actual = await stateService.getBrowserGroupingsComponentState();
-
- expect(actual).toBeInstanceOf(BrowserGroupingsComponentState);
- });
-
- it("should deserialize BrowserGroupingsComponentState", () => {
- const sut = VAULT_BROWSER_GROUPINGS_COMPONENT;
-
- const expectedState = {
- deletedCount: 0,
- collectionCounts: new Map(),
- folderCounts: new Map(),
- typeCounts: new Map(),
- };
-
- const result = sut.deserializer(
- JSON.parse(JSON.stringify(expectedState)) as Jsonify,
- );
-
- expect(result).toEqual(expectedState);
- });
- });
-
- describe("getBrowserVaultItemsComponentState", () => {
- it("should deserialize BrowserComponentState", () => {
- const sut = VAULT_BROWSER_COMPONENT;
-
- const expectedState = {
- scrollY: 0,
- searchText: "test",
- };
-
- const result = sut.deserializer(JSON.parse(JSON.stringify(expectedState)));
-
- expect(result).toEqual(expectedState);
- });
-
- it("should return a BrowserComponentState", async () => {
- const componentState = new BrowserComponentState();
- componentState.scrollY = 0;
- componentState.searchText = "test";
-
- await stateService.setBrowserVaultItemsComponentState(componentState);
-
- const actual = await stateService.getBrowserVaultItemsComponentState();
- expect(actual).toStrictEqual(componentState);
- });
- });
-});
diff --git a/apps/browser/src/vault/services/vault-browser-state.service.ts b/apps/browser/src/vault/services/vault-browser-state.service.ts
deleted file mode 100644
index 58ce717bf1e..00000000000
--- a/apps/browser/src/vault/services/vault-browser-state.service.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-// FIXME: Update this file to be type safe and remove this and next line
-// @ts-strict-ignore
-import { Observable, firstValueFrom } from "rxjs";
-import { Jsonify } from "type-fest";
-
-import {
- ActiveUserState,
- StateProvider,
- UserKeyDefinition,
- VAULT_BROWSER_MEMORY,
-} from "@bitwarden/common/platform/state";
-
-import { BrowserComponentState } from "../../models/browserComponentState";
-import { BrowserGroupingsComponentState } from "../../models/browserGroupingsComponentState";
-
-export const VAULT_BROWSER_GROUPINGS_COMPONENT =
- new UserKeyDefinition(
- VAULT_BROWSER_MEMORY,
- "vault_browser_groupings_component",
- {
- deserializer: (obj: Jsonify) =>
- BrowserGroupingsComponentState.fromJSON(obj),
- clearOn: ["logout", "lock"],
- },
- );
-
-export const VAULT_BROWSER_COMPONENT = new UserKeyDefinition(
- VAULT_BROWSER_MEMORY,
- "vault_browser_component",
- {
- deserializer: (obj: Jsonify) => BrowserComponentState.fromJSON(obj),
- clearOn: ["logout", "lock"],
- },
-);
-
-export class VaultBrowserStateService {
- vaultBrowserGroupingsComponentState$: Observable;
- vaultBrowserComponentState$: Observable;
-
- private activeUserVaultBrowserGroupingsComponentState: ActiveUserState;
- private activeUserVaultBrowserComponentState: ActiveUserState;
-
- constructor(protected stateProvider: StateProvider) {
- this.activeUserVaultBrowserGroupingsComponentState = this.stateProvider.getActive(
- VAULT_BROWSER_GROUPINGS_COMPONENT,
- );
- this.activeUserVaultBrowserComponentState =
- this.stateProvider.getActive(VAULT_BROWSER_COMPONENT);
-
- this.vaultBrowserGroupingsComponentState$ =
- this.activeUserVaultBrowserGroupingsComponentState.state$;
- this.vaultBrowserComponentState$ = this.activeUserVaultBrowserComponentState.state$;
- }
-
- async getBrowserGroupingsComponentState(): Promise {
- return await firstValueFrom(this.vaultBrowserGroupingsComponentState$);
- }
-
- async setBrowserGroupingsComponentState(value: BrowserGroupingsComponentState): Promise {
- await this.activeUserVaultBrowserGroupingsComponentState.update(() => value, {
- shouldUpdate: (current) => !(current == null && value == null),
- });
- }
-
- async getBrowserVaultItemsComponentState(): Promise {
- return await firstValueFrom(this.vaultBrowserComponentState$);
- }
-
- async setBrowserVaultItemsComponentState(value: BrowserComponentState): Promise {
- await this.activeUserVaultBrowserComponentState.update(() => value, {
- shouldUpdate: (current) => !(current == null && value == null),
- });
- }
-}
diff --git a/apps/browser/src/vault/services/vault-filter.service.ts b/apps/browser/src/vault/services/vault-filter.service.ts
deleted file mode 100644
index f33e8e1c130..00000000000
--- a/apps/browser/src/vault/services/vault-filter.service.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-// FIXME: Update this file to be type safe and remove this and next line
-// @ts-strict-ignore
-import { CollectionService } from "@bitwarden/admin-console/common";
-import { VaultFilter } from "@bitwarden/angular/vault/vault-filter/models/vault-filter.model";
-import { VaultFilterService as BaseVaultFilterService } from "@bitwarden/angular/vault/vault-filter/services/vault-filter.service";
-import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
-import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
-import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
-import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
-import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
-import { StateProvider } from "@bitwarden/common/platform/state";
-import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
-import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
-import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
-
-export class VaultFilterService extends BaseVaultFilterService {
- vaultFilter: VaultFilter = new VaultFilter();
-
- allVaults = "allVaults";
- myVault = "myVault";
-
- constructor(
- organizationService: OrganizationService,
- folderService: FolderService,
- cipherService: CipherService,
- collectionService: CollectionService,
- policyService: PolicyService,
- stateProvider: StateProvider,
- accountService: AccountService,
- configService: ConfigService,
- i18nService: I18nService,
- ) {
- super(
- organizationService,
- folderService,
- cipherService,
- collectionService,
- policyService,
- stateProvider,
- accountService,
- configService,
- i18nService,
- );
- this.vaultFilter.myVaultOnly = false;
- this.vaultFilter.selectedOrganizationId = null;
-
- accountService.activeAccount$.subscribe((account) => {
- this.setVaultFilter(this.allVaults);
- });
- }
-
- getVaultFilter() {
- return this.vaultFilter;
- }
-
- setVaultFilter(filter: string) {
- if (filter === this.allVaults) {
- this.vaultFilter.myVaultOnly = false;
- this.vaultFilter.selectedOrganizationId = null;
- } else if (filter === this.myVault) {
- this.vaultFilter.myVaultOnly = true;
- this.vaultFilter.selectedOrganizationId = null;
- } else {
- this.vaultFilter.myVaultOnly = false;
- this.vaultFilter.selectedOrganizationId = filter;
- }
- }
-
- clear() {
- this.setVaultFilter(this.allVaults);
- }
-
- filterCipherForSelectedVault(cipher: CipherView) {
- if (!this.vaultFilter.selectedOrganizationId && !this.vaultFilter.myVaultOnly) {
- return false;
- }
- if (this.vaultFilter.selectedOrganizationId) {
- if (cipher.organizationId === this.vaultFilter.selectedOrganizationId) {
- return false;
- }
- } else if (this.vaultFilter.myVaultOnly) {
- if (!cipher.organizationId) {
- return false;
- }
- }
- return true;
- }
-}
From 9ed69ef4b81954b41511b22b5083f6286807a8c6 Mon Sep 17 00:00:00 2001
From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com>
Date: Mon, 25 Aug 2025 15:48:00 -0700
Subject: [PATCH 041/167] [PM-24304][PM-24305] - [Defect] Some fields are not
disabled when editing an item from My Vault (#15982)
* disable all remaining form fields for editing personally owned My Items
* fix failing tests
* ensure collection field is also properly disabled
* clean up logic
* fix failing test
* fix test
* refactor variable to avoid using `is` prefix
* directly reference parent form for status rather than subscribe to it
* refactor subscription for form status changes
* use observable as an Output
* disable attachment button on desktop vault when the form
* disable custom field components when custom fields already exist and parent form is disabled
* disable attachments button in the browser when the edit form is disabled
* grab icon button instance for disabled state
---------
Co-authored-by: Nick Krantz
---
.../open-attachments.component.html | 7 ++-
.../open-attachments.component.spec.ts | 23 +++++++
.../open-attachments.component.ts | 9 +++
.../vault/app/vault/vault-v2.component.html | 8 ++-
.../src/vault/app/vault/vault-v2.component.ts | 7 +++
.../vault-item-dialog.component.html | 8 ++-
.../vault-item-dialog.component.ts | 6 ++
.../src/cipher-form/cipher-form-container.ts | 6 +-
.../additional-options-section.component.html | 2 +-
...ditional-options-section.component.spec.ts | 3 +-
.../additional-options-section.component.ts | 5 ++
.../autofill-options.component.spec.ts | 3 +-
.../autofill-options.component.ts | 17 +++++-
.../components/cipher-form.component.ts | 7 ++-
.../custom-fields.component.html | 5 +-
.../custom-fields.component.spec.ts | 60 ++++++++++++++++++-
.../custom-fields/custom-fields.component.ts | 7 +++
.../item-details-section.component.html | 1 +
.../item-details-section.component.ts | 49 +++++++++------
.../login-details-section.component.spec.ts | 2 +
.../login-details-section.component.ts | 17 +++++-
.../sshkey-section.component.ts | 8 ++-
22 files changed, 224 insertions(+), 36 deletions(-)
diff --git a/apps/browser/src/vault/popup/components/vault-v2/attachments/open-attachments/open-attachments.component.html b/apps/browser/src/vault/popup/components/vault-v2/attachments/open-attachments/open-attachments.component.html
index 6345c3ea4e1..2650345e94b 100644
--- a/apps/browser/src/vault/popup/components/vault-v2/attachments/open-attachments/open-attachments.component.html
+++ b/apps/browser/src/vault/popup/components/vault-v2/attachments/open-attachments/open-attachments.component.html
@@ -1,5 +1,10 @@
-
diff --git a/apps/desktop/src/app/accounts/settings.component.ts b/apps/desktop/src/app/accounts/settings.component.ts
index fd17873a4b1..a6948c689cd 100644
--- a/apps/desktop/src/app/accounts/settings.component.ts
+++ b/apps/desktop/src/app/accounts/settings.component.ts
@@ -52,6 +52,7 @@ import {
TypographyModule,
} from "@bitwarden/components";
import { KeyService, BiometricStateService, BiometricsStatus } from "@bitwarden/key-management";
+import { PermitCipherDetailsPopoverComponent } from "@bitwarden/vault";
import { SetPinComponent } from "../../auth/components/set-pin.component";
import { SshAgentPromptType } from "../../autofill/models/ssh-agent-setting";
@@ -81,6 +82,7 @@ import { NativeMessagingManifestService } from "../services/native-messaging-man
SelectModule,
TypographyModule,
VaultTimeoutInputComponent,
+ PermitCipherDetailsPopoverComponent,
],
})
export class SettingsComponent implements OnInit, OnDestroy {
diff --git a/apps/desktop/src/app/app.module.ts b/apps/desktop/src/app/app.module.ts
index 014e29555e8..4f53e587994 100644
--- a/apps/desktop/src/app/app.module.ts
+++ b/apps/desktop/src/app/app.module.ts
@@ -31,7 +31,6 @@ import { SharedModule } from "./shared/shared.module";
@NgModule({
imports: [
BrowserAnimationsModule,
-
SharedModule,
AppRoutingModule,
VaultFilterModule,
diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json
index eaa5f7f0f1e..c805096189b 100644
--- a/apps/desktop/src/locales/en/messages.json
+++ b/apps/desktop/src/locales/en/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/web/src/app/settings/preferences.component.html b/apps/web/src/app/settings/preferences.component.html
index 80261ecccb7..050d7395caf 100644
--- a/apps/web/src/app/settings/preferences.component.html
+++ b/apps/web/src/app/settings/preferences.component.html
@@ -67,23 +67,17 @@
{{ "languageDesc" | i18n }}
-
-
- {{ "enableFavicon" | i18n }}
-
-
-
-
- {{ "faviconDesc" | i18n }}
-
+
+
+
+
+ {{ "showIconsChangePasswordUrls" | i18n }}
+
+
+
+
+
+
{{ "theme" | i18n }}
diff --git a/apps/web/src/app/settings/preferences.component.ts b/apps/web/src/app/settings/preferences.component.ts
index e6cc35903a7..58a072ce76a 100644
--- a/apps/web/src/app/settings/preferences.component.ts
+++ b/apps/web/src/app/settings/preferences.component.ts
@@ -34,6 +34,7 @@ import { Theme, ThemeTypes } from "@bitwarden/common/platform/enums";
import { Utils } from "@bitwarden/common/platform/misc/utils";
import { ThemeStateService } from "@bitwarden/common/platform/theming/theme-state.service";
import { DialogService } from "@bitwarden/components";
+import { PermitCipherDetailsPopoverComponent } from "@bitwarden/vault";
import { HeaderModule } from "../layouts/header/header.module";
import { SharedModule } from "../shared";
@@ -41,7 +42,12 @@ import { SharedModule } from "../shared";
@Component({
selector: "app-preferences",
templateUrl: "preferences.component.html",
- imports: [SharedModule, HeaderModule, VaultTimeoutInputComponent],
+ imports: [
+ SharedModule,
+ HeaderModule,
+ VaultTimeoutInputComponent,
+ PermitCipherDetailsPopoverComponent,
+ ],
})
export class PreferencesComponent implements OnInit, OnDestroy {
// For use in template
diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index af80433fce7..e3856e7d645 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -2103,11 +2103,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10986,6 +10983,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/libs/common/src/vault/models/response/change-password-uri.response.ts b/libs/common/src/vault/models/response/change-password-uri.response.ts
new file mode 100644
index 00000000000..1ff3424a269
--- /dev/null
+++ b/libs/common/src/vault/models/response/change-password-uri.response.ts
@@ -0,0 +1,10 @@
+import { BaseResponse } from "../../../models/response/base.response";
+
+export class ChangePasswordUriResponse extends BaseResponse {
+ uri: string | null;
+
+ constructor(response: any) {
+ super(response);
+ this.uri = this.getResponseProperty("uri");
+ }
+}
diff --git a/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.html b/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.html
new file mode 100644
index 00000000000..1833a148616
--- /dev/null
+++ b/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ {{ "permitCipherDetailsDescription" | i18n }}
+
+
+
diff --git a/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.ts b/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.ts
new file mode 100644
index 00000000000..8e80ddf7810
--- /dev/null
+++ b/libs/vault/src/components/permit-cipher-details-popover/permit-cipher-details-popover.component.ts
@@ -0,0 +1,19 @@
+import { Component, inject } from "@angular/core";
+
+import { JslibModule } from "@bitwarden/angular/jslib.module";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { LinkModule, PopoverModule } from "@bitwarden/components";
+
+@Component({
+ selector: "vault-permit-cipher-details-popover",
+ templateUrl: "./permit-cipher-details-popover.component.html",
+ imports: [PopoverModule, JslibModule, LinkModule],
+})
+export class PermitCipherDetailsPopoverComponent {
+ private platformUtilService = inject(PlatformUtilsService);
+
+ openLearnMore(e: Event) {
+ e.preventDefault();
+ this.platformUtilService.launchUri("https://bitwarden.com/help/website-icons/");
+ }
+}
diff --git a/libs/vault/src/index.ts b/libs/vault/src/index.ts
index f3925ac3379..efaefc77ade 100644
--- a/libs/vault/src/index.ts
+++ b/libs/vault/src/index.ts
@@ -20,6 +20,7 @@ export { openPasswordHistoryDialog } from "./components/password-history/passwor
export * from "./components/add-edit-folder-dialog/add-edit-folder-dialog.component";
export * from "./components/carousel";
export * from "./components/new-cipher-menu/new-cipher-menu.component";
+export * from "./components/permit-cipher-details-popover/permit-cipher-details-popover.component";
export { DefaultSshImportPromptService } from "./services/default-ssh-import-prompt.service";
export { SshImportPromptService } from "./services/ssh-import-prompt.service";
diff --git a/libs/vault/src/services/default-change-login-password.service.spec.ts b/libs/vault/src/services/default-change-login-password.service.spec.ts
index c9628797f4d..42242f2e4a8 100644
--- a/libs/vault/src/services/default-change-login-password.service.spec.ts
+++ b/libs/vault/src/services/default-change-login-password.service.spec.ts
@@ -4,10 +4,14 @@
*/
import { mock } from "jest-mock-extended";
+import { BehaviorSubject, of } from "rxjs";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { ClientType } from "@bitwarden/common/enums";
-import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { DomainSettingsService } from "@bitwarden/common/autofill/services/domain-settings.service";
+import {
+ Environment,
+ EnvironmentService,
+} from "@bitwarden/common/platform/abstractions/environment.service";
import { CipherType } from "@bitwarden/common/vault/enums";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { LoginUriView } from "@bitwarden/common/vault/models/view/login-uri.view";
@@ -18,37 +22,30 @@ import { DefaultChangeLoginPasswordService } from "./default-change-login-passwo
describe("DefaultChangeLoginPasswordService", () => {
let service: DefaultChangeLoginPasswordService;
- let mockShouldNotExistResponse: Response;
- let mockWellKnownResponse: Response;
-
- const getClientType = jest.fn(() => ClientType.Browser);
-
const mockApiService = mock();
- const platformUtilsService = mock({
- getClientType,
- });
+ const mockDomainSettingsService = mock();
+
+ const showFavicons$ = new BehaviorSubject(true);
beforeEach(() => {
- mockApiService.nativeFetch.mockClear();
+ mockApiService.fetch.mockClear();
+ mockApiService.fetch.mockImplementation(() =>
+ Promise.resolve({ ok: true, json: () => Promise.resolve({ uri: null }) } as Response),
+ );
- // Default responses to success state
- mockShouldNotExistResponse = new Response("Not Found", { status: 404 });
- mockWellKnownResponse = new Response("OK", { status: 200 });
+ mockDomainSettingsService.showFavicons$ = showFavicons$;
- mockApiService.nativeFetch.mockImplementation((request) => {
- if (
- request.url.endsWith("resource-that-should-not-exist-whose-status-code-should-not-be-200")
- ) {
- return Promise.resolve(mockShouldNotExistResponse);
- }
+ const mockEnvironmentService = {
+ environment$: of({
+ getIconsUrl: () => "https://icons.bitwarden.com",
+ } as Environment),
+ } as EnvironmentService;
- if (request.url.endsWith(".well-known/change-password")) {
- return Promise.resolve(mockWellKnownResponse);
- }
-
- throw new Error("Unexpected request");
- });
- service = new DefaultChangeLoginPasswordService(mockApiService, platformUtilsService);
+ service = new DefaultChangeLoginPasswordService(
+ mockApiService,
+ mockEnvironmentService,
+ mockDomainSettingsService,
+ );
});
it("should return null for non-login ciphers", async () => {
@@ -85,7 +82,7 @@ describe("DefaultChangeLoginPasswordService", () => {
expect(url).toBeNull();
});
- it("should check the origin for a reliable status code", async () => {
+ it("should call the icons url endpoint", async () => {
const cipher = {
type: CipherType.Login,
login: Object.assign(new LoginView(), {
@@ -95,35 +92,42 @@ describe("DefaultChangeLoginPasswordService", () => {
await service.getChangePasswordUrl(cipher);
- expect(mockApiService.nativeFetch).toHaveBeenCalledWith(
+ expect(mockApiService.fetch).toHaveBeenCalledWith(
expect.objectContaining({
- url: "https://example.com/.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200",
+ url: "https://icons.bitwarden.com/change-password-uri?uri=https%3A%2F%2Fexample.com%2F",
}),
);
});
- it("should attempt to fetch the well-known change password URL", async () => {
+ it("should return the original URI when unable to verify the response", async () => {
+ mockApiService.fetch.mockImplementation(() =>
+ Promise.resolve({ ok: true, json: () => Promise.resolve({ uri: null }) } as Response),
+ );
+
const cipher = {
type: CipherType.Login,
login: Object.assign(new LoginView(), {
- uris: [{ uri: "https://example.com" }],
+ uris: [{ uri: "https://example.com/" }],
}),
} as CipherView;
- await service.getChangePasswordUrl(cipher);
+ const url = await service.getChangePasswordUrl(cipher);
- expect(mockApiService.nativeFetch).toHaveBeenCalledWith(
- expect.objectContaining({
- url: "https://example.com/.well-known/change-password",
- }),
- );
+ expect(url).toBe("https://example.com/");
});
- it("should return the well-known change password URL when successful at verifying the response", async () => {
+ it("should return the well known change url from the response", async () => {
+ mockApiService.fetch.mockImplementation(() => {
+ return Promise.resolve({
+ ok: true,
+ json: () => Promise.resolve({ uri: "https://example.com/.well-known/change-password" }),
+ } as Response);
+ });
+
const cipher = {
type: CipherType.Login,
login: Object.assign(new LoginView(), {
- uris: [{ uri: "https://example.com" }],
+ uris: [{ uri: "https://example.com/" }, { uri: "https://working.com/" }],
}),
} as CipherView;
@@ -132,49 +136,20 @@ describe("DefaultChangeLoginPasswordService", () => {
expect(url).toBe("https://example.com/.well-known/change-password");
});
- it("should return the original URI when unable to verify the response", async () => {
- mockShouldNotExistResponse = new Response("Ok", { status: 200 });
-
- const cipher = {
- type: CipherType.Login,
- login: Object.assign(new LoginView(), {
- uris: [{ uri: "https://example.com/" }],
- }),
- } as CipherView;
-
- const url = await service.getChangePasswordUrl(cipher);
-
- expect(url).toBe("https://example.com/");
- });
-
- it("should return the original URI when the well-known URL is not found", async () => {
- mockWellKnownResponse = new Response("Not Found", { status: 404 });
-
- const cipher = {
- type: CipherType.Login,
- login: Object.assign(new LoginView(), {
- uris: [{ uri: "https://example.com/" }],
- }),
- } as CipherView;
-
- const url = await service.getChangePasswordUrl(cipher);
-
- expect(url).toBe("https://example.com/");
- });
-
it("should try the next URI if the first one fails", async () => {
- mockApiService.nativeFetch.mockImplementation((request) => {
- if (
- request.url.endsWith("resource-that-should-not-exist-whose-status-code-should-not-be-200")
- ) {
- return Promise.resolve(mockShouldNotExistResponse);
+ mockApiService.fetch.mockImplementation((request) => {
+ if (request.url.includes("no-wellknown.com")) {
+ return Promise.resolve({
+ ok: true,
+ json: () => Promise.resolve({ uri: null }),
+ } as Response);
}
- if (request.url.endsWith(".well-known/change-password")) {
- if (request.url.includes("working.com")) {
- return Promise.resolve(mockWellKnownResponse);
- }
- return Promise.resolve(new Response("Not Found", { status: 404 }));
+ if (request.url.includes("working.com")) {
+ return Promise.resolve({
+ ok: true,
+ json: () => Promise.resolve({ uri: "https://working.com/.well-known/change-password" }),
+ } as Response);
}
throw new Error("Unexpected request");
@@ -192,19 +167,19 @@ describe("DefaultChangeLoginPasswordService", () => {
expect(url).toBe("https://working.com/.well-known/change-password");
});
- it("should return the first URI when the client type is not browser", async () => {
- getClientType.mockReturnValue(ClientType.Web);
+ it("returns the first URI when `showFavicons$` setting is disabled", async () => {
+ showFavicons$.next(false);
const cipher = {
type: CipherType.Login,
login: Object.assign(new LoginView(), {
- uris: [{ uri: "https://example.com/" }, { uri: "https://example-2.com/" }],
+ uris: [{ uri: "https://example.com/" }, { uri: "https://another.com/" }],
}),
} as CipherView;
const url = await service.getChangePasswordUrl(cipher);
- expect(mockApiService.nativeFetch).not.toHaveBeenCalled();
expect(url).toBe("https://example.com/");
+ expect(mockApiService.fetch).not.toHaveBeenCalled();
});
});
diff --git a/libs/vault/src/services/default-change-login-password.service.ts b/libs/vault/src/services/default-change-login-password.service.ts
index a0b5646c5a9..929f5819c02 100644
--- a/libs/vault/src/services/default-change-login-password.service.ts
+++ b/libs/vault/src/services/default-change-login-password.service.ts
@@ -1,9 +1,12 @@
import { Injectable } from "@angular/core";
+import { firstValueFrom } from "rxjs";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { DomainSettingsService } from "@bitwarden/common/autofill/services/domain-settings.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
import { Utils } from "@bitwarden/common/platform/misc/utils";
import { CipherType } from "@bitwarden/common/vault/enums";
+import { ChangePasswordUriResponse } from "@bitwarden/common/vault/models/response/change-password-uri.response";
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { ChangeLoginPasswordService } from "../abstractions/change-login-password.service";
@@ -12,7 +15,8 @@ import { ChangeLoginPasswordService } from "../abstractions/change-login-passwor
export class DefaultChangeLoginPasswordService implements ChangeLoginPasswordService {
constructor(
private apiService: ApiService,
- private platformUtilsService: PlatformUtilsService,
+ private environmentService: EnvironmentService,
+ private domainSettingsService: DomainSettingsService,
) {}
/**
@@ -33,24 +37,19 @@ export class DefaultChangeLoginPasswordService implements ChangeLoginPasswordSer
return null;
}
- // CSP policies on the web and desktop restrict the application from making
- // cross-origin requests, breaking the below .well-known URL checks.
- // For those platforms, this will short circuit and return the first URL.
- // PM-21024 will build a solution for the server side to handle this.
- if (this.platformUtilsService.getClientType() !== "browser") {
+ const enableFaviconChangePassword = await firstValueFrom(
+ this.domainSettingsService.showFavicons$,
+ );
+
+ // When the setting is not enabled, return the first URL
+ if (!enableFaviconChangePassword) {
return urls[0].href;
}
for (const url of urls) {
- const [reliable, wellKnownChangeUrl] = await Promise.all([
- this.hasReliableHttpStatusCode(url.origin),
- this.getWellKnownChangePasswordUrl(url.origin),
- ]);
+ const wellKnownChangeUrl = await this.fetchWellKnownChangePasswordUri(url.href);
- // Some servers return a 200 OK for a resource that should not exist
- // Which means we cannot trust the well-known URL is valid, so we skip it
- // to avoid potentially sending users to a 404 page
- if (reliable && wellKnownChangeUrl != null) {
+ if (wellKnownChangeUrl) {
return wellKnownChangeUrl;
}
}
@@ -60,55 +59,41 @@ export class DefaultChangeLoginPasswordService implements ChangeLoginPasswordSer
}
/**
- * Checks if the server returns a non-200 status code for a resource that should not exist.
- * See https://w3c.github.io/webappsec-change-password-url/response-code-reliability.html#semantics
- * @param urlOrigin The origin of the URL to check
+ * Fetches the well-known change-password-uri for the given URL.
+ * @returns The full URL to the change password page, or null if it could not be found.
*/
- private async hasReliableHttpStatusCode(urlOrigin: string): Promise {
- try {
- const url = new URL(
- "./.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200",
- urlOrigin,
- );
+ private async fetchWellKnownChangePasswordUri(url: string): Promise {
+ const getChangePasswordUriRequest = await this.buildChangePasswordUriRequest(url);
- const request = new Request(url, {
- method: "GET",
- mode: "same-origin",
- credentials: "omit",
- cache: "no-store",
- redirect: "follow",
- });
+ const response = await this.apiService.fetch(getChangePasswordUriRequest);
- const response = await this.apiService.nativeFetch(request);
- return !response.ok;
- } catch {
- return false;
+ if (!response.ok) {
+ return null;
}
+
+ const data = await response.json();
+
+ const { uri } = new ChangePasswordUriResponse(data);
+
+ return uri;
}
/**
- * Builds a well-known change password URL for the given origin. Attempts to fetch the URL to ensure a valid response
- * is returned. Returns null if the request throws or the response is not 200 OK.
- * See https://w3c.github.io/webappsec-change-password-url/
- * @param urlOrigin The origin of the URL to check
+ * Construct the request for the change-password-uri endpoint.
*/
- private async getWellKnownChangePasswordUrl(urlOrigin: string): Promise {
- try {
- const url = new URL("./.well-known/change-password", urlOrigin);
+ private async buildChangePasswordUriRequest(cipherUri: string): Promise {
+ const searchParams = new URLSearchParams();
+ searchParams.set("uri", cipherUri);
- const request = new Request(url, {
- method: "GET",
- mode: "same-origin",
- credentials: "omit",
- cache: "no-store",
- redirect: "follow",
- });
+ // The change-password-uri endpoint lives within the icons service
+ // as it uses decrypted cipher data.
+ const env = await firstValueFrom(this.environmentService.environment$);
+ const iconsUrl = env.getIconsUrl();
- const response = await this.apiService.nativeFetch(request);
+ const url = new URL(`${iconsUrl}/change-password-uri?${searchParams.toString()}`);
- return response.ok ? url.toString() : null;
- } catch {
- return null;
- }
+ return new Request(url, {
+ method: "GET",
+ });
}
}
From 4c960906fa2a3d18cd43a7875082ad6ce6665cda Mon Sep 17 00:00:00 2001
From: Maciej Zieniuk <167752252+mzieniukbw@users.noreply.github.com>
Date: Wed, 27 Aug 2025 16:32:18 +0200
Subject: [PATCH 057/167] Account Recovery with Key Connector enabled not
working prior to removal of Master Password (#15616)
---
libs/angular/src/auth/guards/auth.guard.ts | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/libs/angular/src/auth/guards/auth.guard.ts b/libs/angular/src/auth/guards/auth.guard.ts
index 8e8e70a6d29..37c464a804d 100644
--- a/libs/angular/src/auth/guards/auth.guard.ts
+++ b/libs/angular/src/auth/guards/auth.guard.ts
@@ -74,13 +74,6 @@ export const authGuard: CanActivateFn = async (
return router.createUrlTree(["lock"], { queryParams: { promptBiometric: true } });
}
- if (
- !routerState.url.includes("remove-password") &&
- (await firstValueFrom(keyConnectorService.convertAccountRequired$))
- ) {
- return router.createUrlTree(["/remove-password"]);
- }
-
// Handle cases where a user needs to set a password when they don't already have one:
// - TDE org user has been given "manage account recovery" permission
// - TDE offboarding on a trusted device, where we have access to their encryption key wrap with their new password
@@ -106,5 +99,14 @@ export const authGuard: CanActivateFn = async (
return router.createUrlTree([route]);
}
+ // Remove password when Key Connector is enabled
+ if (
+ forceSetPasswordReason == ForceSetPasswordReason.None &&
+ !routerState.url.includes("remove-password") &&
+ (await firstValueFrom(keyConnectorService.convertAccountRequired$))
+ ) {
+ return router.createUrlTree(["/remove-password"]);
+ }
+
return true;
};
From 5f7c0ae999970dbbb05a111d074eb20a7258da15 Mon Sep 17 00:00:00 2001
From: Addison Beck
Date: Wed, 27 Aug 2025 11:56:42 -0400
Subject: [PATCH 058/167] build: ensure new libraries are added to the root
jest.config (#16166)
* Add missing libs to jest.config.js
Added 15 missing libraries to the jest projects array:
- libs/assets
- libs/client-type
- libs/core-test-utils
- libs/dirt/card
- libs/guid
- libs/logging
- libs/messaging-internal
- libs/messaging
- libs/serialization
- libs/state-test-utils
- libs/state
- libs/storage-core
- libs/storage-test-utils
- libs/tools/export/vault-export/vault-export-ui
- libs/user-core
This ensures all existing libraries with jest.config.js files are included in CI test runs.
* Update basic-lib generator to add new libs to jest.config.js
- Added updateJestConfig function that automatically adds new libraries to jest.config.js
- Function finds the appropriate alphabetical position for the new library
- Added comprehensive tests for the new functionality
- Ensures new libraries are included in CI test runs from creation
This prevents the issue where new libraries are created but their tests
are not run in CI because they are missing from the jest configuration.
* Fix import statements in state-definitions and deserialization-helpers tests
- Fixed ClientLocations import in state-definitions.spec.ts to use @bitwarden/storage-core instead of relative import
- Simplified deserialization-helpers.spec.ts import to use library root @bitwarden/serialization
---
jest.config.js | 25 +++++--
.../src/generators/basic-lib.spec.ts | 41 ++++++++++++
libs/nx-plugin/src/generators/basic-lib.ts | 65 +++++++++++++++++++
.../src/deserialization-helpers.spec.ts | 2 +-
libs/state/src/core/state-definitions.spec.ts | 4 +-
5 files changed, 130 insertions(+), 7 deletions(-)
diff --git a/jest.config.js b/jest.config.js
index b0ffd2382ca..3e4fb665a8c 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -26,24 +26,39 @@ module.exports = {
"/libs/admin-console/jest.config.js",
"/libs/angular/jest.config.js",
+ "/libs/assets/jest.config.js",
"/libs/auth/jest.config.js",
"/libs/billing/jest.config.js",
+ "/libs/client-type/jest.config.js",
"/libs/common/jest.config.js",
"/libs/components/jest.config.js",
+ "/libs/core-test-utils/jest.config.js",
+ "/libs/dirt/card/jest.config.js",
"/libs/eslint/jest.config.js",
+ "/libs/guid/jest.config.js",
+ "/libs/importer/jest.config.js",
+ "/libs/key-management/jest.config.js",
+ "/libs/key-management-ui/jest.config.js",
+ "/libs/logging/jest.config.js",
+ "/libs/messaging-internal/jest.config.js",
+ "/libs/messaging/jest.config.js",
+ "/libs/node/jest.config.js",
+ "/libs/platform/jest.config.js",
+ "/libs/serialization/jest.config.js",
+ "/libs/state-test-utils/jest.config.js",
+ "/libs/state/jest.config.js",
+ "/libs/storage-core/jest.config.js",
+ "/libs/storage-test-utils/jest.config.js",
"/libs/tools/export/vault-export/vault-export-core/jest.config.js",
+ "/libs/tools/export/vault-export/vault-export-ui/jest.config.js",
"/libs/tools/generator/core/jest.config.js",
"/libs/tools/generator/components/jest.config.js",
"/libs/tools/generator/extensions/history/jest.config.js",
"/libs/tools/generator/extensions/legacy/jest.config.js",
"/libs/tools/generator/extensions/navigation/jest.config.js",
"/libs/tools/send/send-ui/jest.config.js",
- "/libs/importer/jest.config.js",
- "/libs/platform/jest.config.js",
- "/libs/node/jest.config.js",
+ "/libs/user-core/jest.config.js",
"/libs/vault/jest.config.js",
- "/libs/key-management/jest.config.js",
- "/libs/key-management-ui/jest.config.js",
],
// Workaround for a memory leak that crashes tests in CI:
diff --git a/libs/nx-plugin/src/generators/basic-lib.spec.ts b/libs/nx-plugin/src/generators/basic-lib.spec.ts
index a0357ca1751..9fd7a702375 100644
--- a/libs/nx-plugin/src/generators/basic-lib.spec.ts
+++ b/libs/nx-plugin/src/generators/basic-lib.spec.ts
@@ -83,3 +83,44 @@ describe("basic-lib generator", () => {
expect(tree.exists(`libs/test/src/test.spec.ts`)).toBeTruthy();
});
});
+
+it("should update jest.config.js with new library", async () => {
+ // Create a mock jest.config.js with existing libs
+ const existingJestConfig = `module.exports = {
+ projects: [
+ "/apps/browser/jest.config.js",
+ "/libs/admin-console/jest.config.js",
+ "/libs/auth/jest.config.js",
+ "/libs/vault/jest.config.js",
+ ],
+};`;
+ tree.write("jest.config.js", existingJestConfig);
+
+ await basicLibGenerator(tree, options);
+
+ const jestConfigContent = tree.read("jest.config.js");
+ expect(jestConfigContent).not.toBeNull();
+ const jestConfig = jestConfigContent?.toString();
+
+ // Should contain the new library in alphabetical order
+ expect(jestConfig).toContain('"/libs/test/jest.config.js",');
+
+ // Should be in the right alphabetical position (after auth, before vault)
+ const authIndex = jestConfig?.indexOf('"/libs/auth/jest.config.js"');
+ const testIndex = jestConfig?.indexOf('"/libs/test/jest.config.js"');
+ const vaultIndex = jestConfig?.indexOf('"/libs/vault/jest.config.js"');
+
+ expect(authIndex).toBeDefined();
+ expect(testIndex).toBeDefined();
+ expect(vaultIndex).toBeDefined();
+ expect(authIndex! < testIndex!).toBeTruthy();
+ expect(testIndex! < vaultIndex!).toBeTruthy();
+});
+
+it("should handle missing jest.config.js file gracefully", async () => {
+ const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
+ // Don't create jest.config.js file
+ await basicLibGenerator(tree, options);
+ expect(consoleSpy).toHaveBeenCalledWith("jest.config.js file not found at root");
+ consoleSpy.mockRestore();
+});
diff --git a/libs/nx-plugin/src/generators/basic-lib.ts b/libs/nx-plugin/src/generators/basic-lib.ts
index 6b214d18921..4f2f542ac89 100644
--- a/libs/nx-plugin/src/generators/basic-lib.ts
+++ b/libs/nx-plugin/src/generators/basic-lib.ts
@@ -53,6 +53,9 @@ export async function basicLibGenerator(
// Update CODEOWNERS with the new lib
updateCodeowners(tree, options.directory, options.name, options.team);
+ // Update jest.config.js with the new lib
+ updateJestConfig(tree, options.directory, options.name);
+
// Format all new files with prettier
await formatFiles(tree);
@@ -124,4 +127,66 @@ function updateCodeowners(tree: Tree, directory: string, name: string, team: str
tree.write(codeownersPath, content + newLine);
}
+/**
+ * Updates the jest.config.js file to include the new library
+ * This ensures the library's tests are included in CI runs
+ *
+ * @param {Tree} tree - The virtual file system tree
+ * @param {string} directory - Directory where the library is created
+ * @param {string} name - The library name
+ */
+function updateJestConfig(tree: Tree, directory: string, name: string) {
+ const jestConfigPath = "jest.config.js";
+
+ if (!tree.exists(jestConfigPath)) {
+ console.warn("jest.config.js file not found at root");
+ return;
+ }
+
+ const content = tree.read(jestConfigPath)?.toString() || "";
+ const libJestPath = `"/${directory}/${name}/jest.config.js",`;
+
+ // Find the libs section and insert the new library in alphabetical order
+ const lines = content.split("\n");
+ let insertIndex = -1;
+ let foundLibsSection = false;
+
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+
+ // Check if we're in the libs section
+ if (line.includes('"/libs/')) {
+ foundLibsSection = true;
+
+ // Extract the lib name for comparison
+ const match = line.match(/"libs([^"]+)/);
+ if (match) {
+ const existingLibName = match[1];
+
+ // If the new lib should come before this existing lib alphabetically
+ if (name < existingLibName) {
+ insertIndex = i;
+ break;
+ }
+ }
+ }
+ // If we were in libs section but hit a non-libs line, insert at end of libs
+ else if (foundLibsSection && !line.includes('"/libs/')) {
+ insertIndex = i;
+ break;
+ }
+ }
+
+ if (insertIndex === -1) {
+ console.warn(`Could not find appropriate location to insert ${name} in jest.config.js`);
+ return;
+ }
+
+ // Insert the new library line
+ lines.splice(insertIndex, 0, ` ${libJestPath}`);
+
+ // Write back the updated content
+ tree.write(jestConfigPath, lines.join("\n"));
+}
+
export default basicLibGenerator;
diff --git a/libs/serialization/src/deserialization-helpers.spec.ts b/libs/serialization/src/deserialization-helpers.spec.ts
index 1918673c8d2..0c4bd2f06eb 100644
--- a/libs/serialization/src/deserialization-helpers.spec.ts
+++ b/libs/serialization/src/deserialization-helpers.spec.ts
@@ -1,4 +1,4 @@
-import { record } from "@bitwarden/serialization/deserialization-helpers";
+import { record } from "@bitwarden/serialization";
describe("deserialization helpers", () => {
describe("record", () => {
diff --git a/libs/state/src/core/state-definitions.spec.ts b/libs/state/src/core/state-definitions.spec.ts
index d0e6eb3082e..92b3f049a0c 100644
--- a/libs/state/src/core/state-definitions.spec.ts
+++ b/libs/state/src/core/state-definitions.spec.ts
@@ -1,4 +1,6 @@
-import { ClientLocations, StateDefinition } from "./state-definition";
+import { ClientLocations } from "@bitwarden/storage-core";
+
+import { StateDefinition } from "./state-definition";
import * as stateDefinitionsRecord from "./state-definitions";
describe.each(["web", "cli", "desktop", "browser"])(
From 38f62a01499b46d4ba9d9ddfeeffce2695645d12 Mon Sep 17 00:00:00 2001
From: Vicki League
Date: Wed, 27 Aug 2025 12:40:16 -0400
Subject: [PATCH 059/167] [PM-25222] Fix svg alignment issues caused by new
preflight defaults (#16181)
---
libs/components/src/tw-theme-preflight.css | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libs/components/src/tw-theme-preflight.css b/libs/components/src/tw-theme-preflight.css
index 3c38eba3bd3..e5f35885993 100644
--- a/libs/components/src/tw-theme-preflight.css
+++ b/libs/components/src/tw-theme-preflight.css
@@ -65,4 +65,9 @@
select {
appearance: none;
}
+
+ /* overriding preflight since the apps were built assuming svgs are inline */
+ svg {
+ display: inline;
+ }
}
From 4dd7e0cafa0b71ddc741c7191e7d51557fc2fe25 Mon Sep 17 00:00:00 2001
From: Alex <55413326+AlexRubik@users.noreply.github.com>
Date: Wed, 27 Aug 2025 09:41:42 -0700
Subject: [PATCH 060/167] Messages: unmark critical (#16146)
* Unmark as critical
* Revert "Unmark as critical"
This reverts commit 3fa79fc4988efefb9e2749ab04a4a60c75930246.
* rename unmarkAsCriticalApp -> unmarkAsCritical
---
apps/web/src/locales/en/messages.json | 4 ++--
.../app-table-row-scrollable.component.html | 4 ++--
.../access-intelligence/app-table-row-scrollable.component.ts | 2 +-
.../access-intelligence/critical-applications.component.html | 2 +-
.../access-intelligence/critical-applications.component.ts | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index e3856e7d645..7de7f119e3b 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.html b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.html
index 8e48b5e107d..eb7544faf05 100644
--- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.html
+++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.html
@@ -88,8 +88,8 @@
>
-
- {{ "unmarkAsCriticalApp" | i18n }}
+
+ {{ "unmarkAsCritical" | i18n }}
|
diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.ts b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.ts
index a729f21158f..c6923bf5c77 100644
--- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.ts
+++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/app-table-row-scrollable.component.ts
@@ -19,6 +19,6 @@ export class AppTableRowScrollableComponent {
@Input() selectedUrls: Set = new Set();
@Input() isDrawerIsOpenForThisRecord!: (applicationName: string) => boolean;
@Input() showAppAtRiskMembers!: (applicationName: string) => void;
- @Input() unmarkAsCriticalApp!: (applicationName: string) => void;
+ @Input() unmarkAsCritical!: (applicationName: string) => void;
@Input() checkboxChange!: (applicationName: string, $event: Event) => void;
}
diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.html b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.html
index ffef3f3b0b9..17967ccef0e 100644
--- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.html
+++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.html
@@ -83,6 +83,6 @@
[showRowMenuForCriticalApps]="true"
[isDrawerIsOpenForThisRecord]="isDrawerOpenForTableRow"
[showAppAtRiskMembers]="showAppAtRiskMembers"
- [unmarkAsCriticalApp]="unmarkAsCriticalApp"
+ [unmarkAsCritical]="unmarkAsCritical"
>
diff --git a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.ts b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.ts
index 531adc003c7..58e0f648749 100644
--- a/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.ts
+++ b/bitwarden_license/bit-web/src/app/dirt/access-intelligence/critical-applications.component.ts
@@ -106,7 +106,7 @@ export class CriticalApplicationsComponent implements OnInit {
);
};
- unmarkAsCriticalApp = async (hostname: string) => {
+ unmarkAsCritical = async (hostname: string) => {
try {
await this.criticalAppsService.dropCriticalApp(
this.organizationId as OrganizationId,
From 1d5115f19050d81d58723b435581188928809bf0 Mon Sep 17 00:00:00 2001
From: cd-bitwarden <106776772+cd-bitwarden@users.noreply.github.com>
Date: Wed, 27 Aug 2025 13:51:02 -0400
Subject: [PATCH 061/167] Making accessing a project only use one api call to
getbyprojectid (#15854)
---
.../guards/project-access.guard.spec.ts | 135 ------------------
.../projects/guards/project-access.guard.ts | 33 -----
.../project/project-secrets.component.html | 8 +-
.../project/project-secrets.component.ts | 33 +----
.../projects/project/project.component.html | 2 +-
.../projects/projects-routing.module.ts | 2 -
6 files changed, 12 insertions(+), 201 deletions(-)
delete mode 100644 bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.spec.ts
delete mode 100644 bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.ts
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.spec.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.spec.ts
deleted file mode 100644
index 7523fa14a21..00000000000
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.spec.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import { Component } from "@angular/core";
-import { TestBed } from "@angular/core/testing";
-import { Router } from "@angular/router";
-import { RouterTestingModule } from "@angular/router/testing";
-import { MockProxy, mock } from "jest-mock-extended";
-import { of } from "rxjs";
-
-import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
-import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
-import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
-import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
-import { Utils } from "@bitwarden/common/platform/misc/utils";
-import { FakeAccountService, mockAccountServiceWith } from "@bitwarden/common/spec";
-import { UserId } from "@bitwarden/common/types/guid";
-import { ToastService } from "@bitwarden/components";
-import { RouterService } from "@bitwarden/web-vault/app/core";
-
-import { ProjectView } from "../../models/view/project.view";
-import { ProjectService } from "../project.service";
-
-import { projectAccessGuard } from "./project-access.guard";
-
-@Component({
- template: "",
- standalone: false,
-})
-export class GuardedRouteTestComponent {}
-
-@Component({
- template: "",
- standalone: false,
-})
-export class RedirectTestComponent {}
-
-describe("Project Redirect Guard", () => {
- let organizationService: MockProxy;
- let routerService: MockProxy;
- let projectServiceMock: MockProxy;
- let i18nServiceMock: MockProxy;
- let toastService: MockProxy;
- let router: Router;
- let accountService: FakeAccountService;
- const userId = Utils.newGuid() as UserId;
-
- const smOrg1 = { id: "123", canAccessSecretsManager: true } as Organization;
- const projectView = {
- id: "123",
- organizationId: "123",
- name: "project-name",
- creationDate: Date.now.toString(),
- revisionDate: Date.now.toString(),
- read: true,
- write: true,
- } as ProjectView;
-
- beforeEach(async () => {
- organizationService = mock();
- routerService = mock();
- projectServiceMock = mock();
- i18nServiceMock = mock();
- toastService = mock();
- accountService = mockAccountServiceWith(userId);
-
- TestBed.configureTestingModule({
- imports: [
- RouterTestingModule.withRoutes([
- {
- path: "sm/:organizationId/projects/:projectId",
- component: GuardedRouteTestComponent,
- canActivate: [projectAccessGuard],
- },
- {
- path: "sm",
- component: RedirectTestComponent,
- },
- {
- path: "sm/:organizationId/projects",
- component: RedirectTestComponent,
- },
- ]),
- ],
- providers: [
- { provide: OrganizationService, useValue: organizationService },
- { provide: AccountService, useValue: accountService },
- { provide: RouterService, useValue: routerService },
- { provide: ProjectService, useValue: projectServiceMock },
- { provide: I18nService, useValue: i18nServiceMock },
- { provide: ToastService, useValue: toastService },
- ],
- });
-
- router = TestBed.inject(Router);
- });
-
- it("redirects to sm/{orgId}/projects/{projectId} if project exists", async () => {
- // Arrange
- organizationService.organizations$.mockReturnValue(of([smOrg1]));
- projectServiceMock.getByProjectId.mockReturnValue(Promise.resolve(projectView));
-
- // Act
- await router.navigateByUrl("sm/123/projects/123");
-
- // Assert
- expect(router.url).toBe("/sm/123/projects/123");
- });
-
- it("redirects to sm/projects if project does not exist", async () => {
- // Arrange
- organizationService.organizations$.mockReturnValue(of([smOrg1]));
-
- // Act
- await router.navigateByUrl("sm/123/projects/124");
-
- // Assert
- expect(router.url).toBe("/sm/123/projects");
- });
-
- it("redirects to sm/123/projects if exception occurs while looking for Project", async () => {
- // Arrange
- jest.spyOn(projectServiceMock, "getByProjectId").mockImplementation(() => {
- throw new Error("Test error");
- });
- jest.spyOn(i18nServiceMock, "t").mockReturnValue("Project not found");
-
- // Act
- await router.navigateByUrl("sm/123/projects/123");
- // Assert
- expect(toastService.showToast).toHaveBeenCalledWith({
- variant: "error",
- title: null,
- message: "Project not found",
- });
- expect(router.url).toBe("/sm/123/projects");
- });
-});
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.ts
deleted file mode 100644
index 2c6723a56a2..00000000000
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/guards/project-access.guard.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-// FIXME: Update this file to be type safe and remove this and next line
-// @ts-strict-ignore
-import { inject } from "@angular/core";
-import { ActivatedRouteSnapshot, CanActivateFn, createUrlTreeFromSnapshot } from "@angular/router";
-
-import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
-import { ToastService } from "@bitwarden/components";
-
-import { ProjectService } from "../project.service";
-
-/**
- * Redirects to projects list if the user doesn't have access to project.
- */
-export const projectAccessGuard: CanActivateFn = async (route: ActivatedRouteSnapshot) => {
- const projectService = inject(ProjectService);
- const toastService = inject(ToastService);
- const i18nService = inject(I18nService);
-
- try {
- const project = await projectService.getByProjectId(route.params.projectId);
- if (project) {
- return true;
- }
- } catch {
- toastService.showToast({
- variant: "error",
- title: null,
- message: i18nService.t("notFound", i18nService.t("project")),
- });
- return createUrlTreeFromSnapshot(route, ["/sm", route.params.organizationId, "projects"]);
- }
- return createUrlTreeFromSnapshot(route, ["/sm", route.params.organizationId, "projects"]);
-};
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.html
index d9919ef6bac..7a2968cfb2c 100644
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.html
+++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.html
@@ -1,7 +1,7 @@
-
-
+
+
0 && projectSecrets.project?.write"
+ *ngIf="projectSecrets.secrets?.length > 0 && this.writeAccess()"
class="tw-float-right tw-mt-3 tw-items-center"
>
@@ -10,7 +10,7 @@
0 || projectSecrets.project?.write; else contactAdmin"
+ *ngIf="projectSecrets.secrets?.length > 0 || this.writeAccess(); else contactAdmin"
(deleteSecretsEvent)="openDeleteSecret($event)"
(newSecretEvent)="openNewSecretDialog()"
(editSecretEvent)="openEditSecret($event)"
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.ts
index 536739715ff..63284408c1d 100644
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.ts
+++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project-secrets.component.ts
@@ -1,16 +1,8 @@
// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
-import { Component, OnInit } from "@angular/core";
-import { ActivatedRoute } from "@angular/router";
-import {
- combineLatest,
- combineLatestWith,
- filter,
- firstValueFrom,
- Observable,
- startWith,
- switchMap,
-} from "rxjs";
+import { Component, computed, inject, OnInit, Signal } from "@angular/core";
+import { ActivatedRoute, ROUTER_OUTLET_DATA } from "@angular/router";
+import { combineLatestWith, firstValueFrom, Observable, startWith, switchMap } from "rxjs";
import {
getOrganizationById,
@@ -40,7 +32,6 @@ import {
} from "../../secrets/dialog/secret-view-dialog.component";
import { SecretService } from "../../secrets/secret.service";
import { SecretsListComponent } from "../../shared/secrets-list.component";
-import { ProjectService } from "../project.service";
@Component({
selector: "sm-project-secrets",
@@ -54,10 +45,12 @@ export class ProjectSecretsComponent implements OnInit {
private projectId: string;
protected project$: Observable;
private organizationEnabled: boolean;
+ protected project = inject(ROUTER_OUTLET_DATA) as Signal;
+ readonly writeAccess = computed(() => this.project().write);
+ readonly projectExists = computed(() => !!this.project());
constructor(
private route: ActivatedRoute,
- private projectService: ProjectService,
private secretService: SecretService,
private dialogService: DialogService,
private platformUtilsService: PlatformUtilsService,
@@ -68,21 +61,9 @@ export class ProjectSecretsComponent implements OnInit {
) {}
ngOnInit() {
- // Refresh list if project is edited
- const currentProjectEdited = this.projectService.project$.pipe(
- filter((p) => p?.id === this.projectId),
- startWith(null),
- );
-
- this.project$ = combineLatest([this.route.params, currentProjectEdited]).pipe(
- switchMap(([params, _]) => {
- return this.projectService.getByProjectId(params.projectId);
- }),
- );
-
this.secrets$ = this.secretService.secret$.pipe(
startWith(null),
- combineLatestWith(this.route.params, currentProjectEdited),
+ combineLatestWith(this.route.params),
switchMap(async ([_, params]) => {
this.organizationId = params.organizationId;
this.projectId = params.projectId;
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.html b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.html
index d44d7898cac..ef7c8ff1275 100644
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.html
+++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/project/project.component.html
@@ -36,4 +36,4 @@
{{ "editProject" | i18n }}
-
+
diff --git a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-routing.module.ts b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-routing.module.ts
index 231486703c9..6078520989a 100644
--- a/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-routing.module.ts
+++ b/bitwarden_license/bit-web/src/app/secrets-manager/projects/projects-routing.module.ts
@@ -1,7 +1,6 @@
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
-import { projectAccessGuard } from "./guards/project-access.guard";
import { ProjectPeopleComponent } from "./project/project-people.component";
import { ProjectSecretsComponent } from "./project/project-secrets.component";
import { ProjectServiceAccountsComponent } from "./project/project-service-accounts.component";
@@ -16,7 +15,6 @@ const routes: Routes = [
{
path: ":projectId",
component: ProjectComponent,
- canActivate: [projectAccessGuard],
children: [
{
path: "",
From cde4890e5eba782d46a8adc05323c72629d17c73 Mon Sep 17 00:00:00 2001
From: Daniel Riera
Date: Wed, 27 Aug 2025 15:34:35 -0400
Subject: [PATCH 062/167] PM-24791 [Defect] White box behind Save login
notification UI (#16112)
* PM-24791
* update snapshots
---
.../overlay-notifications-content.service.spec.ts.snap | 2 +-
.../content/overlay-notifications-content.service.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap b/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap
index 18c3baa876c..7bdde2560d0 100644
--- a/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap
+++ b/apps/browser/src/autofill/overlay/notifications/content/__snapshots__/overlay-notifications-content.service.spec.ts.snap
@@ -8,7 +8,7 @@ exports[`OverlayNotificationsContentService opening the notification bar creates
`;
diff --git a/apps/browser/src/autofill/overlay/notifications/content/overlay-notifications-content.service.ts b/apps/browser/src/autofill/overlay/notifications/content/overlay-notifications-content.service.ts
index 53cbde9cdfb..c50b30b7f70 100644
--- a/apps/browser/src/autofill/overlay/notifications/content/overlay-notifications-content.service.ts
+++ b/apps/browser/src/autofill/overlay/notifications/content/overlay-notifications-content.service.ts
@@ -55,7 +55,7 @@ export class OverlayNotificationsContentService
position: "relative",
transition: "transform 0.15s ease-out, opacity 0.15s ease",
borderRadius: "4px",
- colorScheme: "normal",
+ colorScheme: "auto",
};
private readonly extensionMessageHandlers: OverlayNotificationsExtensionMessageHandlers = {
openNotificationBar: ({ message }) => this.handleOpenNotificationBarMessage(message),
From 8c51050eda06016c936cfb12d39dd887ddcd14ef Mon Sep 17 00:00:00 2001
From: Jeffrey Holland <124393578+jholland-livefront@users.noreply.github.com>
Date: Thu, 28 Aug 2025 10:55:18 +0200
Subject: [PATCH 063/167] PM-23386 Display autofill options after sync (#15906)
* PM-23386 Display autofill options after sync
* Clear the cipher state instead of changing caching
* Fix `true` param that isn't needed anymore
---
libs/common/src/vault/services/cipher.service.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/libs/common/src/vault/services/cipher.service.ts b/libs/common/src/vault/services/cipher.service.ts
index 60e5bfe04e4..8429c97be2e 100644
--- a/libs/common/src/vault/services/cipher.service.ts
+++ b/libs/common/src/vault/services/cipher.service.ts
@@ -1138,6 +1138,7 @@ export class CipherService implements CipherServiceAbstraction {
}
async replace(ciphers: { [id: string]: CipherData }, userId: UserId): Promise {
+ await this.clearEncryptedCiphersState(userId);
await this.updateEncryptedCipherState(() => ciphers, userId);
}
From ff64cf5063b610d4ea56392158ed00e29ef20fdf Mon Sep 17 00:00:00 2001
From: Andreas Coroiu
Date: Thu, 28 Aug 2025 13:30:57 +0200
Subject: [PATCH 064/167] Fix a cache race condition in local backed session
storage (#16177)
* fix: cache race condition
* fix: typo and order
* feat: tweak log message
---
.../local-backed-session-storage.service.ts | 25 +++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/apps/browser/src/platform/services/local-backed-session-storage.service.ts b/apps/browser/src/platform/services/local-backed-session-storage.service.ts
index 978b993fa4d..9e808de0fd0 100644
--- a/apps/browser/src/platform/services/local-backed-session-storage.service.ts
+++ b/apps/browser/src/platform/services/local-backed-session-storage.service.ts
@@ -73,8 +73,29 @@ export class LocalBackedSessionStorageService
const value = await this.getLocalSessionValue(await this.sessionKey.get(), key);
- this.cache[key] = value;
- return value as T;
+ if (this.cache[key] === undefined && value !== undefined) {
+ // Cache is still empty and we just got a value from local/session storage, cache it.
+ this.cache[key] = value;
+ return value as T;
+ } else if (this.cache[key] === undefined && value === undefined) {
+ // Cache is still empty and we got nothing from local/session storage, no need to modify cache.
+ return value as T;
+ } else if (this.cache[key] !== undefined && value !== undefined) {
+ // Conflict, somebody wrote to the cache while we were reading from storage
+ // but we also got a value from storage. We assume the cache is more up to date
+ // and use that value.
+ this.logService.warning(
+ `Conflict while reading from local session storage, both cache and storage have values. Key: ${key}. Using cached value.`,
+ );
+ return this.cache[key] as T;
+ } else if (this.cache[key] !== undefined && value === undefined) {
+ // Cache was filled after the local/session storage read completed. We got null
+ // from the storage read, but we have a value from the cache, use that.
+ this.logService.warning(
+ `Conflict while reading from local session storage, cache has value but storage does not. Key: ${key}. Using cached value.`,
+ );
+ return this.cache[key] as T;
+ }
}
async has(key: string): Promise {
From 7bc04e2218ebe7b650a0d69580ec9e5e7c6d47ec Mon Sep 17 00:00:00 2001
From: Ike <137194738+ike-kottlowski@users.noreply.github.com>
Date: Thu, 28 Aug 2025 09:54:16 -0400
Subject: [PATCH 065/167] fix: do not fetch refresh token on sync during CLI
login (#16155)
fix: fetching a refresh token on a full sync during api key login on cli caused rate limit issues. we no longer fetch a refresh token on login since we shouldn't need it.
---
apps/cli/src/auth/commands/login.command.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/cli/src/auth/commands/login.command.ts b/apps/cli/src/auth/commands/login.command.ts
index d25e9a70d88..79414784645 100644
--- a/apps/cli/src/auth/commands/login.command.ts
+++ b/apps/cli/src/auth/commands/login.command.ts
@@ -333,7 +333,7 @@ export class LoginCommand {
}
// Run full sync before handling success response or password reset flows (to get Master Password Policies)
- await this.syncService.fullSync(true);
+ await this.syncService.fullSync(true, { skipTokenRefresh: true });
// Handle updating passwords if NOT using an API Key for authentication
if (clientId == null && clientSecret == null) {
From 3202b566142828a6fc668d0526873f75ea051bb0 Mon Sep 17 00:00:00 2001
From: aj-bw <81774843+aj-bw@users.noreply.github.com>
Date: Thu, 28 Aug 2025 10:53:17 -0400
Subject: [PATCH 066/167] [bre-1089] mac desktop publish automation using
fastlane (#16091)
* Use Fastlane to publish to Apple App Store
* Publish MacOS build number as artifact
* Download and source build number from artifact
* Refactor Fastlane file to use already existing builds in TestFlight
* fastfile changes, release workflow changes, gitignore addition
* reorder steps to after dist dir is created
* resolve pathing issue
* upload step path fix
* make comments more clear
* enable phased rollout, add auto-submit checkbox
* move logic from release to publish workflow
* configure dry run properly for MAS
* edit file for testing
* workflow testing
* verbose logging for debugging
* update to look at releases
* remove verbose flag for next test
* add verbose logging back
* disable precheck
* hardcode app v for test
* hardcode app v for testing
* additional test
* log build numbers
* remove testing values, prep for draft PR
* flip metadata bool for testing
* comment out branch check
* hardcode locales
* add metadata and locales change
* lane change
* more logging for finding build
* address logs feedback
* edit_live false
* testing
* extra logging from apple api
* testing
* workaround for attaching build attempt
* workaround patch update
* simplify and retest skip metadata true
* turn precheck true
* remove autosubmit checkbox, add live edit true for testing release notes formatting
* re-org dispatch, rename dir to release_notes, flip live edit to false
* another formatting attempt
* additional formatting changes
* account for double space, add dash to beginning
* different formatting approach
* format test
* simplified notes formatting test, double line after each period
* proper formatting
* rename file for rust linter
* remove testing comments
* remove default string from notes, logic to check for empty release notes in mas_publish, formatting
* add validation logic after publishing
---------
Co-authored-by: Micaiah Martin
---
.github/workflows/build-desktop.yml | 18 +++
.github/workflows/publish-desktop.yml | 108 +++++++++++++++-
.github/workflows/release-desktop.yml | 3 +-
apps/desktop/.gitignore | 5 +
apps/desktop/fastlane/fastfile | 174 ++++++++++++++++++++++++++
5 files changed, 304 insertions(+), 4 deletions(-)
create mode 100644 apps/desktop/fastlane/fastfile
diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml
index e6c77b366b1..8063306662d 100644
--- a/.github/workflows/build-desktop.yml
+++ b/.github/workflows/build-desktop.yml
@@ -1299,6 +1299,7 @@ jobs:
$package = Get-Content -Raw -Path electron-builder.json | ConvertFrom-Json
$package | Add-Member -MemberType NoteProperty -Name buildVersion -Value "$env:BUILD_NUMBER"
$package | ConvertTo-Json -Depth 32 | Set-Content -Path electron-builder.json
+
Write-Output "### MacOS App Store build number: $env:BUILD_NUMBER"
- name: Install Node dependencies
@@ -1374,6 +1375,23 @@ jobs:
CSC_FOR_PULL_REQUEST: true
run: npm run pack:mac:mas
+ - name: Create MacOS App Store build number artifact
+ shell: pwsh
+ env:
+ BUILD_NUMBER: ${{ needs.setup.outputs.build_number }}
+ run: |
+ $buildInfo = @{
+ buildNumber = $env:BUILD_NUMBER
+ }
+ $buildInfo | ConvertTo-Json | Set-Content -Path dist/macos-build-number.json
+
+ - name: Upload MacOS App Store build number artifact
+ uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
+ with:
+ name: macos-build-number.json
+ path: apps/desktop/dist/macos-build-number.json
+ if-no-files-found: error
+
- name: Upload .pkg artifact
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
diff --git a/.github/workflows/publish-desktop.yml b/.github/workflows/publish-desktop.yml
index aafc4d25ed4..9fe8909f8d6 100644
--- a/.github/workflows/publish-desktop.yml
+++ b/.github/workflows/publish-desktop.yml
@@ -18,10 +18,15 @@ on:
type: string
default: latest
electron_rollout_percentage:
- description: 'Staged Rollout Percentage for Electron'
- required: true
+ description: 'Staged Rollout Percentage for Electron (ignored if Electron publish disabled)'
+ required: false
default: '10'
type: string
+ electron_publish:
+ description: 'Publish to Electron (auto-updater)'
+ required: true
+ default: true
+ type: boolean
snap_publish:
description: 'Publish to Snap store'
required: true
@@ -32,6 +37,15 @@ on:
required: true
default: true
type: boolean
+ mas_publish:
+ description: 'Publish to Mac App Store'
+ required: true
+ default: true
+ type: boolean
+ release_notes:
+ description: 'Release Notes'
+ required: false
+ type: string
jobs:
setup:
@@ -71,7 +85,7 @@ jobs:
echo "Release Version: ${{ inputs.version }}"
echo "version=${{ inputs.version }}"
- $TAG_NAME="desktop-v${{ inputs.version }}"
+ TAG_NAME="desktop-v${{ inputs.version }}"
echo "Tag name: $TAG_NAME"
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
@@ -109,6 +123,7 @@ jobs:
name: Electron blob publish
runs-on: ubuntu-22.04
needs: setup
+ if: inputs.electron_publish
permissions:
contents: read
packages: read
@@ -292,6 +307,92 @@ jobs:
run: choco push --source=https://push.chocolatey.org/
working-directory: apps/desktop/dist
+ mas:
+ name: Deploy Mac App Store
+ runs-on: macos-15
+ needs: setup
+ permissions:
+ contents: read
+ id-token: write
+ if: inputs.mas_publish
+ env:
+ _PKG_VERSION: ${{ needs.setup.outputs.release_version }}
+ _RELEASE_TAG: ${{ needs.setup.outputs.tag_name }}
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Validate release notes for MAS
+ if: inputs.mas_publish && (inputs.release_notes == '' || inputs.release_notes == null)
+ run: |
+ echo "❌ Release notes are required when publishing to Mac App Store"
+ echo "Please provide release notes using the 'Release Notes' input field"
+ exit 1
+
+ - name: Download MacOS App Store build number
+ working-directory: apps/desktop
+ run: wget https://github.com/bitwarden/clients/releases/download/${{ env._RELEASE_TAG }}/macos-build-number.json
+
+ - name: Setup Ruby and Install Fastlane
+ uses: ruby/setup-ruby@ca041f971d66735f3e5ff1e21cc13e2d51e7e535 # v1.233.0
+ with:
+ ruby-version: '3.0'
+ bundler-cache: false
+ working-directory: apps/desktop
+
+ - name: Install Fastlane
+ working-directory: apps/desktop
+ run: gem install fastlane
+
+ - name: Log in to Azure
+ uses: bitwarden/gh-actions/azure-login@main
+ with:
+ subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
+ tenant_id: ${{ secrets.AZURE_TENANT_ID }}
+ client_id: ${{ secrets.AZURE_CLIENT_ID }}
+
+ - name: Get Azure Key Vault secrets
+ id: get-kv-secrets
+ uses: bitwarden/gh-actions/get-keyvault-secrets@main
+ with:
+ keyvault: gh-clients
+ secrets: "APP-STORE-CONNECT-AUTH-KEY,APP-STORE-CONNECT-TEAM-ISSUER"
+
+ - name: Log out from Azure
+ uses: bitwarden/gh-actions/azure-logout@main
+
+ - name: Publish to App Store
+ env:
+ APP_STORE_CONNECT_TEAM_ISSUER: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-TEAM-ISSUER }}
+ APP_STORE_CONNECT_AUTH_KEY: ${{ steps.get-kv-secrets.outputs.APP-STORE-CONNECT-AUTH-KEY }}
+ working-directory: apps/desktop
+ run: |
+ BUILD_NUMBER=$(jq -r '.buildNumber' macos-build-number.json)
+ CHANGELOG="${{ inputs.release_notes }}"
+ IS_DRY_RUN="${{ inputs.publish_type == 'Dry Run' }}"
+
+ if [ "$IS_DRY_RUN" = "true" ]; then
+ echo "🧪 DRY RUN MODE - Testing without actual App Store submission"
+ echo "📦 Would publish build $BUILD_NUMBER to Mac App Store"
+ else
+ echo "🚀 PRODUCTION MODE - Publishing to Mac App Store"
+ echo "📦 Publishing build $BUILD_NUMBER to Mac App Store"
+ fi
+
+ echo "📝 Release notes (${#CHANGELOG} chars): ${CHANGELOG:0:100}..."
+
+ # Validate changelog length (App Store limit is 4000 chars)
+ if [ ${#CHANGELOG} -gt 4000 ]; then
+ echo "❌ Release notes too long: ${#CHANGELOG} characters (max 4000)"
+ exit 1
+ fi
+
+ fastlane publish --verbose \
+ app_version:"${{ env._PKG_VERSION }}" \
+ build_number:$BUILD_NUMBER \
+ changelog:"$CHANGELOG" \
+ dry_run:$IS_DRY_RUN
+
update-deployment:
name: Update Deployment Status
runs-on: ubuntu-22.04
@@ -300,6 +401,7 @@ jobs:
- electron-blob
- snap
- choco
+ - mas
permissions:
contents: read
deployments: write
diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml
index 5ce0da4cb4b..bfd6115a1a9 100644
--- a/.github/workflows/release-desktop.yml
+++ b/.github/workflows/release-desktop.yml
@@ -124,7 +124,8 @@ jobs:
apps/desktop/artifacts/Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive,
apps/desktop/artifacts/${{ env.RELEASE_CHANNEL }}.yml,
apps/desktop/artifacts/${{ env.RELEASE_CHANNEL }}-linux.yml,
- apps/desktop/artifacts/${{ env.RELEASE_CHANNEL }}-mac.yml"
+ apps/desktop/artifacts/${{ env.RELEASE_CHANNEL }}-mac.yml,
+ apps/desktop/artifacts/macos-build-number.json"
commit: ${{ github.sha }}
tag: desktop-v${{ env.PKG_VERSION }}
name: Desktop v${{ env.PKG_VERSION }}
diff --git a/apps/desktop/.gitignore b/apps/desktop/.gitignore
index 444c9a85100..083040f7fcd 100644
--- a/apps/desktop/.gitignore
+++ b/apps/desktop/.gitignore
@@ -3,3 +3,8 @@ dist-safari/
*.env
PlugIns/safari.appex/
xcuserdata/
+
+# Fastlane
+fastlane/report.xml
+fastlane/README.md
+fastlane/release_notes/
diff --git a/apps/desktop/fastlane/fastfile b/apps/desktop/fastlane/fastfile
new file mode 100644
index 00000000000..08c35dfa7b3
--- /dev/null
+++ b/apps/desktop/fastlane/fastfile
@@ -0,0 +1,174 @@
+default_platform(:mac)
+
+# Static configuration for the Mac desktop app
+require 'json'
+require 'base64'
+
+APP_CONFIG = {
+ app_identifier: "com.bitwarden.desktop",
+ release_notes_path: "fastlane/release_notes",
+ locales: ["ca", "zh-Hans", "zh-Hant", "da", "nl-NL", "en-US", "fi", "fr-FR", "de-DE", "id", "it", "ja", "ko", "no", "pt-PT", "pt-BR", "ru", "es-ES", "es-MX", "sv", "tr", "vi", "en-GB", "th"]
+}
+
+platform :mac do
+ desc "Prepare release notes from changelog"
+ lane :prepare_release_notes do |options|
+ changelog = options[:changelog] || "Bug fixes and improvements"
+
+ # Split on periods and format with bullet points
+ # Try different formatting approaches for App Store Connect
+ formatted_changelog = changelog
+ .split('.')
+ .map(&:strip)
+ .reject(&:empty?)
+ .map { |item| "• #{item}" }
+ .join("\n")
+
+ UI.message("Original changelog: #{changelog[0,100]}#{changelog.length > 100 ? '...' : ''}")
+ UI.message("Formatted changelog: #{formatted_changelog[0,100]}#{formatted_changelog.length > 100 ? '...' : ''}")
+
+ # Create release notes directories and files for all locales
+ APP_CONFIG[:locales].each do |locale|
+ dir = "release_notes/#{locale}"
+ FileUtils.mkdir_p(dir)
+ File.write("#{dir}/release_notes.txt", formatted_changelog)
+ UI.message("Creating release notes for #{locale}")
+ end
+
+ # Create release notes hash for deliver
+ notes = APP_CONFIG[:locales].each_with_object({}) do |locale, hash|
+ file_path = "release_notes/#{locale}/release_notes.txt"
+ if File.exist?(file_path)
+ hash[locale] = File.read(file_path)
+ else
+ UI.important("No release notes found for #{locale} at #{file_path}, skipping.")
+ end
+ end
+
+ UI.success("✅ Prepared release notes for #{APP_CONFIG[:locales].count} locales")
+ notes
+ end
+
+ desc "Display configuration information"
+ lane :show_config do |options|
+ build_number = (options[:build_number] || ENV["BUILD_NUMBER"]).to_s.strip
+ app_version = (options[:app_version] || ENV["APP_VERSION"]).to_s.strip
+
+ UI.message("📦 App ID: #{APP_CONFIG[:app_identifier]}")
+ UI.message("🏷️ Version: #{app_version.empty? ? '(not set)' : app_version}")
+ UI.message("🔢 Build Number: #{build_number}")
+ UI.message("🌍 Locales: #{APP_CONFIG[:locales].count}")
+ end
+
+ desc "Publish desktop to the Mac App Store"
+ lane :publish do |options|
+ build_number = (options[:build_number] || ENV["BUILD_NUMBER"]).to_s.strip
+ app_version = (options[:app_version] || ENV["APP_VERSION"]).to_s.strip
+ changelog = options[:changelog] || "Bug fixes and improvements"
+ is_dry_run = options[:dry_run] == "true" || options[:dry_run] == true
+
+ if is_dry_run
+ UI.header("🧪 DRY RUN: Testing Bitwarden Desktop App Store submission")
+ else
+ UI.header("🚀 Publishing Bitwarden Desktop to Mac App Store")
+ end
+
+ # Show configuration info
+ show_config(build_number: build_number, app_version: app_version)
+
+ # Validate app_version
+ UI.user_error!("❌ APP_VERSION is required") if app_version.nil? || app_version.empty?
+ # Validate build_number
+ UI.user_error!("❌ BUILD_NUMBER is required") if build_number.nil? || build_number.empty?
+
+ # Prepare release notes for all locales
+ notes = prepare_release_notes(changelog: changelog)
+
+ if is_dry_run
+ UI.important("🧪 DRY RUN MODE - Skipping actual App Store Connect submission")
+ UI.message("✅ Validation passed")
+ UI.message("✅ Release notes prepared for #{APP_CONFIG[:locales].count} locales")
+ UI.message("✅ Release notes: #{changelog[0,100]}#{changelog.length > 100 ? '...' : ''}")
+ UI.success("🎯 DRY RUN COMPLETE - Everything looks ready for production!")
+ next # Use 'next' instead of 'return' in fastlane lanes
+ end
+
+ # Set up App Store Connect API
+ app_store_connect_api_key(
+ key_id: "6TV9MKN3GP",
+ issuer_id: ENV["APP_STORE_CONNECT_TEAM_ISSUER"],
+ key_content: Base64.encode64(ENV["APP_STORE_CONNECT_AUTH_KEY"]),
+ is_key_content_base64: true
+ )
+
+ UI.message("📝 Using release notes for #{notes.keys.count} locales")
+ UI.message("🎯 Publishing version #{app_version} with build #{build_number}")
+
+ # Upload to App Store Connect
+ deliver(
+ platform: "osx",
+ app_identifier: APP_CONFIG[:app_identifier],
+ app_version: app_version,
+ build_number: build_number,
+ metadata_path: "metadata",
+ skip_binary_upload: true,
+ skip_screenshots: true,
+ skip_metadata: false, # Enable metadata upload to include release notes
+ release_notes: notes,
+ edit_live: false,
+ submit_for_review: true, # if this is false, the build number does not attach to the draft
+ phased_release: true, # Enable 7-day phased rollout
+ precheck_include_in_app_purchases: false,
+ run_precheck_before_submit: false,
+ automatic_release: true,
+ force: true
+ )
+
+ # Verify submission in App Store Connect (skip in dry run mode)
+ unless is_dry_run
+ UI.message("⏳ Waiting 60 seconds for App Store Connect to process submission...")
+ sleep(60)
+
+ UI.message("🔍 Verifying submission in App Store Connect...")
+
+ # Find the app
+ app = Spaceship::ConnectAPI::App.find(APP_CONFIG[:app_identifier])
+ UI.user_error!("❌ App not found in App Store Connect") if app.nil?
+
+ # Find the version we just submitted
+ versions = app.get_app_store_versions
+ target_version = nil
+
+ versions.each do |v|
+ if v.version_string == app_version
+ target_version = v
+ break
+ end
+ end
+
+ UI.user_error!("❌ Version #{app_version} not found in App Store Connect after submission") if target_version.nil?
+
+ UI.success("✅ Version #{app_version} found in App Store Connect")
+ UI.message("📊 Current status: #{target_version.app_store_state}")
+
+ # Validate build attachment
+ if target_version.build.nil?
+ UI.user_error!("❌ No build attached to version #{app_version}")
+ elsif target_version.build.version != build_number
+ UI.user_error!("❌ Wrong build attached: found #{target_version.build.version}, expected #{build_number}")
+ else
+ UI.success("✅ Build #{build_number} correctly attached to version #{app_version}")
+ end
+
+ # Check submission status
+ valid_states = ["WAITING_FOR_REVIEW", "IN_REVIEW"]
+ unless valid_states.include?(target_version.app_store_state)
+ UI.user_error!("❌ Unexpected submission state: #{target_version.app_store_state}. Expected one of: #{valid_states.join(', ')}")
+ end
+
+ UI.success("🎉 Verification complete: Version #{app_version} with build #{build_number} successfully submitted!")
+ else
+ UI.success("🧪 DRY RUN: Skipping App Store Connect verification")
+ end
+ end
+end
From 2fe9f4b138c1ae44c9dc5004f725f325c9bc1aaa Mon Sep 17 00:00:00 2001
From: neuronull <9162534+neuronull@users.noreply.github.com>
Date: Thu, 28 Aug 2025 10:42:29 -0600
Subject: [PATCH 067/167] Fix copy labels and toasts for ssh key items in web
and browser (#16154)
---
apps/web/src/locales/en/messages.json | 9 +++++++++
.../sshkey-sections/sshkey-view.component.html | 9 ++++++---
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json
index 7de7f119e3b..08be03f0bed 100644
--- a/apps/web/src/locales/en/messages.json
+++ b/apps/web/src/locales/en/messages.json
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
diff --git a/libs/vault/src/cipher-view/sshkey-sections/sshkey-view.component.html b/libs/vault/src/cipher-view/sshkey-sections/sshkey-view.component.html
index 555f59fd22f..2f5df6aa951 100644
--- a/libs/vault/src/cipher-view/sshkey-sections/sshkey-view.component.html
+++ b/libs/vault/src/cipher-view/sshkey-sections/sshkey-view.component.html
@@ -25,9 +25,10 @@
bitIconButton="bwi-clone"
bitSuffix
type="button"
+ [label]="'copyPrivateKey' | i18n"
[appCopyClick]="sshKey.privateKey"
showToast
- [label]="'copyValue' | i18n"
+ [valueLabel]="'sshPrivateKey' | i18n"
>
@@ -43,9 +44,10 @@
bitIconButton="bwi-clone"
bitSuffix
type="button"
+ [label]="'copyPublicKey' | i18n"
[appCopyClick]="sshKey.publicKey"
showToast
- [label]="'copyValue' | i18n"
+ [valueLabel]="'sshPublicKey' | i18n"
>
@@ -61,9 +63,10 @@
bitIconButton="bwi-clone"
bitSuffix
type="button"
+ [label]="'copyFingerprint' | i18n"
[appCopyClick]="sshKey.keyFingerprint"
showToast
- [label]="'copyValue' | i18n"
+ [valueLabel]="'sshFingerprint' | i18n"
>
From 8aba7757ab98d6876f84c5bbd52192bb66a930ea Mon Sep 17 00:00:00 2001
From: Jonathan Prusik
Date: Thu, 28 Aug 2025 12:50:57 -0400
Subject: [PATCH 068/167] [PM-25122] Top-layer inline menu population (#16175)
* cleanup inline menu content service
* move inline menu button and listElement to top-layer popovers
* update tests
* do not hidePopover on teardown
* watch all top layer candidates and attach event listeners to ensure they stay below the owned experience
* add extra guards to top page observers
* fix checks and cleanup logic
* fix typing issues
* include dialog elements in top layer candidate queries
* send extension message before showing popover
---
.../autofill-inline-menu-content.service.ts | 3 +
...tofill-inline-menu-content.service.spec.ts | 17 ---
.../autofill-inline-menu-content.service.ts | 108 +++++++++++++++---
.../autofill-overlay-content.service.ts | 3 +
.../autofill-overlay-content.service.ts | 7 ++
.../collect-autofill-content.service.ts | 76 ++++++++++++
6 files changed, 182 insertions(+), 32 deletions(-)
diff --git a/apps/browser/src/autofill/overlay/inline-menu/abstractions/autofill-inline-menu-content.service.ts b/apps/browser/src/autofill/overlay/inline-menu/abstractions/autofill-inline-menu-content.service.ts
index dc5a756250b..31bb37c908e 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/abstractions/autofill-inline-menu-content.service.ts
+++ b/apps/browser/src/autofill/overlay/inline-menu/abstractions/autofill-inline-menu-content.service.ts
@@ -9,5 +9,8 @@ export type InlineMenuExtensionMessageHandlers = {
export interface AutofillInlineMenuContentService {
messageHandlers: InlineMenuExtensionMessageHandlers;
isElementInlineMenu(element: HTMLElement): boolean;
+ getOwnedTagNames: () => string[];
+ getUnownedTopLayerItems: (includeCandidates?: boolean) => NodeListOf;
+ refreshTopLayerPosition: () => void;
destroy(): void;
}
diff --git a/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.spec.ts b/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.spec.ts
index 2c9484c3a8b..f1a74556b24 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.spec.ts
+++ b/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.spec.ts
@@ -42,9 +42,6 @@ describe("AutofillInlineMenuContentService", () => {
"sendExtensionMessage",
);
jest.spyOn(autofillInlineMenuContentService as any, "getPageIsOpaque");
- jest
- .spyOn(autofillInlineMenuContentService as any, "getPageTopLayerInUse")
- .mockResolvedValue(false);
});
afterEach(() => {
@@ -390,20 +387,6 @@ describe("AutofillInlineMenuContentService", () => {
expect(globalThis.document.body.insertBefore).not.toHaveBeenCalled();
});
- it("closes the inline menu if the page has content in the top layer", async () => {
- document.querySelector("html").style.opacity = "1";
- document.body.style.opacity = "1";
-
- jest
- .spyOn(autofillInlineMenuContentService as any, "getPageTopLayerInUse")
- .mockResolvedValue(true);
-
- await autofillInlineMenuContentService["handlePageMutations"]([mockBodyMutationRecord]);
-
- expect(autofillInlineMenuContentService["getPageIsOpaque"]).toHaveReturnedWith(true);
- expect(autofillInlineMenuContentService["closeInlineMenu"]).toHaveBeenCalled();
- });
-
it("closes the inline menu if the page body is not sufficiently opaque", async () => {
document.querySelector("html").style.opacity = "0.9";
document.body.style.opacity = "0";
diff --git a/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.ts b/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.ts
index c531215af88..247104e13a5 100644
--- a/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.ts
+++ b/apps/browser/src/autofill/overlay/inline-menu/content/autofill-inline-menu-content.service.ts
@@ -159,6 +159,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
if (!(await this.isInlineMenuButtonVisible())) {
this.appendInlineMenuElementToDom(this.buttonElement);
this.updateInlineMenuElementIsVisibleStatus(AutofillOverlayElement.Button, true);
+ this.buttonElement.showPopover();
}
}
@@ -174,6 +175,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
if (!(await this.isInlineMenuListVisible())) {
this.appendInlineMenuElementToDom(this.listElement);
this.updateInlineMenuElementIsVisibleStatus(AutofillOverlayElement.List, true);
+ this.listElement.showPopover();
}
}
@@ -219,6 +221,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
private createButtonElement() {
if (this.isFirefoxBrowser) {
this.buttonElement = globalThis.document.createElement("div");
+ this.buttonElement.setAttribute("popover", "manual");
new AutofillInlineMenuButtonIframe(this.buttonElement);
return;
@@ -235,6 +238,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
},
);
this.buttonElement = globalThis.document.createElement(customElementName);
+ this.buttonElement.setAttribute("popover", "manual");
}
/**
@@ -244,6 +248,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
private createListElement() {
if (this.isFirefoxBrowser) {
this.listElement = globalThis.document.createElement("div");
+ this.listElement.setAttribute("popover", "manual");
new AutofillInlineMenuListIframe(this.listElement);
return;
@@ -260,6 +265,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
},
);
this.listElement = globalThis.document.createElement(customElementName);
+ this.listElement.setAttribute("popover", "manual");
}
/**
@@ -293,6 +299,8 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
this.containerElementMutationObserver = new MutationObserver(
this.handleContainerElementMutationObserverUpdate,
);
+
+ this.observePageAttributes();
};
/**
@@ -300,9 +308,6 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
* elements are not modified by the website.
*/
private observeCustomElements() {
- this.htmlMutationObserver?.observe(document.querySelector("html"), { attributes: true });
- this.bodyMutationObserver?.observe(document.body, { attributes: true });
-
if (this.buttonElement) {
this.inlineMenuElementsMutationObserver?.observe(this.buttonElement, {
attributes: true,
@@ -314,6 +319,25 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
}
}
+ /**
+ * Sets up mutation observers to verify that the page `html` and `body` attributes
+ * are not altered in a way that would impact safe display of the inline menu.
+ */
+ private observePageAttributes() {
+ if (document.documentElement) {
+ this.htmlMutationObserver?.observe(document.documentElement, { attributes: true });
+ }
+
+ if (document.body) {
+ this.bodyMutationObserver?.observe(document.body, { attributes: true });
+ }
+ }
+
+ private unobservePageAttributes() {
+ this.htmlMutationObserver?.disconnect();
+ this.bodyMutationObserver?.disconnect();
+ }
+
/**
* Disconnects the mutation observers that are used to verify that the inline menu
* elements are not modified by the website.
@@ -405,9 +429,8 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
private checkPageRisks = async () => {
const pageIsOpaque = await this.getPageIsOpaque();
- const pageTopLayerInUse = await this.getPageTopLayerInUse();
- const risksFound = !pageIsOpaque || pageTopLayerInUse;
+ const risksFound = !pageIsOpaque;
if (risksFound) {
this.closeInlineMenu();
@@ -426,12 +449,61 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
};
/**
- * Checks if the page top layer has content (will obscure/overlap the inline menu)
+ * Returns the name of the generated container tags for usage internally to avoid
+ * unintentional targeting of the owned experience.
*/
- private getPageTopLayerInUse = () => {
- const pageHasOpenPopover = !!globalThis.document.querySelector(":popover-open");
+ getOwnedTagNames = (): string[] => {
+ return [
+ ...(this.buttonElement?.tagName ? [this.buttonElement.tagName] : []),
+ ...(this.listElement?.tagName ? [this.listElement.tagName] : []),
+ ];
+ };
- return pageHasOpenPopover;
+ /**
+ * Queries and return elements (excluding those of the inline menu) that exist in the
+ * top-layer via popover or dialog
+ * @param {boolean} [includeCandidates=false] indicate whether top-layer candidate (which
+ * may or may not be active) should be included in the query
+ */
+ getUnownedTopLayerItems = (includeCandidates = false) => {
+ const inlineMenuTagExclusions = [
+ ...(this.buttonElement?.tagName ? [`:not(${this.buttonElement.tagName})`] : []),
+ ...(this.listElement?.tagName ? [`:not(${this.listElement.tagName})`] : []),
+ ":popover-open",
+ ].join("");
+ const selector = [
+ ":modal",
+ inlineMenuTagExclusions,
+ ...(includeCandidates ? ["[popover], dialog"] : []),
+ ].join(",");
+ const otherTopLayeritems = globalThis.document.querySelectorAll(selector);
+
+ return otherTopLayeritems;
+ };
+
+ refreshTopLayerPosition = () => {
+ const otherTopLayerItems = this.getUnownedTopLayerItems();
+
+ // No need to refresh if there are no other top-layer items
+ if (!otherTopLayerItems.length) {
+ return;
+ }
+
+ const buttonInDocument =
+ this.buttonElement &&
+ (globalThis.document.getElementsByTagName(this.buttonElement.tagName)[0] as HTMLElement);
+ const listInDocument =
+ this.listElement &&
+ (globalThis.document.getElementsByTagName(this.listElement.tagName)[0] as HTMLElement);
+ if (buttonInDocument) {
+ buttonInDocument.hidePopover();
+ buttonInDocument.showPopover();
+ }
+
+ if (listInDocument) {
+ listInDocument.hidePopover();
+ listInDocument.showPopover();
+ }
};
/**
@@ -443,12 +515,17 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
private getPageIsOpaque = () => {
// These are computed style values, so we don't need to worry about non-float values
// for `opacity`, here
- const htmlOpacity = globalThis.window.getComputedStyle(
- globalThis.document.querySelector("html"),
- ).opacity;
- const bodyOpacity = globalThis.window.getComputedStyle(
- globalThis.document.querySelector("body"),
- ).opacity;
+ // @TODO for definitive checks, traverse up the node tree from the inline menu container;
+ // nodes can exist between `html` and `body`
+ const htmlElement = globalThis.document.querySelector("html");
+ const bodyElement = globalThis.document.querySelector("body");
+
+ if (!htmlElement || !bodyElement) {
+ return false;
+ }
+
+ const htmlOpacity = globalThis.window.getComputedStyle(htmlElement)?.opacity || "0";
+ const bodyOpacity = globalThis.window.getComputedStyle(bodyElement)?.opacity || "0";
// Any value above this is considered "opaque" for our purposes
const opacityThreshold = 0.6;
@@ -607,5 +684,6 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
destroy() {
this.closeInlineMenu();
this.clearPersistentLastChildOverrideTimeout();
+ this.unobservePageAttributes();
}
}
diff --git a/apps/browser/src/autofill/services/abstractions/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/abstractions/autofill-overlay-content.service.ts
index ddacb547908..56c2d1704d2 100644
--- a/apps/browser/src/autofill/services/abstractions/autofill-overlay-content.service.ts
+++ b/apps/browser/src/autofill/services/abstractions/autofill-overlay-content.service.ts
@@ -39,6 +39,9 @@ export interface AutofillOverlayContentService {
pageDetails: AutofillPageDetails,
): Promise;
blurMostRecentlyFocusedField(isClosingInlineMenu?: boolean): void;
+ getOwnedInlineMenuTagNames(): string[];
+ getUnownedTopLayerItems(includeCandidates?: boolean): NodeListOf | undefined;
+ refreshMenuLayerPosition(): void;
clearUserFilledFields(): void;
destroy(): void;
}
diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts
index 4db00901759..51b7c8c603c 100644
--- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts
+++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts
@@ -225,6 +225,13 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
}
}
+ refreshMenuLayerPosition = () => this.inlineMenuContentService?.refreshTopLayerPosition();
+
+ getOwnedInlineMenuTagNames = () => this.inlineMenuContentService?.getOwnedTagNames() || [];
+
+ getUnownedTopLayerItems = (includeCandidates?: boolean) =>
+ this.inlineMenuContentService?.getUnownedTopLayerItems(includeCandidates);
+
/**
* Clears all cached user filled fields.
*/
diff --git a/apps/browser/src/autofill/services/collect-autofill-content.service.ts b/apps/browser/src/autofill/services/collect-autofill-content.service.ts
index c6af9739773..1e59da17699 100644
--- a/apps/browser/src/autofill/services/collect-autofill-content.service.ts
+++ b/apps/browser/src/autofill/services/collect-autofill-content.service.ts
@@ -49,6 +49,7 @@ export class CollectAutofillContentService implements CollectAutofillContentServ
private mutationObserver: MutationObserver;
private mutationsQueue: MutationRecord[][] = [];
private updateAfterMutationIdleCallback: NodeJS.Timeout | number;
+ private ownedExperienceTagNames: string[] = [];
private readonly updateAfterMutationTimeout = 1000;
private readonly formFieldQueryString;
private readonly nonInputFormFieldTags = new Set(["textarea", "select"]);
@@ -85,6 +86,9 @@ export class CollectAutofillContentService implements CollectAutofillContentServ
* @public
*/
async getPageDetails(): Promise {
+ // Set up listeners on top-layer candidates that predate Mutation Observer setup
+ this.setupInitialTopLayerListeners();
+
if (!this.mutationObserver) {
this.setupMutationObserver();
}
@@ -919,6 +923,18 @@ export class CollectAutofillContentService implements CollectAutofillContentServ
return this.nonInputFormFieldTags.has(nodeTagName) && !nodeHasBwIgnoreAttribute;
}
+ private setupInitialTopLayerListeners = () => {
+ const unownedTopLayerItems = this.autofillOverlayContentService?.getUnownedTopLayerItems(true);
+
+ if (unownedTopLayerItems?.length) {
+ for (const unownedElement of unownedTopLayerItems) {
+ if (this.shouldListenToTopLayerCandidate(unownedElement)) {
+ this.setupTopLayerCandidateListener(unownedElement);
+ }
+ }
+ }
+ };
+
/**
* Sets up a mutation observer on the body of the document. Observes changes to
* DOM elements to ensure we have an updated set of autofill field data.
@@ -1044,6 +1060,8 @@ export class CollectAutofillContentService implements CollectAutofillContentServ
* @private
*/
private processMutationRecord(mutation: MutationRecord) {
+ this.handleTopLayerChanges(mutation);
+
if (
mutation.type === "childList" &&
(this.isAutofillElementNodeMutated(mutation.removedNodes, true) ||
@@ -1058,6 +1076,64 @@ export class CollectAutofillContentService implements CollectAutofillContentServ
}
}
+ private setupTopLayerCandidateListener = (element: Element) => {
+ const ownedTags = this.autofillOverlayContentService.getOwnedInlineMenuTagNames() || [];
+ this.ownedExperienceTagNames = ownedTags;
+
+ if (!ownedTags.includes(element.tagName)) {
+ element.addEventListener("toggle", (event: ToggleEvent) => {
+ if (event.newState === "open") {
+ // Add a slight delay (but faster than a user's reaction), to ensure the layer
+ // positioning happens after any triggered toggle has completed.
+ setTimeout(this.autofillOverlayContentService.refreshMenuLayerPosition, 100);
+ }
+ });
+ }
+ };
+
+ private isPopoverAttribute = (attr: string | null) => {
+ const popoverAttributes = new Set(["popover", "popovertarget", "popovertargetaction"]);
+
+ return attr && popoverAttributes.has(attr.toLowerCase());
+ };
+
+ private shouldListenToTopLayerCandidate = (element: Element) => {
+ return (
+ !this.ownedExperienceTagNames.includes(element.tagName) &&
+ (element.tagName === "DIALOG" ||
+ Array.from(element.attributes || []).some((attribute) =>
+ this.isPopoverAttribute(attribute.name),
+ ))
+ );
+ };
+
+ /**
+ * Checks if a mutation record is related features that utilize the top layer.
+ * If so, it then calls `setupTopLayerElementListener` for future event
+ * listening on the relevant element.
+ *
+ * @param mutation - The MutationRecord to check
+ */
+ private handleTopLayerChanges = (mutation: MutationRecord) => {
+ // Check attribute mutations
+ if (mutation.type === "attributes" && this.isPopoverAttribute(mutation.attributeName)) {
+ this.setupTopLayerCandidateListener(mutation.target as Element);
+ }
+
+ // Check added nodes for dialog or popover attributes
+ if (mutation.type === "childList" && mutation.addedNodes?.length > 0) {
+ for (const node of mutation.addedNodes) {
+ const mutationElement = node as Element;
+
+ if (this.shouldListenToTopLayerCandidate(mutationElement)) {
+ this.setupTopLayerCandidateListener(mutationElement);
+ }
+ }
+ }
+
+ return;
+ };
+
/**
* Checks if the passed nodes either contain or are autofill elements.
*
From 3b5342dfb3ec19992c055ad97b009a3f13e9297e Mon Sep 17 00:00:00 2001
From: Github Actions
Date: Thu, 28 Aug 2025 16:58:09 +0000
Subject: [PATCH 069/167] Bumped client version(s)
---
apps/browser/package.json | 2 +-
apps/browser/src/manifest.json | 2 +-
apps/browser/src/manifest.v3.json | 2 +-
package-lock.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/apps/browser/package.json b/apps/browser/package.json
index 0f47e5d93d3..7f381254722 100644
--- a/apps/browser/package.json
+++ b/apps/browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@bitwarden/browser",
- "version": "2025.8.1",
+ "version": "2025.8.2",
"scripts": {
"build": "npm run build:chrome",
"build:chrome": "cross-env BROWSER=chrome MANIFEST_VERSION=3 NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
diff --git a/apps/browser/src/manifest.json b/apps/browser/src/manifest.json
index 8eb970de6d2..bb3162254e1 100644
--- a/apps/browser/src/manifest.json
+++ b/apps/browser/src/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "__MSG_extName__",
"short_name": "Bitwarden",
- "version": "2025.8.1",
+ "version": "2025.8.2",
"description": "__MSG_extDesc__",
"default_locale": "en",
"author": "Bitwarden Inc.",
diff --git a/apps/browser/src/manifest.v3.json b/apps/browser/src/manifest.v3.json
index c4c47f7aacf..ba202d067d1 100644
--- a/apps/browser/src/manifest.v3.json
+++ b/apps/browser/src/manifest.v3.json
@@ -3,7 +3,7 @@
"minimum_chrome_version": "102.0",
"name": "__MSG_extName__",
"short_name": "Bitwarden",
- "version": "2025.8.1",
+ "version": "2025.8.2",
"description": "__MSG_extDesc__",
"default_locale": "en",
"author": "Bitwarden Inc.",
diff --git a/package-lock.json b/package-lock.json
index 842480f56da..8119056b69d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -191,7 +191,7 @@
},
"apps/browser": {
"name": "@bitwarden/browser",
- "version": "2025.8.1"
+ "version": "2025.8.2"
},
"apps/cli": {
"name": "@bitwarden/cli",
From c828b3c4f4dc7e88819cf3f3c3e5d3cc8db52b31 Mon Sep 17 00:00:00 2001
From: Patrick-Pimentel-Bitwarden
Date: Thu, 28 Aug 2025 13:47:05 -0400
Subject: [PATCH 070/167] Auth/pm 23620/auth request answering service (#15760)
* feat(notification-processing): [PM-19877] System Notification Implementation - Implemented auth request answering service.
* test(notification-processing): [PM-19877] System Notification Implementation - Added tests.
---
apps/browser/package.json | 2 +
apps/browser/src/_locales/en/messages.json | 12 ++
.../browser/src/background/main.background.ts | 39 +++-
.../actions/browser-actions.service.ts | 4 +-
...rowser-system-notification.service.spec.ts | 196 ++++++++++++++++++
.../browser-system-notification.service.ts | 39 ++--
.../src/popup/services/services.module.ts | 12 +-
.../src/services/jslib-services.module.ts | 28 +++
...h-request-answering.service.abstraction.ts | 8 +
.../enums/auth-server-notification-tags.ts | 3 +
.../auth-request-answering.service.spec.ts | 131 ++++++++++++
.../auth-request-answering.service.ts | 70 +++++++
...upported-auth-request-answering.service.ts | 17 ++
.../default-notifications.service.spec.ts | 17 +-
.../default-server-notifications.service.ts | 15 +-
.../system-notifications.service.ts | 2 +-
16 files changed, 569 insertions(+), 26 deletions(-)
create mode 100644 apps/browser/src/platform/system-notifications/browser-system-notification.service.spec.ts
create mode 100644 libs/common/src/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction.ts
create mode 100644 libs/common/src/auth/enums/auth-server-notification-tags.ts
create mode 100644 libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.spec.ts
create mode 100644 libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.ts
create mode 100644 libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts
diff --git a/apps/browser/package.json b/apps/browser/package.json
index 7f381254722..3cfc4377227 100644
--- a/apps/browser/package.json
+++ b/apps/browser/package.json
@@ -14,6 +14,8 @@
"build:watch:firefox": "npm run build:firefox -- --watch",
"build:watch:opera": "npm run build:opera -- --watch",
"build:watch:safari": "npm run build:safari -- --watch",
+ "build:watch:firefox:mv3": "cross-env MANIFEST_VERSION=3 npm run build:firefox -- --watch",
+ "build:watch:safari:mv3": "cross-env MANIFEST_VERSION=3 npm run build:safari -- --watch",
"build:prod:chrome": "cross-env NODE_ENV=production npm run build:chrome",
"build:prod:edge": "cross-env NODE_ENV=production npm run build:edge",
"build:prod:firefox": "cross-env NODE_ENV=production npm run build:firefox",
diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json
index 00e83004016..bb2483daf3b 100644
--- a/apps/browser/src/_locales/en/messages.json
+++ b/apps/browser/src/_locales/en/messages.json
@@ -5107,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts
index 096bbe76e40..df29502edeb 100644
--- a/apps/browser/src/background/main.background.ts
+++ b/apps/browser/src/background/main.background.ts
@@ -2,7 +2,7 @@
// @ts-strict-ignore
import "core-js/proposals/explicit-resource-management";
-import { filter, firstValueFrom, map, merge, Subject, timeout } from "rxjs";
+import { filter, firstValueFrom, map, merge, Subject, switchMap, timeout } from "rxjs";
import { CollectionService, DefaultCollectionService } from "@bitwarden/admin-console/common";
import {
@@ -29,6 +29,7 @@ import { DefaultPolicyService } from "@bitwarden/common/admin-console/services/p
import { PolicyApiService } from "@bitwarden/common/admin-console/services/policy/policy-api.service";
import { ProviderService } from "@bitwarden/common/admin-console/services/provider.service";
import { AccountService as AccountServiceAbstraction } from "@bitwarden/common/auth/abstractions/account.service";
+import { AuthRequestAnsweringServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction";
import { AuthService as AuthServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth.service";
import { AvatarService as AvatarServiceAbstraction } from "@bitwarden/common/auth/abstractions/avatar.service";
import { DevicesServiceAbstraction } from "@bitwarden/common/auth/abstractions/devices/devices.service.abstraction";
@@ -37,8 +38,10 @@ import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/
import { TokenService as TokenServiceAbstraction } from "@bitwarden/common/auth/abstractions/token.service";
import { UserVerificationApiServiceAbstraction } from "@bitwarden/common/auth/abstractions/user-verification/user-verification-api.service.abstraction";
import { UserVerificationService as UserVerificationServiceAbstraction } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction";
+import { AuthServerNotificationTags } from "@bitwarden/common/auth/enums/auth-server-notification-tags";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
import { AccountServiceImplementation } from "@bitwarden/common/auth/services/account.service";
+import { AuthRequestAnsweringService } from "@bitwarden/common/auth/services/auth-request-answering/auth-request-answering.service";
import { AuthService } from "@bitwarden/common/auth/services/auth.service";
import { AvatarService } from "@bitwarden/common/auth/services/avatar.service";
import { DefaultActiveUserAccessor } from "@bitwarden/common/auth/services/default-active-user.accessor";
@@ -345,6 +348,7 @@ export default class MainBackground {
serverNotificationsService: ServerNotificationsService;
systemNotificationService: SystemNotificationsService;
actionsService: ActionsService;
+ authRequestAnsweringService: AuthRequestAnsweringServiceAbstraction;
stateService: StateServiceAbstraction;
userNotificationSettingsService: UserNotificationSettingsServiceAbstraction;
autofillSettingsService: AutofillSettingsServiceAbstraction;
@@ -1107,13 +1111,22 @@ export default class MainBackground {
if ("notifications" in chrome) {
this.systemNotificationService = new BrowserSystemNotificationService(
- this.logService,
this.platformUtilsService,
);
} else {
this.systemNotificationService = new UnsupportedSystemNotificationsService();
}
+ this.authRequestAnsweringService = new AuthRequestAnsweringService(
+ this.accountService,
+ this.actionsService,
+ this.authService,
+ this.i18nService,
+ this.masterPasswordService,
+ this.platformUtilsService,
+ this.systemNotificationService,
+ );
+
this.serverNotificationsService = new DefaultServerNotificationsService(
this.logService,
this.syncService,
@@ -1125,6 +1138,7 @@ export default class MainBackground {
new SignalRConnectionService(this.apiService, this.logService),
this.authService,
this.webPushConnectionService,
+ this.authRequestAnsweringService,
this.configService,
);
@@ -1376,6 +1390,10 @@ export default class MainBackground {
if (this.webPushConnectionService instanceof WorkerWebPushConnectionService) {
this.webPushConnectionService.start();
}
+
+ // Putting this here so that all other services are initialized prior to trying to hook up
+ // subscriptions to the notification chrome events.
+ this.initNotificationSubscriptions();
}
async bootstrap() {
@@ -1761,6 +1779,23 @@ export default class MainBackground {
}
}
+ /**
+ * This function is for creating any subscriptions for the background service worker. We do this
+ * here because it's important to run this during the evaluation period of the browser extension
+ * service worker.
+ */
+ initNotificationSubscriptions() {
+ this.systemNotificationService.notificationClicked$
+ .pipe(
+ filter((n) => n.id.startsWith(AuthServerNotificationTags.AuthRequest + "_")),
+ map((n) => ({ event: n, authRequestId: n.id.split("_")[1] })),
+ switchMap(({ event }) =>
+ this.authRequestAnsweringService.handleAuthRequestNotificationClicked(event),
+ ),
+ )
+ .subscribe();
+ }
+
/**
* Temporary solution to handle initialization of the overlay background behind a feature flag.
* Will be reverted to instantiation within the constructor once the feature flag is removed.
diff --git a/apps/browser/src/platform/actions/browser-actions.service.ts b/apps/browser/src/platform/actions/browser-actions.service.ts
index 112a76cbe3f..9d28240622c 100644
--- a/apps/browser/src/platform/actions/browser-actions.service.ts
+++ b/apps/browser/src/platform/actions/browser-actions.service.ts
@@ -26,7 +26,7 @@ export class BrowserActionsService implements ActionsService {
return;
} else {
this.logService.warning(
- `No openPopup function found on browser actions. On browser: ${deviceType} and manifest version: ${BrowserApi.manifestVersion}`,
+ `No openPopup function found on browser actions. On browser: ${DeviceType[deviceType]} and manifest version: ${BrowserApi.manifestVersion}`,
);
}
break;
@@ -36,7 +36,7 @@ export class BrowserActionsService implements ActionsService {
return;
default:
this.logService.warning(
- `Tried to open the popup from an unsupported device type: ${deviceType}`,
+ `Tried to open the popup from an unsupported device type: ${DeviceType[deviceType]}`,
);
}
} catch (e) {
diff --git a/apps/browser/src/platform/system-notifications/browser-system-notification.service.spec.ts b/apps/browser/src/platform/system-notifications/browser-system-notification.service.spec.ts
new file mode 100644
index 00000000000..a54b288aafe
--- /dev/null
+++ b/apps/browser/src/platform/system-notifications/browser-system-notification.service.spec.ts
@@ -0,0 +1,196 @@
+import { DeviceType } from "@bitwarden/common/enums";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import {
+ ButtonLocation,
+ SystemNotificationCreateInfo,
+} from "@bitwarden/common/platform/system-notifications/system-notifications.service";
+
+import { BrowserSystemNotificationService } from "./browser-system-notification.service";
+
+type TestChromeEvent any> = {
+ addListener: (callback: T) => void;
+ removeListener: (callback: T) => void;
+ // test-only helper
+ emit: (...args: Parameters) => void;
+};
+
+function createTestChromeEvent any>(): TestChromeEvent {
+ const listeners = new Set();
+ return {
+ addListener: jest.fn((cb: T) => listeners.add(cb)),
+ removeListener: jest.fn((cb: T) => listeners.delete(cb)),
+ emit: (...args: Parameters) => listeners.forEach((cb) => cb(...args)),
+ } as TestChromeEvent;
+}
+
+describe("BrowserSystemNotificationService", () => {
+ let platformUtilsService: jest.Mocked;
+ let service: BrowserSystemNotificationService;
+
+ let onButtonClicked: TestChromeEvent<(notificationId: string, buttonIndex: number) => void>;
+ let onClicked: TestChromeEvent<(notificationId: string) => void>;
+
+ beforeEach(() => {
+ onButtonClicked = createTestChromeEvent();
+ onClicked = createTestChromeEvent();
+
+ (global as any).chrome.notifications = {
+ onButtonClicked,
+ onClicked,
+ create: jest.fn((idOrOptions: any, optionsOrCallback: any, callback?: any) => {
+ if (typeof idOrOptions === "string") {
+ const cb = callback as (id: string) => void;
+ if (cb) {
+ cb(idOrOptions);
+ }
+ return;
+ }
+ const cb = optionsOrCallback as (id: string) => void;
+ if (cb) {
+ cb("generated-id");
+ }
+ }),
+ clear: jest.fn(),
+ } as any;
+
+ platformUtilsService = {
+ getDevice: jest.fn().mockReturnValue(DeviceType.ChromeExtension),
+ } as any;
+
+ service = new BrowserSystemNotificationService(platformUtilsService);
+ });
+
+ describe("isSupported", () => {
+ it("returns true when chrome.notifications exists", () => {
+ expect(service.isSupported()).toBe(true);
+ });
+
+ it("returns false when chrome.notifications is missing", () => {
+ const original = (global as any).chrome.notifications;
+ delete (global as any).chrome.notifications;
+ expect(service.isSupported()).toBe(false);
+ (global as any).chrome.notifications = original;
+ });
+ });
+
+ describe("create", () => {
+ it("passes id and options with buttons on non-Firefox", async () => {
+ const createInfo = {
+ id: "notif-1",
+ title: "Test Title",
+ body: "Body",
+ buttons: [{ title: "A" }, { title: "B" }],
+ };
+
+ let capturedId: string | undefined;
+ let capturedOptions: any;
+ (chrome.notifications.create as jest.Mock).mockImplementationOnce(
+ (id: string, options: any, cb: (id: string) => void) => {
+ capturedId = id;
+ capturedOptions = options;
+ cb(id);
+ },
+ );
+
+ const id = await service.create(createInfo);
+
+ expect(id).toBe("notif-1");
+ expect(capturedId).toBe("notif-1");
+ expect(capturedOptions.title).toBe("Test Title");
+ expect(capturedOptions.message).toBe("Body");
+ expect(capturedOptions.type).toBe("basic");
+ expect(capturedOptions.iconUrl).toContain("images/icon128.png");
+ expect(capturedOptions.buttons).toEqual([{ title: "A" }, { title: "B" }]);
+ });
+
+ it("omits buttons on Firefox", async () => {
+ platformUtilsService.getDevice.mockReturnValue(DeviceType.FirefoxExtension);
+
+ const createInfo = {
+ id: "notif-2",
+ title: "Title",
+ body: "Body",
+ buttons: [{ title: "X" }],
+ };
+
+ let capturedOptions: any;
+ (chrome.notifications.create as jest.Mock).mockImplementationOnce(
+ (_id: string, options: any, cb: (id: string) => void) => {
+ capturedOptions = options;
+ cb(_id);
+ },
+ );
+
+ await service.create(createInfo);
+
+ expect("buttons" in capturedOptions).toBe(false);
+ expect(capturedOptions.title).toBe("Title");
+ expect(capturedOptions.message).toBe("Body");
+ });
+
+ it("supports creating without an id", async () => {
+ const createInfo: SystemNotificationCreateInfo = {
+ title: "No Id",
+ body: "Body",
+ buttons: [],
+ };
+
+ let calledWithOptionsOnly = false;
+ (chrome.notifications.create as jest.Mock).mockImplementationOnce(
+ (options: any, cb: (id: string) => void) => {
+ calledWithOptionsOnly = typeof options === "object" && cb != null;
+ cb("generated-id");
+ },
+ );
+
+ const id = await service.create(createInfo);
+ expect(id).toBe("generated-id");
+ expect(calledWithOptionsOnly).toBe(true);
+ });
+ });
+
+ describe("clear", () => {
+ it("invokes chrome.notifications.clear with the id", async () => {
+ await service.clear({ id: "to-clear" });
+ expect(chrome.notifications.clear).toHaveBeenCalledWith("to-clear");
+ });
+ });
+
+ describe("notificationClicked$", () => {
+ it("emits when a button is clicked", (done) => {
+ const expectEvent = {
+ id: "nid-1",
+ buttonIdentifier: 1,
+ };
+
+ service.notificationClicked$.subscribe((evt) => {
+ try {
+ expect(evt).toEqual(expectEvent);
+ done();
+ } catch (e) {
+ done(e);
+ }
+ });
+
+ onButtonClicked.emit("nid-1", 1);
+ });
+
+ it("emits when the notification itself is clicked", (done) => {
+ const expectEvent = {
+ id: "nid-2",
+ buttonIdentifier: ButtonLocation.NotificationButton,
+ };
+
+ service.notificationClicked$.subscribe((evt) => {
+ try {
+ expect(evt).toEqual(expectEvent);
+ done();
+ } catch (e) {
+ done(e);
+ }
+ });
+
+ onClicked.emit("nid-2");
+ });
+ });
+});
diff --git a/apps/browser/src/platform/system-notifications/browser-system-notification.service.ts b/apps/browser/src/platform/system-notifications/browser-system-notification.service.ts
index 26b49515b82..e0b2716a19b 100644
--- a/apps/browser/src/platform/system-notifications/browser-system-notification.service.ts
+++ b/apps/browser/src/platform/system-notifications/browser-system-notification.service.ts
@@ -1,6 +1,6 @@
import { map, merge, Observable } from "rxjs";
-import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { DeviceType } from "@bitwarden/common/enums";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import {
ButtonLocation,
@@ -15,10 +15,7 @@ import { fromChromeEvent } from "../browser/from-chrome-event";
export class BrowserSystemNotificationService implements SystemNotificationsService {
notificationClicked$: Observable;
- constructor(
- private logService: LogService,
- private platformUtilsService: PlatformUtilsService,
- ) {
+ constructor(private readonly platformUtilsService: PlatformUtilsService) {
this.notificationClicked$ = merge(
fromChromeEvent(chrome.notifications.onButtonClicked).pipe(
map(([notificationId, buttonIndex]) => ({
@@ -37,16 +34,28 @@ export class BrowserSystemNotificationService implements SystemNotificationsServ
async create(createInfo: SystemNotificationCreateInfo): Promise {
return new Promise((resolve) => {
- chrome.notifications.create(
- {
- iconUrl: chrome.runtime.getURL("images/icon128.png"),
- message: createInfo.body,
- type: "basic",
- title: createInfo.title,
- buttons: createInfo.buttons.map((value) => ({ title: value.title })),
- },
- (notificationId) => resolve(notificationId),
- );
+ const deviceType: DeviceType = this.platformUtilsService.getDevice();
+
+ const options: chrome.notifications.NotificationOptions = {
+ iconUrl: chrome.runtime.getURL("images/icon128.png"),
+ message: createInfo.body,
+ type: "basic",
+ title: createInfo.title,
+ buttons: createInfo.buttons.map((value) => ({ title: value.title })),
+ };
+
+ // Firefox notification api does not support buttons.
+ if (deviceType === DeviceType.FirefoxExtension) {
+ delete options.buttons;
+ }
+
+ if (createInfo.id != null) {
+ chrome.notifications.create(createInfo.id, options, (notificationId) =>
+ resolve(notificationId),
+ );
+ } else {
+ chrome.notifications.create(options, (notificationId) => resolve(notificationId));
+ }
});
}
diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts
index aaf85389f9c..1372059d867 100644
--- a/apps/browser/src/popup/services/services.module.ts
+++ b/apps/browser/src/popup/services/services.module.ts
@@ -556,6 +556,16 @@ const safeProviders: SafeProvider[] = [
PlatformUtilsService,
],
}),
+ safeProvider({
+ provide: ActionsService,
+ useClass: BrowserActionsService,
+ deps: [LogService, PlatformUtilsService],
+ }),
+ safeProvider({
+ provide: SystemNotificationsService,
+ useClass: BrowserSystemNotificationService,
+ deps: [PlatformUtilsService],
+ }),
safeProvider({
provide: Fido2UserVerificationService,
useClass: Fido2UserVerificationService,
@@ -588,7 +598,7 @@ const safeProviders: SafeProvider[] = [
safeProvider({
provide: SystemNotificationsService,
useClass: BrowserSystemNotificationService,
- deps: [LogService, PlatformUtilsService],
+ deps: [PlatformUtilsService],
}),
safeProvider({
provide: LoginComponentService,
diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts
index f62407eeafc..c6f8d4a3ae9 100644
--- a/libs/angular/src/services/jslib-services.module.ts
+++ b/libs/angular/src/services/jslib-services.module.ts
@@ -87,6 +87,7 @@ import {
InternalAccountService,
} from "@bitwarden/common/auth/abstractions/account.service";
import { AnonymousHubService as AnonymousHubServiceAbstraction } from "@bitwarden/common/auth/abstractions/anonymous-hub.service";
+import { AuthRequestAnsweringServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction";
import { AuthService as AuthServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth.service";
import { AvatarService as AvatarServiceAbstraction } from "@bitwarden/common/auth/abstractions/avatar.service";
import { DevicesServiceAbstraction } from "@bitwarden/common/auth/abstractions/devices/devices.service.abstraction";
@@ -104,6 +105,7 @@ import { WebAuthnLoginServiceAbstraction } from "@bitwarden/common/auth/abstract
import { AccountApiServiceImplementation } from "@bitwarden/common/auth/services/account-api.service";
import { AccountServiceImplementation } from "@bitwarden/common/auth/services/account.service";
import { AnonymousHubService } from "@bitwarden/common/auth/services/anonymous-hub.service";
+import { AuthRequestAnsweringService } from "@bitwarden/common/auth/services/auth-request-answering/auth-request-answering.service";
import { AuthService } from "@bitwarden/common/auth/services/auth.service";
import { AvatarService } from "@bitwarden/common/auth/services/avatar.service";
import { DefaultActiveUserAccessor } from "@bitwarden/common/auth/services/default-active-user.accessor";
@@ -233,6 +235,8 @@ import { ValidationService } from "@bitwarden/common/platform/services/validatio
import { SyncService } from "@bitwarden/common/platform/sync";
// eslint-disable-next-line no-restricted-imports -- Needed for DI
import { DefaultSyncService } from "@bitwarden/common/platform/sync/internal";
+import { SystemNotificationsService } from "@bitwarden/common/platform/system-notifications";
+import { UnsupportedSystemNotificationsService } from "@bitwarden/common/platform/system-notifications/unsupported-system-notifications.service";
import {
DefaultThemeStateService,
ThemeStateService,
@@ -927,6 +931,29 @@ const safeProviders: SafeProvider[] = [
useClass: UnsupportedActionsService,
deps: [],
}),
+ safeProvider({
+ provide: ActionsService,
+ useClass: UnsupportedActionsService,
+ deps: [],
+ }),
+ safeProvider({
+ provide: SystemNotificationsService,
+ useClass: UnsupportedSystemNotificationsService,
+ deps: [],
+ }),
+ safeProvider({
+ provide: AuthRequestAnsweringServiceAbstraction,
+ useClass: AuthRequestAnsweringService,
+ deps: [
+ AccountServiceAbstraction,
+ ActionsService,
+ AuthServiceAbstraction,
+ I18nServiceAbstraction,
+ MasterPasswordServiceAbstraction,
+ PlatformUtilsServiceAbstraction,
+ SystemNotificationsService,
+ ],
+ }),
safeProvider({
provide: ServerNotificationsService,
useClass: devFlagEnabled("noopNotifications")
@@ -943,6 +970,7 @@ const safeProviders: SafeProvider[] = [
SignalRConnectionService,
AuthServiceAbstraction,
WebPushConnectionService,
+ AuthRequestAnsweringServiceAbstraction,
ConfigService,
],
}),
diff --git a/libs/common/src/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction.ts b/libs/common/src/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction.ts
new file mode 100644
index 00000000000..8331ff88d3f
--- /dev/null
+++ b/libs/common/src/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction.ts
@@ -0,0 +1,8 @@
+import { SystemNotificationEvent } from "@bitwarden/common/platform/system-notifications/system-notifications.service";
+import { UserId } from "@bitwarden/user-core";
+
+export abstract class AuthRequestAnsweringServiceAbstraction {
+ abstract receivedPendingAuthRequest(userId: UserId, notificationId: string): Promise;
+
+ abstract handleAuthRequestNotificationClicked(event: SystemNotificationEvent): Promise;
+}
diff --git a/libs/common/src/auth/enums/auth-server-notification-tags.ts b/libs/common/src/auth/enums/auth-server-notification-tags.ts
new file mode 100644
index 00000000000..230d0d9d9de
--- /dev/null
+++ b/libs/common/src/auth/enums/auth-server-notification-tags.ts
@@ -0,0 +1,3 @@
+export const AuthServerNotificationTags = Object.freeze({
+ AuthRequest: "authRequest",
+});
diff --git a/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.spec.ts b/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.spec.ts
new file mode 100644
index 00000000000..b0ed63d7cf1
--- /dev/null
+++ b/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.spec.ts
@@ -0,0 +1,131 @@
+import { mock, MockProxy } from "jest-mock-extended";
+import { of } from "rxjs";
+
+import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
+import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
+import { AuthServerNotificationTags } from "@bitwarden/common/auth/enums/auth-server-notification-tags";
+import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
+import { ForceSetPasswordReason } from "@bitwarden/common/auth/models/domain/force-set-password-reason";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { ActionsService } from "@bitwarden/common/platform/actions";
+import {
+ ButtonLocation,
+ SystemNotificationEvent,
+ SystemNotificationsService,
+} from "@bitwarden/common/platform/system-notifications/system-notifications.service";
+import { UserId } from "@bitwarden/user-core";
+
+import { AuthRequestAnsweringService } from "./auth-request-answering.service";
+
+describe("AuthRequestAnsweringService", () => {
+ let accountService: MockProxy;
+ let actionService: MockProxy;
+ let authService: MockProxy;
+ let i18nService: MockProxy;
+ let masterPasswordService: any; // MasterPasswordServiceAbstraction has many members; we only use forceSetPasswordReason$
+ let platformUtilsService: MockProxy;
+ let systemNotificationsService: MockProxy;
+
+ let sut: AuthRequestAnsweringService;
+
+ const userId = "9f4c3452-6a45-48af-a7d0-74d3e8b65e4c" as UserId;
+
+ beforeEach(() => {
+ accountService = mock();
+ actionService = mock();
+ authService = mock();
+ i18nService = mock();
+ masterPasswordService = { forceSetPasswordReason$: jest.fn() };
+ platformUtilsService = mock();
+ systemNotificationsService = mock();
+
+ // Common defaults
+ authService.activeAccountStatus$ = of(AuthenticationStatus.Locked);
+ accountService.activeAccount$ = of({
+ id: userId,
+ email: "user@example.com",
+ emailVerified: true,
+ name: "User",
+ });
+ accountService.accounts$ = of({
+ [userId]: { email: "user@example.com", emailVerified: true, name: "User" },
+ });
+ (masterPasswordService.forceSetPasswordReason$ as jest.Mock).mockReturnValue(
+ of(ForceSetPasswordReason.None),
+ );
+ platformUtilsService.isPopupOpen.mockResolvedValue(false);
+ i18nService.t.mockImplementation(
+ (key: string, p1?: any) => `${key}${p1 != null ? ":" + p1 : ""}`,
+ );
+ systemNotificationsService.create.mockResolvedValue("notif-id");
+
+ sut = new AuthRequestAnsweringService(
+ accountService,
+ actionService,
+ authService,
+ i18nService,
+ masterPasswordService,
+ platformUtilsService,
+ systemNotificationsService,
+ );
+ });
+
+ describe("handleAuthRequestNotificationClicked", () => {
+ it("clears notification and opens popup when notification body is clicked", async () => {
+ const event: SystemNotificationEvent = {
+ id: "123",
+ buttonIdentifier: ButtonLocation.NotificationButton,
+ };
+
+ await sut.handleAuthRequestNotificationClicked(event);
+
+ expect(systemNotificationsService.clear).toHaveBeenCalledWith({ id: "123" });
+ expect(actionService.openPopup).toHaveBeenCalledTimes(1);
+ });
+
+ it("does nothing when an optional button is clicked", async () => {
+ const event: SystemNotificationEvent = {
+ id: "123",
+ buttonIdentifier: ButtonLocation.FirstOptionalButton,
+ };
+
+ await sut.handleAuthRequestNotificationClicked(event);
+
+ expect(systemNotificationsService.clear).not.toHaveBeenCalled();
+ expect(actionService.openPopup).not.toHaveBeenCalled();
+ });
+ });
+
+ describe("receivedPendingAuthRequest", () => {
+ const authRequestId = "req-abc";
+
+ it("creates a system notification when popup is not open", async () => {
+ platformUtilsService.isPopupOpen.mockResolvedValue(false);
+ authService.activeAccountStatus$ = of(AuthenticationStatus.Unlocked);
+
+ await sut.receivedPendingAuthRequest(userId, authRequestId);
+
+ expect(i18nService.t).toHaveBeenCalledWith("accountAccessRequested");
+ expect(i18nService.t).toHaveBeenCalledWith("confirmAccessAttempt", "user@example.com");
+ expect(systemNotificationsService.create).toHaveBeenCalledWith({
+ id: `${AuthServerNotificationTags.AuthRequest}_${authRequestId}`,
+ title: "accountAccessRequested",
+ body: "confirmAccessAttempt:user@example.com",
+ buttons: [],
+ });
+ });
+
+ it("does not create a notification when popup is open, user is active, unlocked, and no force set password", async () => {
+ platformUtilsService.isPopupOpen.mockResolvedValue(true);
+ authService.activeAccountStatus$ = of(AuthenticationStatus.Unlocked);
+ (masterPasswordService.forceSetPasswordReason$ as jest.Mock).mockReturnValue(
+ of(ForceSetPasswordReason.None),
+ );
+
+ await sut.receivedPendingAuthRequest(userId, authRequestId);
+
+ expect(systemNotificationsService.create).not.toHaveBeenCalled();
+ });
+ });
+});
diff --git a/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.ts b/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.ts
new file mode 100644
index 00000000000..a562125d1fd
--- /dev/null
+++ b/libs/common/src/auth/services/auth-request-answering/auth-request-answering.service.ts
@@ -0,0 +1,70 @@
+import { firstValueFrom } from "rxjs";
+
+import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
+import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
+import { AuthServerNotificationTags } from "@bitwarden/common/auth/enums/auth-server-notification-tags";
+import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
+import { ForceSetPasswordReason } from "@bitwarden/common/auth/models/domain/force-set-password-reason";
+import { getUserId } from "@bitwarden/common/auth/services/account.service";
+import { MasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { ActionsService } from "@bitwarden/common/platform/actions";
+import {
+ ButtonLocation,
+ SystemNotificationEvent,
+ SystemNotificationsService,
+} from "@bitwarden/common/platform/system-notifications/system-notifications.service";
+import { UserId } from "@bitwarden/user-core";
+
+import { AuthRequestAnsweringServiceAbstraction } from "../../abstractions/auth-request-answering/auth-request-answering.service.abstraction";
+
+export class AuthRequestAnsweringService implements AuthRequestAnsweringServiceAbstraction {
+ constructor(
+ private readonly accountService: AccountService,
+ private readonly actionService: ActionsService,
+ private readonly authService: AuthService,
+ private readonly i18nService: I18nService,
+ private readonly masterPasswordService: MasterPasswordServiceAbstraction,
+ private readonly platformUtilsService: PlatformUtilsService,
+ private readonly systemNotificationsService: SystemNotificationsService,
+ ) {}
+
+ async handleAuthRequestNotificationClicked(event: SystemNotificationEvent): Promise {
+ if (event.buttonIdentifier === ButtonLocation.NotificationButton) {
+ await this.systemNotificationsService.clear({
+ id: `${event.id}`,
+ });
+ await this.actionService.openPopup();
+ }
+ }
+
+ async receivedPendingAuthRequest(userId: UserId, authRequestId: string): Promise {
+ const authStatus = await firstValueFrom(this.authService.activeAccountStatus$);
+ const activeUserId = await firstValueFrom(this.accountService.activeAccount$.pipe(getUserId));
+ const forceSetPasswordReason = await firstValueFrom(
+ this.masterPasswordService.forceSetPasswordReason$(userId),
+ );
+
+ // Is the popup already open?
+ if (
+ (await this.platformUtilsService.isPopupOpen()) &&
+ authStatus === AuthenticationStatus.Unlocked &&
+ activeUserId === userId &&
+ forceSetPasswordReason === ForceSetPasswordReason.None
+ ) {
+ // TODO: Handled in 14934
+ } else {
+ // Get the user's email to include in the system notification
+ const accounts = await firstValueFrom(this.accountService.accounts$);
+ const emailForUser = accounts[userId].email;
+
+ await this.systemNotificationsService.create({
+ id: `${AuthServerNotificationTags.AuthRequest}_${authRequestId}`,
+ title: this.i18nService.t("accountAccessRequested"),
+ body: this.i18nService.t("confirmAccessAttempt", emailForUser),
+ buttons: [],
+ });
+ }
+ }
+}
diff --git a/libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts b/libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts
new file mode 100644
index 00000000000..c4f503bd39c
--- /dev/null
+++ b/libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts
@@ -0,0 +1,17 @@
+import { SystemNotificationEvent } from "@bitwarden/common/platform/system-notifications/system-notifications.service";
+import { UserId } from "@bitwarden/user-core";
+
+import { AuthRequestAnsweringServiceAbstraction } from "../../abstractions/auth-request-answering/auth-request-answering.service.abstraction";
+
+export class UnsupportedAuthRequestAnsweringService
+ implements AuthRequestAnsweringServiceAbstraction
+{
+ constructor() {}
+ async handleAuthRequestNotificationClicked(event: SystemNotificationEvent): Promise {
+ throw new Error("Received pending auth request not supported.");
+ }
+
+ async receivedPendingAuthRequest(userId: UserId, notificationId: string): Promise {
+ throw new Error("Received pending auth request not supported.");
+ }
+}
diff --git a/libs/common/src/platform/server-notifications/internal/default-notifications.service.spec.ts b/libs/common/src/platform/server-notifications/internal/default-notifications.service.spec.ts
index 9f42328d573..2d12027e19f 100644
--- a/libs/common/src/platform/server-notifications/internal/default-notifications.service.spec.ts
+++ b/libs/common/src/platform/server-notifications/internal/default-notifications.service.spec.ts
@@ -1,9 +1,11 @@
import { mock, MockProxy } from "jest-mock-extended";
-import { BehaviorSubject, bufferCount, firstValueFrom, ObservedValueOf, of, Subject } from "rxjs";
+import { BehaviorSubject, bufferCount, firstValueFrom, ObservedValueOf, Subject } from "rxjs";
// This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop.
// eslint-disable-next-line no-restricted-imports
import { LogoutReason } from "@bitwarden/auth/common";
+import { AuthRequestAnsweringServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction";
+import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { awaitAsync } from "../../../../spec";
import { Matrix } from "../../../../spec/matrix";
@@ -39,6 +41,7 @@ describe("NotificationsService", () => {
let signalRNotificationConnectionService: MockProxy;
let authService: MockProxy;
let webPushNotificationConnectionService: MockProxy;
+ let authRequestAnsweringService: MockProxy;
let configService: MockProxy;
let activeAccount: BehaviorSubject>;
@@ -66,9 +69,16 @@ describe("NotificationsService", () => {
signalRNotificationConnectionService = mock();
authService = mock();
webPushNotificationConnectionService = mock();
+ authRequestAnsweringService = mock();
configService = mock();
- configService.getFeatureFlag$.mockReturnValue(of(true));
+ // For these tests, use the active-user implementation (feature flag disabled)
+ configService.getFeatureFlag$.mockImplementation((flag: FeatureFlag) => {
+ const flagValueByFlag: Partial> = {
+ [FeatureFlag.PushNotificationsWhenLocked]: true,
+ };
+ return new BehaviorSubject(flagValueByFlag[flag] ?? false) as any;
+ });
activeAccount = new BehaviorSubject>(null);
accountService.activeAccount$ = activeAccount.asObservable();
@@ -109,6 +119,7 @@ describe("NotificationsService", () => {
signalRNotificationConnectionService,
authService,
webPushNotificationConnectionService,
+ authRequestAnsweringService,
configService,
);
});
@@ -116,7 +127,7 @@ describe("NotificationsService", () => {
const mockUser1 = "user1" as UserId;
const mockUser2 = "user2" as UserId;
- function emitActiveUser(userId: UserId) {
+ function emitActiveUser(userId: UserId | null) {
if (userId == null) {
activeAccount.next(null);
} else {
diff --git a/libs/common/src/platform/server-notifications/internal/default-server-notifications.service.ts b/libs/common/src/platform/server-notifications/internal/default-server-notifications.service.ts
index d21074f5bbf..89e88d645c6 100644
--- a/libs/common/src/platform/server-notifications/internal/default-server-notifications.service.ts
+++ b/libs/common/src/platform/server-notifications/internal/default-server-notifications.service.ts
@@ -4,6 +4,7 @@ import {
distinctUntilChanged,
EMPTY,
filter,
+ firstValueFrom,
map,
mergeMap,
Observable,
@@ -14,6 +15,7 @@ import {
// This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop.
// eslint-disable-next-line no-restricted-imports
import { LogoutReason } from "@bitwarden/auth/common";
+import { AuthRequestAnsweringServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction";
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { AccountService } from "../../../auth/abstractions/account.service";
@@ -57,6 +59,7 @@ export class DefaultServerNotificationsService implements ServerNotificationsSer
private readonly signalRConnectionService: SignalRConnectionService,
private readonly authService: AuthService,
private readonly webPushConnectionService: WebPushConnectionService,
+ private readonly authRequestAnsweringService: AuthRequestAnsweringServiceAbstraction,
private readonly configService: ConfigService,
) {
this.notifications$ = this.accountService.activeAccount$.pipe(
@@ -227,8 +230,16 @@ export class DefaultServerNotificationsService implements ServerNotificationsSer
await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);
break;
case NotificationType.AuthRequest:
- // create notification
-
+ if (
+ await firstValueFrom(
+ this.configService.getFeatureFlag$(FeatureFlag.PM14938_BrowserExtensionLoginApproval),
+ )
+ ) {
+ await this.authRequestAnsweringService.receivedPendingAuthRequest(
+ notification.payload.userId,
+ notification.payload.id,
+ );
+ }
this.messagingService.send("openLoginApproval", {
notificationId: notification.payload.id,
});
diff --git a/libs/common/src/platform/system-notifications/system-notifications.service.ts b/libs/common/src/platform/system-notifications/system-notifications.service.ts
index 54369231967..f36e7da96ad 100644
--- a/libs/common/src/platform/system-notifications/system-notifications.service.ts
+++ b/libs/common/src/platform/system-notifications/system-notifications.service.ts
@@ -1,6 +1,6 @@
import { Observable } from "rxjs";
-// This is currently tailored for chrome extension's api, if safari works
+// This is currently tailored for Chrome extension's api, if Safari works
// differently where clicking a notification button produces a different
// identifier we need to reconcile that here.
export const ButtonLocation = Object.freeze({
From 5176fab8a074123e895ec404544b9cf51abadaaa Mon Sep 17 00:00:00 2001
From: Matt Andreko
Date: Thu, 28 Aug 2025 16:11:19 -0400
Subject: [PATCH 071/167] Added explicit permissions to check-run (#15135)
---
.github/workflows/chromatic.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml
index d0b9cab4c45..793fb52eabf 100644
--- a/.github/workflows/chromatic.yml
+++ b/.github/workflows/chromatic.yml
@@ -11,6 +11,8 @@ on:
branches:
- "main"
+permissions: {}
+
jobs:
check-run:
name: Check PR run
From 774505a89a48a15d2f84d59161047c1142040a6c Mon Sep 17 00:00:00 2001
From: Github Actions
Date: Thu, 28 Aug 2025 21:52:41 +0000
Subject: [PATCH 072/167] Bumped Desktop client to 2025.8.3
---
apps/desktop/package.json | 2 +-
apps/desktop/src/package-lock.json | 4 ++--
apps/desktop/src/package.json | 2 +-
package-lock.json | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index ff958c0d8e6..df79a106393 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.2",
+ "version": "2025.8.3",
"keywords": [
"bitwarden",
"password",
diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json
index 4be839e28c2..7b5e1922fb8 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.2",
+ "version": "2025.8.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bitwarden/desktop",
- "version": "2025.8.2",
+ "version": "2025.8.3",
"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 77b1f186171..9c31f4b90b2 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.2",
+ "version": "2025.8.3",
"author": "Bitwarden Inc. (https://bitwarden.com)",
"homepage": "https://bitwarden.com",
"license": "GPL-3.0",
diff --git a/package-lock.json b/package-lock.json
index 8119056b69d..aa35f522eeb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -277,7 +277,7 @@
},
"apps/desktop": {
"name": "@bitwarden/desktop",
- "version": "2025.8.2",
+ "version": "2025.8.3",
"hasInstallScript": true,
"license": "GPL-3.0"
},
From 63af0ad71184de4964590a38db65262a34609de9 Mon Sep 17 00:00:00 2001
From: Oscar Hinton
Date: Fri, 29 Aug 2025 10:43:38 +0200
Subject: [PATCH 073/167] [CL-836] Extract base css variables (#14733)
* Extract base variables
* Get tw to consume font css variables
---
apps/browser/src/popup/scss/popup.scss | 1 -
apps/desktop/src/scss/styles.scss | 1 -
apps/web/src/scss/styles.scss | 1 -
libs/angular/src/scss/webfonts.css | 8 ------
libs/components/src/styles.scss | 1 -
libs/components/src/theme.css | 27 ++++++++++++++++++
libs/components/src/tw-theme.css | 1 +
.../src}/webfonts/roboto.woff2 | Bin
libs/components/tailwind.config.base.js | 23 ++-------------
9 files changed, 31 insertions(+), 32 deletions(-)
delete mode 100644 libs/angular/src/scss/webfonts.css
create mode 100644 libs/components/src/theme.css
rename libs/{angular/src/scss => components/src}/webfonts/roboto.woff2 (100%)
diff --git a/apps/browser/src/popup/scss/popup.scss b/apps/browser/src/popup/scss/popup.scss
index 9bec001c936..b150de2c75d 100644
--- a/apps/browser/src/popup/scss/popup.scss
+++ b/apps/browser/src/popup/scss/popup.scss
@@ -1,4 +1,3 @@
-@import "../../../../../libs/angular/src/scss/webfonts.css";
@import "../../../../../libs/angular/src/scss/bwicons/styles/style.scss";
@import "variables.scss";
@import "../../../../../libs/angular/src/scss/icons.scss";
diff --git a/apps/desktop/src/scss/styles.scss b/apps/desktop/src/scss/styles.scss
index 187b4bf23c8..c579e6acdc0 100644
--- a/apps/desktop/src/scss/styles.scss
+++ b/apps/desktop/src/scss/styles.scss
@@ -1,4 +1,3 @@
-@import "../../../../libs/angular/src/scss/webfonts.css";
@import "../../../../libs/angular/src/scss/bwicons/styles/style.scss";
@import "@angular/cdk/overlay-prebuilt.css";
@import "variables.scss";
diff --git a/apps/web/src/scss/styles.scss b/apps/web/src/scss/styles.scss
index 34247494459..62a2ac33142 100644
--- a/apps/web/src/scss/styles.scss
+++ b/apps/web/src/scss/styles.scss
@@ -1,6 +1,5 @@
@import "./variables";
-@import "../../../../libs/angular/src/scss/webfonts.css";
@import "../../../../libs/angular/src/scss/bwicons/styles/style.scss";
@import "../../../../libs/angular/src/scss/icons.scss";
@import "../../../../libs/components/src/multi-select/scss/bw.theme";
diff --git a/libs/angular/src/scss/webfonts.css b/libs/angular/src/scss/webfonts.css
deleted file mode 100644
index cd35271bf80..00000000000
--- a/libs/angular/src/scss/webfonts.css
+++ /dev/null
@@ -1,8 +0,0 @@
-@font-face {
- font-family: Roboto;
- src:
- url("webfonts/roboto.woff2") format("woff2 supports variations"),
- url("webfonts/roboto.woff2") format("woff2-variations");
- font-display: swap;
- font-weight: 100 900;
-}
diff --git a/libs/components/src/styles.scss b/libs/components/src/styles.scss
index 6394688b6e8..27970008d8c 100644
--- a/libs/components/src/styles.scss
+++ b/libs/components/src/styles.scss
@@ -3,7 +3,6 @@ $card-icons-base: "../../src/billing/images/cards/";
@import "./variables";
-@import "../../angular/src/scss/webfonts.css";
@import "../../angular/src/scss/bwicons/styles/style.scss";
@import "../../angular/src/scss/icons.scss";
@import "multi-select/scss/bw.theme.scss";
diff --git a/libs/components/src/theme.css b/libs/components/src/theme.css
new file mode 100644
index 00000000000..f9ccc774d43
--- /dev/null
+++ b/libs/components/src/theme.css
@@ -0,0 +1,27 @@
+/**
+ * This file contains CSS variables that can be used across frontend systems.
+ * This allows us to share styling between Angular, content scripts and more.
+ */
+
+/**
+ * Font faces
+ */
+@font-face {
+ font-family: Roboto;
+ src:
+ url("~@bitwarden/components/src/webfonts/roboto.woff2") format("woff2 supports variations"),
+ url("~@bitwarden/components/src/webfonts/roboto.woff2") format("woff2-variations");
+ font-display: swap;
+ font-weight: 100 900;
+}
+
+/**
+ * CSS variables
+ */
+:root {
+ --font-sans:
+ Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
+ "Segoe UI Symbol", "Noto Color Emoji";
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ --font-mono: Menlo, SFMono-Regular, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+}
diff --git a/libs/components/src/tw-theme.css b/libs/components/src/tw-theme.css
index bfdd976366b..51205657e2c 100644
--- a/libs/components/src/tw-theme.css
+++ b/libs/components/src/tw-theme.css
@@ -1,3 +1,4 @@
+@import "theme.css";
@import "@angular/cdk/a11y-prebuilt.css";
@import "@angular/cdk/text-field-prebuilt.css";
@import "./reset.css";
diff --git a/libs/angular/src/scss/webfonts/roboto.woff2 b/libs/components/src/webfonts/roboto.woff2
similarity index 100%
rename from libs/angular/src/scss/webfonts/roboto.woff2
rename to libs/components/src/webfonts/roboto.woff2
diff --git a/libs/components/tailwind.config.base.js b/libs/components/tailwind.config.base.js
index 95b239537ff..6c492900f62 100644
--- a/libs/components/tailwind.config.base.js
+++ b/libs/components/tailwind.config.base.js
@@ -138,26 +138,9 @@ module.exports = {
},
},
fontFamily: {
- sans: [
- "Roboto",
- '"Helvetica Neue"',
- "Helvetica",
- "Arial",
- "sans-serif",
- '"Apple Color Emoji"',
- '"Segoe UI Emoji"',
- '"Segoe UI Symbol"',
- ],
- serif: ["ui-serif", "Georgia", "Cambria", '"Times New Roman"', "Times", "serif"],
- mono: [
- "Menlo",
- "SFMono-Regular",
- "Monaco",
- "Consolas",
- '"Liberation Mono"',
- '"Courier New"',
- "monospace",
- ],
+ sans: "var(--font-sans)",
+ serif: "var(--font-serif)",
+ mono: "var(--font-mono)",
},
ringOffsetColor: ({ theme }) => ({
DEFAULT: theme("colors.background"),
From 756169e5720a14f64cc4b12edaf4272a506d00ef Mon Sep 17 00:00:00 2001
From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com>
Date: Fri, 29 Aug 2025 10:51:31 +0000
Subject: [PATCH 074/167] Autosync the updated translations (#16208)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
apps/browser/src/_locales/ar/messages.json | 28 ++++++---
apps/browser/src/_locales/az/messages.json | 28 ++++++---
apps/browser/src/_locales/be/messages.json | 28 ++++++---
apps/browser/src/_locales/bg/messages.json | 28 ++++++---
apps/browser/src/_locales/bn/messages.json | 28 ++++++---
apps/browser/src/_locales/bs/messages.json | 28 ++++++---
apps/browser/src/_locales/ca/messages.json | 30 ++++++---
apps/browser/src/_locales/cs/messages.json | 28 ++++++---
apps/browser/src/_locales/cy/messages.json | 28 ++++++---
apps/browser/src/_locales/da/messages.json | 28 ++++++---
apps/browser/src/_locales/de/messages.json | 28 ++++++---
apps/browser/src/_locales/el/messages.json | 28 ++++++---
apps/browser/src/_locales/en_GB/messages.json | 28 ++++++---
apps/browser/src/_locales/en_IN/messages.json | 28 ++++++---
apps/browser/src/_locales/es/messages.json | 28 ++++++---
apps/browser/src/_locales/et/messages.json | 28 ++++++---
apps/browser/src/_locales/eu/messages.json | 28 ++++++---
apps/browser/src/_locales/fa/messages.json | 28 ++++++---
apps/browser/src/_locales/fi/messages.json | 28 ++++++---
apps/browser/src/_locales/fil/messages.json | 28 ++++++---
apps/browser/src/_locales/fr/messages.json | 28 ++++++---
apps/browser/src/_locales/gl/messages.json | 28 ++++++---
apps/browser/src/_locales/he/messages.json | 28 ++++++---
apps/browser/src/_locales/hi/messages.json | 28 ++++++---
apps/browser/src/_locales/hr/messages.json | 28 ++++++---
apps/browser/src/_locales/hu/messages.json | 28 ++++++---
apps/browser/src/_locales/id/messages.json | 28 ++++++---
apps/browser/src/_locales/it/messages.json | 28 ++++++---
apps/browser/src/_locales/ja/messages.json | 28 ++++++---
apps/browser/src/_locales/ka/messages.json | 28 ++++++---
apps/browser/src/_locales/km/messages.json | 28 ++++++---
apps/browser/src/_locales/kn/messages.json | 28 ++++++---
apps/browser/src/_locales/ko/messages.json | 28 ++++++---
apps/browser/src/_locales/lt/messages.json | 28 ++++++---
apps/browser/src/_locales/lv/messages.json | 28 ++++++---
apps/browser/src/_locales/ml/messages.json | 28 ++++++---
apps/browser/src/_locales/mr/messages.json | 28 ++++++---
apps/browser/src/_locales/my/messages.json | 28 ++++++---
apps/browser/src/_locales/nb/messages.json | 28 ++++++---
apps/browser/src/_locales/ne/messages.json | 28 ++++++---
apps/browser/src/_locales/nl/messages.json | 28 ++++++---
apps/browser/src/_locales/nn/messages.json | 28 ++++++---
apps/browser/src/_locales/or/messages.json | 28 ++++++---
apps/browser/src/_locales/pl/messages.json | 48 ++++++++------
apps/browser/src/_locales/pt_BR/messages.json | 32 +++++++---
apps/browser/src/_locales/pt_PT/messages.json | 28 ++++++---
apps/browser/src/_locales/ro/messages.json | 28 ++++++---
apps/browser/src/_locales/ru/messages.json | 28 ++++++---
apps/browser/src/_locales/si/messages.json | 28 ++++++---
apps/browser/src/_locales/sk/messages.json | 28 ++++++---
apps/browser/src/_locales/sl/messages.json | 28 ++++++---
apps/browser/src/_locales/sr/messages.json | 28 ++++++---
apps/browser/src/_locales/sv/messages.json | 28 ++++++---
apps/browser/src/_locales/te/messages.json | 28 ++++++---
apps/browser/src/_locales/th/messages.json | 28 ++++++---
apps/browser/src/_locales/tr/messages.json | 28 ++++++---
apps/browser/src/_locales/uk/messages.json | 28 ++++++---
apps/browser/src/_locales/vi/messages.json | 28 ++++++---
apps/browser/src/_locales/zh_CN/messages.json | 28 ++++++---
apps/browser/src/_locales/zh_TW/messages.json | 62 +++++++++++--------
60 files changed, 1230 insertions(+), 510 deletions(-)
diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json
index 9b0efbd8148..aa4edc7ae1f 100644
--- a/apps/browser/src/_locales/ar/messages.json
+++ b/apps/browser/src/_locales/ar/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "لا يمكن لهذا المتصفح معالجة طلبات U2F في هذه النافذة المنبثقة. هل تريد فتح هذا المنبثق في نافذة جديدة بحيث يمكنك تسجيل الدخول باستخدام U2F؟"
},
- "enableFavicon": {
- "message": "إظهار أيقونات الموقع"
- },
- "faviconDesc": {
- "message": "إظهار صورة قابلة للتعرف بجانب كل تسجيل دخول."
- },
- "faviconDescAlt": {
- "message": "إظهار صورة قابلة للتعرف بجانب كل تسجيل دخول. تنطبق على جميع حسابات تسجيل الدخول."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "إظهار عداد الشارات"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json
index 8a3c5dcb3c6..c3b214adb44 100644
--- a/apps/browser/src/_locales/az/messages.json
+++ b/apps/browser/src/_locales/az/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Bu brauzer bu açılan pəncərədə U2F tələblərini emal edə bilmir. U2F istifadə edərək giriş etmək üçün bu açılan pəncərəni yeni bir pəncərədə açmaq istəyirsiniz?"
},
- "enableFavicon": {
- "message": "Veb sayt ikonlarını göstər"
- },
- "faviconDesc": {
- "message": "Hər girişin yanında tanına bilən təsvir göstər."
- },
- "faviconDescAlt": {
- "message": "Hər bir giriş elementinin yanında tanına bilən bir təsvir göstər. Giriş etmiş bütün hesablara aiddir."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Nişan sayğacını göstər"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Uzantı ikonunda giriş üçün avto-doldurma təklif sayını göstər"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Seyfdə cəld kopyalama fəaliyyətlərini göstər"
},
@@ -5563,6 +5569,12 @@
"message": "Girişlərinizi güvənli şəkildə saxlamağınıza kömək etməsi üçün Parol yarat düyməsinə klikləyərək güclü və unikal parolları asanlıqla yaradın.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Bu səhifəyə baxmaq icazəniz yoxdur. Fərqli hesabla giriş etməyə çalışın."
},
diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json
index ed6ac29ea1e..3ac03ea7ae7 100644
--- a/apps/browser/src/_locales/be/messages.json
+++ b/apps/browser/src/_locales/be/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Дадзены браўзер не можа апрацоўваць запыты U2F у гэтым усплывальным акне. Адкрыць гэта ўсплывальнае акно ў новым акне, каб мець магчымасць увайсці ў сістэму, выкарыстоўваючы U2F?"
},
- "enableFavicon": {
- "message": "Паказваць значкі вэб-сайтаў"
- },
- "faviconDesc": {
- "message": "Паказваць распазнавальны відарыс побач з кожным лагінам."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Паказваць лічыльнік на значку"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json
index 97d8c1a3a43..dde16940c01 100644
--- a/apps/browser/src/_locales/bg/messages.json
+++ b/apps/browser/src/_locales/bg/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Този браузър не поддържа заявки чрез U2F в такъв изскачащ прозорец. Искате ли да се отвори нов прозорец, за да може да се впишете чрез U2F?"
},
- "enableFavicon": {
- "message": "Показване на иконките на уеб сайтовете"
- },
- "faviconDesc": {
- "message": "Показване на разпознаваемо изображение до всеки запис."
- },
- "faviconDescAlt": {
- "message": "Показване на разпознаваемо изображение до всеки елемент. Прилага се към всички акаунти, в които сте Вписан(а)."
+ "showIconsChangePasswordUrls": {
+ "message": "Показване на иконките на уеб сайтовете и извличане на адресите за смяна на паролата"
},
"enableBadgeCounter": {
"message": "Показване на брояч в значка"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Показване на броя предложения за автоматично попълване на данни за вписване върху иконката на добавката"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Показване на действията за бързо копиране в трезора"
},
@@ -5563,6 +5569,12 @@
"message": "Създавайте лесно сложни и уникални пароли като щракнете върху бутона за генериране на парола, за да защитите данните си за вписване.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Относно тази настройка"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Битуорден ще използва запазените адреси за вписване, за да определи коя иконка или адрес за смяна на паролата да се ползва, за да улесни работата Ви. Никакви данни не се събират или съхраняват, когато използвате тази услуга."
+ },
"noPermissionsViewPage": {
"message": "Нямате права за преглед на тази страница. Опитайте да се впишете с друг акаунт."
},
diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json
index b816b274766..fd8478ee672 100644
--- a/apps/browser/src/_locales/bn/messages.json
+++ b/apps/browser/src/_locales/bn/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "ব্রাউজারটি এই পপআপ উইন্ডোতে U2F অনুরোধগুলি প্রক্রিয়া করতে পারে না। আপনি কি এই পপআপটি একটি নতুন উইন্ডোতে খুলতে চান যাতে আপনি U2F ব্যবহার করে লগ ইন করতে পারেন?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json
index 347fc68924f..ca6916a7545 100644
--- a/apps/browser/src/_locales/bs/messages.json
+++ b/apps/browser/src/_locales/bs/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json
index 0a9500e3c03..c12d38fe506 100644
--- a/apps/browser/src/_locales/ca/messages.json
+++ b/apps/browser/src/_locales/ca/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Aquest navegador no pot processar sol·licituds U2F en aquesta finestra emergent. Voleu obrir l'emergent en una finestra nova per poder iniciar la sessió mitjançant U2F?"
},
- "enableFavicon": {
- "message": "Mostra les icones dels llocs web"
- },
- "faviconDesc": {
- "message": "Mostra una imatge reconeixible al costat de cada inici de sessió."
- },
- "faviconDescAlt": {
- "message": "Mostra una imatge reconeixible al costat de cada sessió. S'aplica a tots els comptes connectats."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Mostra el comptador insígnia"
@@ -3946,7 +3940,7 @@
"description": "Text to display in overlay when the account is locked."
},
"unlockYourAccountToViewAutofillSuggestions": {
- "message": "Unlock your account to view autofill suggestions",
+ "message": "Desbloqueja el compte per veure els suggeriments d'emplenament automàtic",
"description": "Text to display in overlay when the account is locked."
},
"unlockAccount": {
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostra el nombre de suggeriments d'emplenament automàtic d'inici de sessió a la icona d'extensió"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Mostra accions de còpia ràpida a la caixa forta"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json
index b31c18524cf..fa481763f2e 100644
--- a/apps/browser/src/_locales/cs/messages.json
+++ b/apps/browser/src/_locales/cs/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Tento prohlížeč nemůže zpracovat požadavky U2F ve vyskakovacím okně. Chcete otevřít toto vyskakovací okno v novém okně, abyste se mohli přihlásit pomocí U2F?"
},
- "enableFavicon": {
- "message": "Zobrazit ikony webových stránek"
- },
- "faviconDesc": {
- "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení."
- },
- "faviconDescAlt": {
- "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení. Platí pro všechny přihlášené účty."
+ "showIconsChangePasswordUrls": {
+ "message": "Zobrazit ikony webových stránek a načíst URL adresy pro změnu hesla"
},
"enableBadgeCounter": {
"message": "Zobrazovat počet uložených přihlašovacích údajů na stránce"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Zobrazit počet návrhů automatického vyplňování přihlášení na ikoně rozšíření"
},
+ "accountAccessRequested": {
+ "message": "Požadován přístup k účtu"
+ },
+ "confirmAccessAttempt": {
+ "message": "Potvrďte pokus o přístup z $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Zobrazit akce rychlé kopie v trezoru"
},
@@ -5563,6 +5569,12 @@
"message": "Jednoduše vytvořte silná a unikátní hesla klepnutím na tlačítko Generovat heslo, které Vám pomůže udržet Vaše přihlašovací údaje v bezpečí.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "O tomto nastavení"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden bude používat uložené přihlašovací URI k identifikaci, která ikona nebo změna adresy URL by měla být použita pro zlepšení Vašeho zážitku. Při používání této služby nejsou shromažďovány ani ukládány žádné informace."
+ },
"noPermissionsViewPage": {
"message": "Nemáte oprávnění k zobrazení této stránky. Zkuste se přihlásit jiným účtem."
},
diff --git a/apps/browser/src/_locales/cy/messages.json b/apps/browser/src/_locales/cy/messages.json
index c1ea7f6036c..d4ffa408263 100644
--- a/apps/browser/src/_locales/cy/messages.json
+++ b/apps/browser/src/_locales/cy/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Dangos eiconau gwefannau"
- },
- "faviconDesc": {
- "message": "Dangos delwedd adnabyddadwy wrth ymyl pob eitem."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json
index 52ca548a080..9c4b6bf618b 100644
--- a/apps/browser/src/_locales/da/messages.json
+++ b/apps/browser/src/_locales/da/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Denne browser kan ikke behandle U2F-anmodninger i dette popup-vindue. Vil du åbne denne popup i et nyt vindue, så du kan logge ind ved hjælp af U2F?"
},
- "enableFavicon": {
- "message": "Vis webstedsikoner"
- },
- "faviconDesc": {
- "message": "Vis et genkendeligt billede ud for hvert login."
- },
- "faviconDescAlt": {
- "message": "Vis et genkendeligt billede ved siden af hvert login. Gælder for alle indloggede konti."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Vis badge-tæller"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Vis antal login-autoudfyldningsforslag på udvidelsesikon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Vis hurtig-kopihandlinger på Boks"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json
index 16f572fea2e..34559785737 100644
--- a/apps/browser/src/_locales/de/messages.json
+++ b/apps/browser/src/_locales/de/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Dieser Browser kann U2F-Anfragen in diesem Popup-Fenster nicht verarbeiten. Möchtest du dieses Popup in einem neuen Fenster öffnen, damit du dich mit U2F anmelden kannst?"
},
- "enableFavicon": {
- "message": "Website-Symbole anzeigen"
- },
- "faviconDesc": {
- "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen."
- },
- "faviconDescAlt": {
- "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen. Gilt für alle angemeldeten Konten."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Badge-Zähler anzeigen"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Anzahl der Auto-Ausfüllen-Vorschläge von Zugangsdaten auf dem Erweiterungssymbol anzeigen"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Schnellkopier-Aktionen im Tresor anzeigen"
},
@@ -5563,6 +5569,12 @@
"message": "Generiere ganz einfach starke und einzigartige Passwörter, indem du auf den \"Passwort generieren\"-Button klickst, um dir zu helfen, deine Zugangsdaten sicher zu halten.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Du hast keine Berechtigung, diese Seite anzuzeigen. Versuche dich mit einem anderen Konto anzumelden."
},
diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json
index 6a34fbd4fd0..815630150b2 100644
--- a/apps/browser/src/_locales/el/messages.json
+++ b/apps/browser/src/_locales/el/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Αυτό το πρόγραμμα περιήγησης δεν μπορεί να επεξεργαστεί αιτήματα του U2F σε αυτό το αναδυόμενο παράθυρο. Θέλετε να ανοίξετε το αναδυόμενο σε νέο παράθυρο, ώστε να μπορείτε να συνδεθείτε χρησιμοποιώντας U2F;"
},
- "enableFavicon": {
- "message": "Εμφάνιση εικονιδίων ιστοσελίδας"
- },
- "faviconDesc": {
- "message": "Εμφάνιση μιας αναγνωρίσιμης εικόνας δίπλα σε κάθε σύνδεση."
- },
- "faviconDescAlt": {
- "message": "Εμφάνιση μιας αναγνωρίσιμης εικόνας δίπλα σε κάθε σύνδεση. Ισχύει για όλους τους συνδεδεμένους λογαριασμούς."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Εμφάνιση μετρητή εμβλημάτων"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Εμφάνιση αριθμού προτάσεων αυτόματης συμπλήρωσης σύνδεσης στο εικονίδιο επέκτασης"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Εμφάνιση ενεργειών γρήγορης αντιγραφής στο Θησαυ/κιο"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json
index c74a39779a0..c52538f52f7 100644
--- a/apps/browser/src/_locales/en_GB/messages.json
+++ b/apps/browser/src/_locales/en_GB/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this pop-up window. Do you want to open this pop-up in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognisable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognisable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json
index 57f92159031..718b992d6aa 100644
--- a/apps/browser/src/_locales/en_IN/messages.json
+++ b/apps/browser/src/_locales/en_IN/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this pop-up window. Do you want to open this pop-up in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognisable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json
index 96885ea5e37..ed6c826bd81 100644
--- a/apps/browser/src/_locales/es/messages.json
+++ b/apps/browser/src/_locales/es/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Este navegador no puede procesar las peticiones U2F en esta ventana emergente. ¿Desea abrir esta ventana emergente en una nueva ventana para que pueda iniciar sesión usando U2F?"
},
- "enableFavicon": {
- "message": "Mostrar los iconos del sitio web"
- },
- "faviconDesc": {
- "message": "Mostrar una imagen reconocible junto a cada inicio de sesión."
- },
- "faviconDescAlt": {
- "message": "Mostrar una imagen reconocible junto a cada inicio de sesión. Se aplica a todas las cuentas conectadas."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Mostrar el contador numérico"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostrar número de sugerencias de autocompletado de inicios de sesión en el icono de la extensión"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Crea fácilmente contraseñas seguras y únicas haciendo clic en el botón Generar contraseña para ayudarte a mantener tus inicios de sesión seguros.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "No tienes permisos para ver esta página. Intenta iniciar sesión con otra cuenta."
},
diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json
index 4631cbfe018..d738a3f286b 100644
--- a/apps/browser/src/_locales/et/messages.json
+++ b/apps/browser/src/_locales/et/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Kasutatav brauser ei suuda selles aknas U2F päringuid töödelda. Kas avan uue akna, et saaksid U2F abil sisse logida?"
},
- "enableFavicon": {
- "message": "Kuva veebilehtede ikoone"
- },
- "faviconDesc": {
- "message": "Kuvab iga kirje kõrval lehekülje ikooni."
- },
- "faviconDescAlt": {
- "message": "Näita väikest tuttavat ikooni iga kirje kõrval. Kehtib ka sisselogitud kontodele."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Kuva kirjete arvu"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json
index 70ce920c7a6..be6ef085ef0 100644
--- a/apps/browser/src/_locales/eu/messages.json
+++ b/apps/browser/src/_locales/eu/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Nabigatzaile honek ezin ditu U2F eskaerak prozesatu leiho gainjarri honetan. Leiho berri batean ireki nahi duzu leiho gainjarri hau saioa U2F erabiliz hasi ahal izateko?"
},
- "enableFavicon": {
- "message": "Erakutsi webguneko ikonoak"
- },
- "faviconDesc": {
- "message": "Erakutsi irudi bat saio-hasiera bakoitzaren ondoan."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Erakutsi txartelen kontagailua"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json
index e62839f1f31..99f386041fb 100644
--- a/apps/browser/src/_locales/fa/messages.json
+++ b/apps/browser/src/_locales/fa/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "این مرورگر نمیتواند درخواستهای U2F را در این پنجره پاپ آپ پردازش کند. آیا میخواهید این پنجره را در یک پنجره جدید باز کنید تا بتوانید با استفاده از U2F وارد شوید؟"
},
- "enableFavicon": {
- "message": "نمایش نمادهای وبسایت"
- },
- "faviconDesc": {
- "message": "یک تصویر قابل تشخیص در کنار هر ورود نشان دهید."
- },
- "faviconDescAlt": {
- "message": "نمایش تصویر قابل تشخیص کنار هر ورود به سیستم. برای تمام حسابهای کاربری وارد شده اعمال میشود."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "نمایش شمارنده نشان"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "نمایش تعداد پیشنهادهای پر کردن خودکار ورود در نماد افزونه"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "نمایش عملیات کپی سریع در گاوصندوق"
},
@@ -5563,6 +5569,12 @@
"message": "با کلیک روی دکمه تولید کلمه عبور، بهراحتی کلمات عبور قوی و منحصر به فرد ایجاد کنید تا ورودهای شما ایمن باقی بمانند.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "شما اجازه دسترسی به این صفحه را ندارید. لطفاً با حساب کاربری دیگری وارد شوید."
},
diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json
index 6454e78dcdb..6c2e819c588 100644
--- a/apps/browser/src/_locales/fi/messages.json
+++ b/apps/browser/src/_locales/fi/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Tämä selain ei voi käsitellä U2F-pyyntöjä tässä ponnahdusikkunassa. Haluatko avata näkymän uuteen ikkunaan vahvistaaksesi kirjautumisen U2F-suojausavaimella?"
},
- "enableFavicon": {
- "message": "Näytä verkkosivustojen kuvakkeet"
- },
- "faviconDesc": {
- "message": "Näytä tunnistettava kuva jokaiselle kirjautumistiedolle."
- },
- "faviconDescAlt": {
- "message": "Näytä tunnistettava kuva jokaisen kirjautumistiedon vieressä. Koskee kaikkia kirjautuneita tilejä."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Näytä laskuri"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Näytä automaattitäytön ehdotusten määrä laajennuksen kuvakkeessa"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Näytä pikakopiointitoiminnot holvissa"
},
@@ -5563,6 +5569,12 @@
"message": "Luo helposti vahvoja ja uniikkeja salasanoja klikkaamalla Luo salasana -painiketta. Sen avuilla voit pitää kirjautumisesi turvallisina.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Sinulla ei ole oikeuksia tähän sivuun. Yritä kirjautua sisään toisella tilillä."
},
diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json
index 9ce7ee5d427..6098c7d298f 100644
--- a/apps/browser/src/_locales/fil/messages.json
+++ b/apps/browser/src/_locales/fil/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ang browser na ito ay hindi maaaring prosesuhin ang mga hiling ng U2F sa popup window na ito. Nais mo bang buksan ang popup na ito sa isang bagong window upang ma-log in gamit ang U2F?"
},
- "enableFavicon": {
- "message": "Ipakita ang mga icon ng website"
- },
- "faviconDesc": {
- "message": "Ipakita ang isang kilalang larawan sa tabi ng bawat login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Ipakita ang badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json
index 42a11655ca1..fdbc74bdb2c 100644
--- a/apps/browser/src/_locales/fr/messages.json
+++ b/apps/browser/src/_locales/fr/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ce navigateur ne peut pas traiter les demandes U2F dans cette fenêtre popup. Voulez-vous ouvrir cette popup dans une nouvelle fenêtre afin de pouvoir vous connecter à l'aide de l'U2F ?"
},
- "enableFavicon": {
- "message": "Afficher les icônes des sites web"
- },
- "faviconDesc": {
- "message": "Affiche une image reconnaissable à côté de chaque identifiant."
- },
- "faviconDescAlt": {
- "message": "Affiche une image reconnaissable à côté de chaque identifiant. S'applique à tous les comptes connectés."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Afficher le compteur de badge"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Afficher le nombre de suggestions de saisie automatique d'identifiant sur l'icône d'extension"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Afficher les actions de copie rapide dans le coffre"
},
@@ -5563,6 +5569,12 @@
"message": "Créez facilement des mots de passe forts et uniques en cliquant sur le bouton Générer un mot de passe pour vous aider à sécuriser vos connexions.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Vous n'avez pas les autorisations pour consulter cette page. Essayez de vous connecter avec un autre compte."
},
diff --git a/apps/browser/src/_locales/gl/messages.json b/apps/browser/src/_locales/gl/messages.json
index 0b1b754a41e..2bc1494632c 100644
--- a/apps/browser/src/_locales/gl/messages.json
+++ b/apps/browser/src/_locales/gl/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Este navegador non pode procesar peticións U2F nesta ventá emerxente. Queres convertila nunha ventá completa para poder continuar?"
},
- "enableFavicon": {
- "message": "Amosar iconas web"
- },
- "faviconDesc": {
- "message": "Amosar unha imaxe recoñecible xunto a cada credencial."
- },
- "faviconDescAlt": {
- "message": "Amosar unha imaxe recoñecible xunto a cada credencial. Aplica a tódalas sesións iniciadas en Bitwarden."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Amosar contador na icona"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Amosar o número de suxestións de credenciais na icona da extensión"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Amosar accións rápidas de copiado na caixa forte"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json
index 28667c2b2a4..1550af4b4dd 100644
--- a/apps/browser/src/_locales/he/messages.json
+++ b/apps/browser/src/_locales/he/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "דפדפן זה לא יכול לעבד בקשות U2F בחלון צף זה. האם ברצונך לפתוח את החלון הצף כחלון חדש רגיל כדי שתוכל להכנס באמצעות U2F?"
},
- "enableFavicon": {
- "message": "הצג סמלי אתר אינטרנט"
- },
- "faviconDesc": {
- "message": "הצג תמונה מוכרת ליד כל כניסה."
- },
- "faviconDescAlt": {
- "message": "הצג תמונה מוכרת ליד כל כניסה. חל על כל החשבונות המחוברים."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "הצג מונה סמל"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "הצג את מספר ההצעות למילוי כניסה אוטומטי בסמל ההרחבה"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "הצג פעולות העתקה מהירה בכספת"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json
index 4aed6e60763..c2d645f0806 100644
--- a/apps/browser/src/_locales/hi/messages.json
+++ b/apps/browser/src/_locales/hi/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "यह ब्राउज़र इस पॉपअप विंडो में U2F अनुरोधों को संसाधित नहीं कर सकता है।क्या आप इस पॉपअप को एक नई विंडो में खोलना चाहते हैं ताकि आप U2F का उपयोग करके लॉग इन कर सकें?"
},
- "enableFavicon": {
- "message": "वेबसाइट आइकन दिखाएं"
- },
- "faviconDesc": {
- "message": "प्रत्येक लॉगिन के आगे एक पहचानने योग्य छवि दिखाएं।"
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "बैज काउंटर दिखाएं"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json
index c1244477098..231fbec4b34 100644
--- a/apps/browser/src/_locales/hr/messages.json
+++ b/apps/browser/src/_locales/hr/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ovaj preglednik ne može obraditi U2F zahtjeve u ovom iskočnom prozoru. Želiš li otvoriti ovaj iskočni prozor u novom prozoru za prijavu putem U2F?"
},
- "enableFavicon": {
- "message": "Prikaži ikone mrežnih mjesta"
- },
- "faviconDesc": {
- "message": "Prikaži prepoznatljivu sliku pored svake prijave."
- },
- "faviconDescAlt": {
- "message": "Prikaži prepoznatljivu sliku pokraj svake prijave. Primjenjuje se na sve prijavljene račune."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Prikaži značku brojača"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Prikaži broj prijedloga auto-ispune na ikoni proširenja"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Prikaži akcije brzog kopiranja na trezoru"
},
@@ -5563,6 +5569,12 @@
"message": "Jednostavno stvori jake i sigurne lozinke odabirom tipke Generiraj lozinku kako bi tvoje prijave ostale sigurne.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Nemaš dozvolu za pregled ove stranice. Pokušaj se prijaviti s drugim računom."
},
diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json
index 87020472c53..a7ceb3016ca 100644
--- a/apps/browser/src/_locales/hu/messages.json
+++ b/apps/browser/src/_locales/hu/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ez a böngésző nem dolgozza fel az U2F kéréseket ebben a felbukkanó ablakban. Szeretnénk megnyitni a felbukkanó ablakot új böngészőablakban az U2F segítségével történő bejelentkezéshez?"
},
- "enableFavicon": {
- "message": "Webhely ikonok megjelenítése"
- },
- "faviconDesc": {
- "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett."
- },
- "faviconDescAlt": {
- "message": "Minden bejelentkezés mellett egy felismerhető kép megjelenítése. Minden bejelentkezett fiókra vonatkozik."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Számláló jelvény megjelenítése"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Az automatikus bejelentkezési kitöltési javaslatok számának megjelenítése a bővítmény ikonján"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Gyors másolási műveletek megjelenítése a Széfen"
},
@@ -5563,6 +5569,12 @@
"message": "Könnyedén hozhatunk létre erős és egyedi jelszavakat a Jelszó generálása gombra kattintva, amely segít megőrizni a bejelentkezések biztonságát.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Nincs jogosultság az oldal megtekintéséhez. Próbáljunk meg másik fiókkal bejelentkezni."
},
diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json
index 5698286283c..ce45810e04d 100644
--- a/apps/browser/src/_locales/id/messages.json
+++ b/apps/browser/src/_locales/id/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Peramban ini tidak bisa memproses permintaan U2F di jendela popup ini. Apakah Anda ingin membuka popup ini di jendela baru sehingga Anda dapat masuk menggunakan U2F?"
},
- "enableFavicon": {
- "message": "Tampilkan ikon situs web"
- },
- "faviconDesc": {
- "message": "Tampilkan sebuah gambar yang dapat dikenali di setiap masuk."
- },
- "faviconDescAlt": {
- "message": "Tampilkan sebuah gambar yang dapat dikenali di sebelah tiap login. Diterapkan ke semua akun yang telah masuk."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Tampilkan hitungan di lencana"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Tampilkan jumlah saran isi otomatis login pada ikon pengaya"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Tampilkan tindakan salin cepat pada Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Buat kata sandi yang kuat dan unik dengan mudah dengan menekan pada tombol Buat kata sandi untuk membantu Anda menyimpan login Anda dengan aman.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Anda tidak memiliki izin untuk melihat halaman ini. Coba masuk dengan akun yang berbeda."
},
diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json
index 4742b7c6433..03c8d47e485 100644
--- a/apps/browser/src/_locales/it/messages.json
+++ b/apps/browser/src/_locales/it/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Questo browser non può elaborare richieste U2F in questo pop-up. Aprire questo pop-up in una nuova finestra per accedere usando U2F?"
},
- "enableFavicon": {
- "message": "Mostra icone dei siti"
- },
- "faviconDesc": {
- "message": "Mostra un piccolo logo riconoscibile accanto a ogni login."
- },
- "faviconDescAlt": {
- "message": "Mostra un piccolo logo riconoscibile accanto a ogni login. Si applica a tutti gli account connessi."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Mostra badge contatore"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostra il numero di suggerimenti di riempimento automatico sull'icona dell'estensione"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Mostra azioni di copia rapida nella Cassaforte"
},
@@ -5563,6 +5569,12 @@
"message": "Crea facilmente password forti e uniche cliccando sul pulsante 'Genera password' per aiutarti a mantenere al sicuro i tuoi login.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Non hai i permessi per visualizzare questa pagina. Prova ad accedere con un altro account."
},
diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json
index 174c13d64ce..1a7276c38fd 100644
--- a/apps/browser/src/_locales/ja/messages.json
+++ b/apps/browser/src/_locales/ja/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "このブラウザーでは U2F 要求をポップアップウインドウでは実行できません。U2F でログインできるよう、新しいウインドウで開き直しますか?"
},
- "enableFavicon": {
- "message": "ウェブサイトのアイコンを表示"
- },
- "faviconDesc": {
- "message": "ログイン情報の隣にアイコン画像を表示します"
- },
- "faviconDescAlt": {
- "message": "各ログインの横に認識可能な画像を表示します。すべてのログイン済みアカウントに適用されます。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "バッジカウンターを表示"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "拡張機能アイコンにログイン自動入力の候補の数を表示する"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "保管庫にクイックコピー操作を表示する"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json
index a71f9a9d0e0..5ff5644a75a 100644
--- a/apps/browser/src/_locales/ka/messages.json
+++ b/apps/browser/src/_locales/ka/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/km/messages.json
+++ b/apps/browser/src/_locales/km/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json
index 279c5b28824..63ac0e48ab6 100644
--- a/apps/browser/src/_locales/kn/messages.json
+++ b/apps/browser/src/_locales/kn/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "ಈ ಬ್ರೌಸರ್ ಈ ಪಾಪ್ಅಪ್ ವಿಂಡೋದಲ್ಲಿ ಯು 2 ಎಫ್ ವಿನಂತಿಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ಪಾಪ್ಅಪ್ ಅನ್ನು ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಲು ನೀವು ಬಯಸುವಿರಾ, ಇದರಿಂದ ನೀವು ಯು 2 ಎಫ್ ಬಳಸಿ ಲಾಗ್ ಇನ್ ಆಗಬಹುದು."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json
index d39f111101b..d312ab5f377 100644
--- a/apps/browser/src/_locales/ko/messages.json
+++ b/apps/browser/src/_locales/ko/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "이 브라우저의 팝업 창에서는 U2F 요청을 처리할 수 없습니다. U2F로 로그인할 수 있도록 이 창을 새 창에서 여시겠습니까?"
},
- "enableFavicon": {
- "message": "웹사이트 아이콘 표시하기"
- },
- "faviconDesc": {
- "message": "로그인 정보 옆에 식별용 이미지를 표시합니다."
- },
- "faviconDescAlt": {
- "message": "각 로그인 정보 옆에 인식할 수 있는 이미지를 표시합니다. 모든 로그인된 계정에 적용됩니다."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "배지 갯수 표시"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "확장 아이콘에 로그인 자동 완성 제안 수 표시"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "보관함에서 빠른 복사 기능 표시"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json
index 913d442c88f..8bf7720ffe0 100644
--- a/apps/browser/src/_locales/lt/messages.json
+++ b/apps/browser/src/_locales/lt/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ši naršyklė negali apdoroti U2F prašymų šiame iššokančiame lange. Ar nori atidaryti šį iššokantį langą naujame lange, kad galėtum prisijungti naudodamas (-a) U2F?"
},
- "enableFavicon": {
- "message": "Rodyti tinklalapių ikonėles"
- },
- "faviconDesc": {
- "message": "Rodyti atpažįstamą vaizdą šalia kiekvieno prisijungimo."
- },
- "faviconDescAlt": {
- "message": "Rodyti atpažįstamą vaizdą šalia kiekvieno prisijungimo. Taikoma visoms prisijungusioms paskyroms."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Rodyti ženkliukų skaitiklį"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json
index 14bf2293c41..5220546c2fe 100644
--- a/apps/browser/src/_locales/lv/messages.json
+++ b/apps/browser/src/_locales/lv/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Šis pārlūks nevar apstrādāt U2F pieprasījumus šajā uznirstošajā logā. Vai atvērt to atsevišķā logā, lai varētu pieteikties, izmantojot U2F?"
},
- "enableFavicon": {
- "message": "Rādīt tīmekļvietņu ikonas"
- },
- "faviconDesc": {
- "message": "Attēlot atpazīstamu attēlu pie katra pieteikšanās vienuma."
- },
- "faviconDescAlt": {
- "message": "Parādīt atpazīstamu attēlu pie katra pieteikšanās vienuma. Attiecas uz visiem kontiem, kuros ir notikusi pieteikšanās."
+ "showIconsChangePasswordUrls": {
+ "message": "Rādīt tīmekļvietņu ikonas un iegūt paroles nomaiņas URL"
},
"enableBadgeCounter": {
"message": "Rādīt skaita nozīmīti"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Paplašinājuma ikonā rādīt pieteikšanās automātiskās aizpildes ieteikumu skaitu"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Glabātavā rādīt ātrās kopēšanas darbības"
},
@@ -5563,6 +5569,12 @@
"message": "Vienkārša spēcīgu un neatkārtojamu paroļu izveidošana ar pogu \"Izveidot paroli\", lai palīdzētu uzturēt pieteikšanās vienumus drošus.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Par šo iestatījumu"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden izmantos saglabātos pieteikšanās vienuma URI, lai noteiktu, kuru ikonu vai paroles nomaiņas URL izmantot, lai uzlabotu pieredzi. Šī pakalpojuma izmantošanas laikā nekāda informācija netiek ievākta vai saglabāta."
+ },
"noPermissionsViewPage": {
"message": "Nav atļaujas apskatīt šo lapu. Jāmēģina pieteikties ar citu kontu."
},
diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json
index 55abe605aa7..eeb4dbdf0e6 100644
--- a/apps/browser/src/_locales/ml/messages.json
+++ b/apps/browser/src/_locales/ml/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "ഈ ബ്ര pop സറിന് ഈ പോപ്പ്അപ്പ് വിൻഡോയിൽ U2F അഭ്യർത്ഥനകൾ പ്രോസസ്സ് ചെയ്യാൻ കഴിയില്ല. യു 2 എഫ് ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാൻ ഈ പോപ്പ്അപ്പ് ഒരു പുതിയ വിൻഡോയിൽ തുറക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/mr/messages.json b/apps/browser/src/_locales/mr/messages.json
index 0c2336ab264..ee16836b19e 100644
--- a/apps/browser/src/_locales/mr/messages.json
+++ b/apps/browser/src/_locales/mr/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/my/messages.json b/apps/browser/src/_locales/my/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/my/messages.json
+++ b/apps/browser/src/_locales/my/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json
index b27422f36a1..15120aba2a9 100644
--- a/apps/browser/src/_locales/nb/messages.json
+++ b/apps/browser/src/_locales/nb/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Denne nettleseren kan ikke behandle U2F-forespørsler i dette popup-vinduet. Vil du åpne denne popupen i et nytt vindu, slik at du kan logge deg på med U2F?"
},
- "enableFavicon": {
- "message": "Vis nettsideikoner"
- },
- "faviconDesc": {
- "message": "Vis et gjenkjennelig bilde ved siden av hver innlogging."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Vis merke-teller"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Vis antall auto-utfyllingsforslag for pålogging på utvidelsesikonet"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Vis hurtigkopieringshandlinger i hvelvet"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/ne/messages.json b/apps/browser/src/_locales/ne/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/ne/messages.json
+++ b/apps/browser/src/_locales/ne/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json
index c01d1edf217..d19564bda8e 100644
--- a/apps/browser/src/_locales/nl/messages.json
+++ b/apps/browser/src/_locales/nl/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Deze browser kan U2F-verzoeken niet verwerken in dit popupvenster. Wilt je deze pop-up openen in een nieuw venster zodat je kunt inloggen met U2F?"
},
- "enableFavicon": {
- "message": "Websitepictogrammen weergeven"
- },
- "faviconDesc": {
- "message": "Een herkenbare afbeelding naast iedere login weergeven."
- },
- "faviconDescAlt": {
- "message": "Toon een herkenbare afbeelding naast elke login. Geldt voor alle ingelogde accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Pictogrammen van de website weergeven URL's voor wachtwoordwijzigingen ophalen"
},
"enableBadgeCounter": {
"message": "Teller weergeven"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Aantal login automatisch invullen suggesties op het extensie-pictogram weergeven"
},
+ "accountAccessRequested": {
+ "message": "Accounttoegang aangevraagd"
+ },
+ "confirmAccessAttempt": {
+ "message": "Inlogpoging voor $EMAIL$ bevestigen",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Toon snelle kopieeracties in de kluis"
},
@@ -5563,6 +5569,12 @@
"message": "Maak eenvoudig sterke en unieke wachtwoorden door op de knop Wachtwoord genereren te klikken om je logins veilig te houden.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Over deze instelling"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden gebruikt opgeslagen login-URI's om te bepalen welk pictogram of URL voor het wijzigen van het wachtwoord moet worden gebruikt om je ervaring te verbeteren. Er wordt geen informatie verzameld of opgeslagen wanneer je deze service gebruikt."
+ },
"noPermissionsViewPage": {
"message": "Je hebt geen rechten om deze pagina te bekijken. Probeer in te loggen met een ander account."
},
diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/nn/messages.json
+++ b/apps/browser/src/_locales/nn/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/or/messages.json b/apps/browser/src/_locales/or/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/or/messages.json
+++ b/apps/browser/src/_locales/or/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json
index 71e07ceb352..39b78cc1d6e 100644
--- a/apps/browser/src/_locales/pl/messages.json
+++ b/apps/browser/src/_locales/pl/messages.json
@@ -270,7 +270,7 @@
"message": "Uzyskaj podpowiedź do hasła głównego"
},
"continue": {
- "message": "Przejdź"
+ "message": "Kontynuuj"
},
"sendVerificationCode": {
"message": "Wyślij kod weryfikacyjny na adres e-mail"
@@ -291,19 +291,19 @@
"message": "Zmień hasło główne"
},
"continueToWebApp": {
- "message": "Przejść do aplikacji internetowej?"
+ "message": "Kontynuować przejście do aplikacji internetowej?"
},
"continueToWebAppDesc": {
"message": "Odkryj więcej funkcji konta Bitwarden w aplikacji internetowej."
},
"continueToHelpCenter": {
- "message": "Przejść do centrum pomocy?"
+ "message": "Kontynuować przejście do centrum pomocy?"
},
"continueToHelpCenterDesc": {
"message": "Dowiedz się więcej o tym, jak korzystać z centrum pomocy Bitwarden."
},
"continueToBrowserExtensionStore": {
- "message": "Przejść do sklepu z rozszerzeniami przeglądarki?"
+ "message": "Kontynuować przejście do sklepu z rozszerzeniami przeglądarki?"
},
"continueToBrowserExtensionStoreDesc": {
"message": "Pomóż innym sprawdzić, czy Bitwarden jest dla nich odpowiedni. Odwiedź sklep z rozszerzeniami przeglądarki i zostaw ocenę."
@@ -335,7 +335,7 @@
"message": "Więcej od Bitwarden"
},
"continueToBitwardenDotCom": {
- "message": "Przejść do bitwarden.com?"
+ "message": "Kontynuować przejście do bitwarden.com?"
},
"bitwardenForBusiness": {
"message": "Bitwarden dla firm"
@@ -483,7 +483,7 @@
"message": "Opcje"
},
"length": {
- "message": "Długość"
+ "message": "Liczba znaków"
},
"include": {
"message": "Uwzględnij",
@@ -932,7 +932,7 @@
"message": "Zwiększ bezpieczeństwo konta, konfigurując logowanie dwustopniowe w aplikacji internetowej Bitwarden."
},
"twoStepLoginConfirmationTitle": {
- "message": "Przejść do aplikacji internetowej?"
+ "message": "Kontynuować przejście do aplikacji internetowej?"
},
"editedFolder": {
"message": "Folder został zapisany"
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Przeglądarka nie może przetworzyć żądań U2F. Czy chcesz otworzyć nowe okno, aby zalogować się za pomocą U2F?"
},
- "enableFavicon": {
- "message": "Pokaż ikony stron internetowych"
- },
- "faviconDesc": {
- "message": "Pokaż rozpoznawalną ikonę obok danych logowania."
- },
- "faviconDescAlt": {
- "message": "Pokaż rozpoznawalną ikonę obok danych logowania. Dotyczy wszystkich zalogowanych kont."
+ "showIconsChangePasswordUrls": {
+ "message": "Pokaż ikony stron internetowych i pobierz adresy URL do zmiany hasła"
},
"enableBadgeCounter": {
"message": "Pokaż licznik na ikonie"
@@ -4395,11 +4389,11 @@
"description": "Advanced option placeholder for uri option component"
},
"confirmContinueToBrowserSettingsTitle": {
- "message": "Przejść do ustawień przeglądarki?",
+ "message": "Kontynuować przejście do ustawień przeglądarki?",
"description": "Title for dialog which asks if the user wants to proceed to a relevant browser settings page"
},
"confirmContinueToHelpCenter": {
- "message": "Przejść do centrum pomocy?",
+ "message": "Kontynuować przejście do centrum pomocy?",
"description": "Title for dialog which asks if the user wants to proceed to a relevant Help Center page"
},
"confirmContinueToHelpCenterPasswordManagementContent": {
@@ -4986,7 +4980,7 @@
}
},
"reorderToggleButton": {
- "message": "Reorder $LABEL$. Use arrow key to move item up or down.",
+ "message": "Zmień kolejność pola $LABEL$. Użyj klawiszy ze strzałkami, aby przenieść element w górę lub w dół.",
"placeholders": {
"label": {
"content": "$1",
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Pokaż liczbę sugestii autouzupełniania na ikonie rozszerzenia"
},
+ "accountAccessRequested": {
+ "message": "Poproszono o dostęp do konta"
+ },
+ "confirmAccessAttempt": {
+ "message": "Potwierdź próbę dostępu dla $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Pokaż akcje szybkiego kopiowania w sejfie"
},
@@ -5563,6 +5569,12 @@
"message": "Twórz silne i unikalne hasła, klikając przycisk Wygeneruj hasło, aby zapewnić bezpieczeństwo danych logowania.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "O ustawieniu"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden użyje zapisanych adresów URL danych logowania, aby określić, która ikona lub adres URL zmiany hasła powinien zostać użyty w celu poprawy komfortu użytkowania. Usługa nie zapisuje żadnych danych."
+ },
"noPermissionsViewPage": {
"message": "Nie masz uprawnień do przeglądania tej strony. Zaloguj się na inne konto."
},
diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json
index ef13c22f3dc..ba6da6ee58f 100644
--- a/apps/browser/src/_locales/pt_BR/messages.json
+++ b/apps/browser/src/_locales/pt_BR/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Este navegador não pode processar requisições U2F nesta janela popup. Você quer abrir este popup em uma nova janela para que você possa entrar usando U2F?"
},
- "enableFavicon": {
- "message": "Mostrar ícones do site"
- },
- "faviconDesc": {
- "message": "Mostrar uma imagem reconhecível ao lado de cada login."
- },
- "faviconDescAlt": {
- "message": "Mostre uma imagem reconhecível ao lado de cada login. Aplica-se a todas as contas conectadas."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Mostrar contador de insígnia"
@@ -3785,7 +3779,7 @@
"message": "Trust user"
},
"sendsTitleNoItems": {
- "message": "Envie informações confidencias, com segurança",
+ "message": "Envie informações confidenciais com segurança",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendsBodyNoItems": {
@@ -4737,7 +4731,7 @@
"message": "Acesse as suas senhas em qualquer lugar com o aplicativo móvel Bitwarden."
},
"getTheDesktopApp": {
- "message": "Get the desktop app"
+ "message": "Obter o aplicativo para desktop"
},
"getTheDesktopAppDesc": {
"message": "Acesse o seu cofre sem um navegador e, em seguida, configure o desbloqueio com dados biométricos para facilitar o desbloqueio tanto no aplicativo desktop quanto na extensão do navegador."
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostrar o número de sugestões de preenchimento automático de login no ícone da extensão"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Mostrar a opção de cópia rápida no Cofre"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json
index 5ab801b268f..dd0098b863a 100644
--- a/apps/browser/src/_locales/pt_PT/messages.json
+++ b/apps/browser/src/_locales/pt_PT/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Este navegador não pode processar pedidos U2F nesta janela pop-up. Pretende abrir este pop-up numa nova janela para poder iniciar sessão utilizando o U2F?"
},
- "enableFavicon": {
- "message": "Mostrar ícones do site"
- },
- "faviconDesc": {
- "message": "Mostrar uma imagem reconhecível junto a cada credencial."
- },
- "faviconDescAlt": {
- "message": "Mostrar uma imagem reconhecível junto a cada credencial. Aplica-se a todas as contas com sessão iniciada."
+ "showIconsChangePasswordUrls": {
+ "message": "Mostrar ícones de sites e recuperar URLs de alteração de palavra-passe"
},
"enableBadgeCounter": {
"message": "Mostrar distintivo de contador"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Mostrar o número de sugestões de preenchimento automático de credenciais no ícone da extensão"
},
+ "accountAccessRequested": {
+ "message": "Acesso à conta solicitado"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirmar tentativa de acesso para $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Mostrar ações de cópia rápida no cofre"
},
@@ -5563,6 +5569,12 @@
"message": "Crie facilmente palavras-passe fortes e únicas clicando no botão Gerar palavra-passe para o ajudar a manter as suas credenciais seguras.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Acerca desta definição"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "O Bitwarden utilizará os URIs de credenciais guardadas para identificar qual o ícone ou URL de alteração de palavra-passe que deve ser utilizado para melhorar a sua experiência. Nenhuma informação é recolhida ou guardada quando utiliza este serviço."
+ },
"noPermissionsViewPage": {
"message": "Não tem permissões para ver esta página. Tente iniciar sessão com uma conta diferente."
},
diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json
index d2769583bcb..f2b00e4b90e 100644
--- a/apps/browser/src/_locales/ro/messages.json
+++ b/apps/browser/src/_locales/ro/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Acest browser nu poate procesa cererile U2F în această fereastră pop-up. Doriți să deschideți acest pop-up într-o fereastră nouă, astfel încât să vă puteți conecta utilizând U2F?"
},
- "enableFavicon": {
- "message": "Afișați pictogramele site-ului web"
- },
- "faviconDesc": {
- "message": "Afișează o imagine ușor de recunoscut lângă fiecare autentificare."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Afișați contorul de insigne"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json
index d18cf24eb9b..d064d0bef41 100644
--- a/apps/browser/src/_locales/ru/messages.json
+++ b/apps/browser/src/_locales/ru/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Этот браузер не может обрабатывать запросы U2F в этом всплывающем окне. Вы хотите открыть это всплывающее окно в новом окне, чтобы иметь возможность войти в систему, используя U2F?"
},
- "enableFavicon": {
- "message": "Показать значки сайтов"
- },
- "faviconDesc": {
- "message": "Отображать узнаваемое изображение рядом с каждым логином."
- },
- "faviconDescAlt": {
- "message": "Показывать узнаваемое изображение рядом с каждым логином. Применяется ко всем авторизованным аккаунтам."
+ "showIconsChangePasswordUrls": {
+ "message": "Показывать значки сайтов и извлекать URL изменения пароля"
},
"enableBadgeCounter": {
"message": "Показать счетчик на значке"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Показывать количество вариантов автозаполнения логина на значке расширения"
},
+ "accountAccessRequested": {
+ "message": "Запрошен доступ к аккаунту"
+ },
+ "confirmAccessAttempt": {
+ "message": "Подтвердить попытку доступа $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Показать быстрые действия копирования в хранилище"
},
@@ -5563,6 +5569,12 @@
"message": "Легко создавайте надежные и уникальные пароли, нажатием на кнопку 'Сгенерировать пароль', чтобы обеспечить безопасность ваших логинов.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Об этой настройке"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden будет использовать сохраненные URI логинов, чтобы определить, какой значок или URL для смены пароля следует использовать для улучшения вашего взаимодействия. При использовании этого сервиса никакая информация не собирается и не сохраняется."
+ },
"noPermissionsViewPage": {
"message": "У вас нет прав для просмотра этой страницы. Попробуйте авторизоваться под другим аккаунтом."
},
diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json
index 0e4a60b8261..c7098495a36 100644
--- a/apps/browser/src/_locales/si/messages.json
+++ b/apps/browser/src/_locales/si/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "මෙම බ්රවුසරයට මෙම උත්පතන කවුළුව තුළ U2F ඉල්ලීම් සැකසීමට නොහැක. ඔබට U2F භාවිතයෙන් පිවිසිය හැකි වන පරිදි නව කවුළුවක මෙම උත්පතන විවෘත කිරීමට අවශ්යද?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json
index 98babaff777..a354b1f28aa 100644
--- a/apps/browser/src/_locales/sk/messages.json
+++ b/apps/browser/src/_locales/sk/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Tento prehliadač nedokáže spracovať U2F požiadavku v popup okne. Chcete ho otvoriť v novom okne aby ste sa mohli prihlásiť pomocou U2F?"
},
- "enableFavicon": {
- "message": "Zobrazovať favikony stránok"
- },
- "faviconDesc": {
- "message": "Pri každom prihlásení zobrazí rozpoznateľný obrázok."
- },
- "faviconDescAlt": {
- "message": "Vedľa každého účtu zobraziť rozpoznateľný obrázok. Použije sa na všetky prihlásené účty."
+ "showIconsChangePasswordUrls": {
+ "message": "Zobraziť ikony webových stránok a načítať adresy URL na zmenu hesla"
},
"enableBadgeCounter": {
"message": "Zobraziť počítadlo na ikone"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Zobraziť počet odporúčaných prihlasovacích údajov na ikone rozšírenia"
},
+ "accountAccessRequested": {
+ "message": "Žiadosť o prístup k účtu"
+ },
+ "confirmAccessAttempt": {
+ "message": "Potvrďte pokus o prístup pre $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Zobraziť akcie rýchleho kopírovania v trezore"
},
@@ -5563,6 +5569,12 @@
"message": "Jednoducho vytvorte silné a jedinečné heslá kliknutím na tlačidlo Generovať heslo, aby ste zabezpečili prihlasovacie údaje.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "O tomto nastavení"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden použije uložené prihlasovacie URI na určenie ikony alebo adresy URL na zmenu hesla, ktoré by sa mali použiť na zlepšenie vášho zážitku. Pri používaní tejto služby sa nezbierajú ani neukladajú žiadne informácie."
+ },
"noPermissionsViewPage": {
"message": "Nemáte oprávnenie na zobrazenie tejto stránky. Skúste sa prihlásiť pomocou iného účtu."
},
diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json
index 0a7387ee831..418dc7b6285 100644
--- a/apps/browser/src/_locales/sl/messages.json
+++ b/apps/browser/src/_locales/sl/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Ta spletni brskalnik ne more obdelati U2F zahteve v tem pojavnem oknu. Želite odpreti to pojavno okno v novem oknu, tako, da se lahko prijavite z U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json
index e058a805533..b7821bae95e 100644
--- a/apps/browser/src/_locales/sr/messages.json
+++ b/apps/browser/src/_locales/sr/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Овај прегледач не може да обрађује U2F захтеве у овом искачућем прозору. Да ли желите да отворите овај искачући прозор у новом прозору како бисте могли да се пријавите користећи U2F?"
},
- "enableFavicon": {
- "message": "Прикажи иконе сајтова"
- },
- "faviconDesc": {
- "message": "Прикажи препознатљиву слику поред сваке ставке за пријаву."
- },
- "faviconDescAlt": {
- "message": "Приказује препознатљиву слику поред сваке пријаве. Важи за све пријављене налоге."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Прикажи бедж са бројачем"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Прикажи број предлога за ауто-попуњавање пријаве на икони додатка"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Приказати брзе радње копирања у Сефу"
},
@@ -5563,6 +5569,12 @@
"message": "Лако креирајте снажне и јединствене лозинке кликом на дугме „Генерирате лозинку“ да вам помогне да чувате своје пријаве на сигурно.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Немате дозволе за преглед ове странице. Покушајте да се пријавите са другим налогом."
},
diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json
index d6a0b691572..d4351ff057e 100644
--- a/apps/browser/src/_locales/sv/messages.json
+++ b/apps/browser/src/_locales/sv/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Den här webbläsaren kan inte bearbeta U2F-förfrågningar i detta popup-fönster. Vill du öppna ett nytt fönster så att du kan logga in med U2F?"
},
- "enableFavicon": {
- "message": "Visa webbplatsikoner"
- },
- "faviconDesc": {
- "message": "Visa en identifierbar bild bredvid varje inloggning."
- },
- "faviconDescAlt": {
- "message": "Visa en igenkännbar bild bredvid varje inloggning. Gäller för alla inloggade konton."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Visa aktivitetsräknaren"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Visa antal autofyllförslag för inloggning på tilläggsikonen"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Visa snabbkopieringsåtgärder på Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Skapa enkelt starka och unika lösenord genom att klicka på knappen Generera lösenord så att du kan hålla dina inloggningar säkra.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Du har inte behörighet att visa den här sidan. Försök att logga in med ett annat konto."
},
diff --git a/apps/browser/src/_locales/te/messages.json b/apps/browser/src/_locales/te/messages.json
index 9170fd20734..ee92d4c27fb 100644
--- a/apps/browser/src/_locales/te/messages.json
+++ b/apps/browser/src/_locales/te/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json
index 02eb0664472..1b0f6d74589 100644
--- a/apps/browser/src/_locales/th/messages.json
+++ b/apps/browser/src/_locales/th/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "This browser cannot process U2F requests in this popup window. Do you want to open this popup in a new window so that you can log in using U2F?"
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
- },
- "faviconDescAlt": {
- "message": "Show a recognizable image next to each login. Applies to all logged in accounts."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Show badge counter"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Show number of login autofill suggestions on extension icon"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Show quick copy actions on Vault"
},
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json
index 4ed2fa9ef11..70237d9fd55 100644
--- a/apps/browser/src/_locales/tr/messages.json
+++ b/apps/browser/src/_locales/tr/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Bu tarayıcı bu açılır pencerede U2F isteklerini işleyemiyor. U2F kullanarak giriş yapmak için bu açılır pencereyi yeni bir pencerede açmak ister misiniz?"
},
- "enableFavicon": {
- "message": "Web sitesi simgelerini göster"
- },
- "faviconDesc": {
- "message": "Hesapların yanında tanıdık görseller göster."
- },
- "faviconDescAlt": {
- "message": "Her hesabın yanında tanınabilir bir resim göster. Oturum açmış tüm hesaplar için geçerlidir."
+ "showIconsChangePasswordUrls": {
+ "message": "Web sitesi simgelerini göster ve parola değiştirme URL'lerini al"
},
"enableBadgeCounter": {
"message": "Rozet sayacını göster"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Otomatik öneri sayısını uzantı simgesinde göster"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Kasada hızlı kopyalama komutlarını göster"
},
@@ -5563,6 +5569,12 @@
"message": "Güvenli oturumlar açmaya yardımcı olmak için Parola Oluştur düğmesine tıklayarak güçlü ve benzersiz parolalar oluşturun.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "Bu ayar hakkında"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Bu sayfayı görüntüleme izniniz yok. Farklı bir hesapla giriş yapmayı deneyin."
},
diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json
index 79353e6af91..338818404c5 100644
--- a/apps/browser/src/_locales/uk/messages.json
+++ b/apps/browser/src/_locales/uk/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Цей браузер не може обробити U2F запити в цьому виринаючому вікні. Хочете відкрити його у новому вікні, щоб ви змогли увійти з використанням U2F?"
},
- "enableFavicon": {
- "message": "Показувати піктограми вебсайтів"
- },
- "faviconDesc": {
- "message": "Показувати зображення біля кожного запису."
- },
- "faviconDescAlt": {
- "message": "Показувати зображення поруч з кожним записом. Застосовується для всіх облікових записів, до яких виконано вхід."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Показувати лічильник"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Показувати кількість пропозицій автозаповнення на піктограмі розширення"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Показати дії швидкого копіювання у сховищі"
},
@@ -5563,6 +5569,12 @@
"message": "Легко створюйте надійні та унікальні паролі, натиснувши кнопку Генерувати пароль, щоб зберегти свої записи в безпеці.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "У вас немає дозволу переглядати цю сторінку. Спробуйте ввійти з іншим обліковим записом."
},
diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json
index ed717455620..50f4b3978a2 100644
--- a/apps/browser/src/_locales/vi/messages.json
+++ b/apps/browser/src/_locales/vi/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "Trình duyệt này không thể xử lý các yêu cầu U2F trong cửa sổ popup này. Bạn có muốn mở popup này trong cửa sổ mới để bạn có thể đăng nhập thông qua U2F?"
},
- "enableFavicon": {
- "message": "Hiển thị biểu tượng trang web"
- },
- "faviconDesc": {
- "message": "Hiển thị một ảnh nhận dạng bên cạnh mỗi lần đăng nhập."
- },
- "faviconDescAlt": {
- "message": "Hiển thị một biểu tượng dễ nhận dạng bên cạnh mỗi mục đăng nhập. Áp dụng với mọi tài khoản đăng nhập trên thiết bị."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "Hiển thị biểu tượng bộ đếm"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "Hiển thị số lượng đề xuất tự động điền đăng nhập trên biểu tượng tiện ích mở rộng"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "Hiển thị các hành động sao chép nhanh trên Kho"
},
@@ -5563,6 +5569,12 @@
"message": "Dễ dàng tạo mật khẩu mạnh và duy nhất bằng cách nhấp vào Trình tạo mật khẩu để giúp bạn bảo vệ tài khoản đăng nhập của mình.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "Bạn không có quyền truy cập vào trang này. Hãy thử đăng nhập bằng tài khoản khác."
},
diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json
index 2d2591b403a..5c9bd39f70c 100644
--- a/apps/browser/src/_locales/zh_CN/messages.json
+++ b/apps/browser/src/_locales/zh_CN/messages.json
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "此浏览器无法处理此弹出窗口中的 U2F 请求。您想要在新窗口中打开此弹出窗口吗?"
},
- "enableFavicon": {
- "message": "显示网站图标"
- },
- "faviconDesc": {
- "message": "在每个登录项目旁边显示一个可识别的图像。"
- },
- "faviconDescAlt": {
- "message": "在每个登录的旁边显示一个可识别的图像。适用于所有已登录的账户。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "显示角标计数器"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "在扩展图标上显示自动填充建议的登录数量"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "在密码库上显示快速复制操作"
},
@@ -5563,6 +5569,12 @@
"message": "点击「生成密码」按钮,轻松创建强大且唯一的密码,帮助您保持登录安全。",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "您没有查看此页面的权限。请尝试使用其他账户登录。"
},
diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json
index 97ef68eb6c2..ac29433e5dd 100644
--- a/apps/browser/src/_locales/zh_TW/messages.json
+++ b/apps/browser/src/_locales/zh_TW/messages.json
@@ -548,7 +548,7 @@
"message": "搜尋密碼庫"
},
"resetSearch": {
- "message": "Reset search"
+ "message": "重設搜尋"
},
"edit": {
"message": "編輯"
@@ -659,7 +659,7 @@
"message": "您的瀏覽器不支援剪貼簿簡單複製,請手動複製。"
},
"verifyYourIdentity": {
- "message": "Verify your identity"
+ "message": "驗證您的身份"
},
"weDontRecognizeThisDevice": {
"message": "我們無法識別此裝置。請輸入已傳送到您電子郵件的驗證碼以驗證您的身分。"
@@ -914,7 +914,7 @@
"message": "否"
},
"location": {
- "message": "Location"
+ "message": "位置"
},
"unexpectedError": {
"message": "發生了未預期的錯誤。"
@@ -1096,11 +1096,11 @@
}
},
"notificationLoginSaveConfirmation": {
- "message": "saved to Bitwarden.",
+ "message": "已儲存至 Bitwarden。",
"description": "Shown to user after item is saved."
},
"notificationLoginUpdatedConfirmation": {
- "message": "updated in Bitwarden.",
+ "message": "已更新至 Bitwarden。",
"description": "Shown to user after item is updated."
},
"selectItemAriaLabel": {
@@ -1120,7 +1120,7 @@
"description": "Button text for saving login details as a new entry."
},
"updateLoginAction": {
- "message": "Update login",
+ "message": "更新登入資料",
"description": "Button text for updating an existing login entry."
},
"unlockToSave": {
@@ -1128,7 +1128,7 @@
"description": "User prompt to take action in order to save the login they just entered."
},
"saveLogin": {
- "message": "Save login",
+ "message": "儲存登入資料",
"description": "Prompt asking the user if they want to save their login details."
},
"updateLogin": {
@@ -1486,11 +1486,11 @@
"message": "Don't ask again on this device for 30 days"
},
"selectAnotherMethod": {
- "message": "Select another method",
+ "message": "選擇其他方式",
"description": "Select another two-step login method"
},
"useYourRecoveryCode": {
- "message": "Use your recovery code"
+ "message": "使用您的復原碼"
},
"insertU2f": {
"message": "將您的安全鑰匙插入電腦的 USB 連接埠,然後觸摸其按鈕(如有的話)。"
@@ -1624,7 +1624,7 @@
}
},
"turnOffAutofill": {
- "message": "Turn off autofill"
+ "message": "停用自動填入"
},
"showInlineMenuLabel": {
"message": "在表單欄位上顯示自動填入選單"
@@ -1760,14 +1760,8 @@
"popupU2fCloseMessage": {
"message": "此瀏覽器不能在彈出式視窗中處理 U2F 要求。是否在新視窗開啟此對話方塊,以便您能夠使用 U2F 登入?"
},
- "enableFavicon": {
- "message": "顯示網站圖示"
- },
- "faviconDesc": {
- "message": "在每個登入資料旁顯示一個可辨識的圖片。"
- },
- "faviconDescAlt": {
- "message": "在每次登入時旁邊顯示可識別的圖片。適用於所有已登入的帳號。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableBadgeCounter": {
"message": "顯示圖示計數器"
@@ -4232,7 +4226,7 @@
"message": "密碼金鑰項目"
},
"overwritePasskey": {
- "message": "覆寫密碼金鑰嗎?"
+ "message": "要覆寫密碼金鑰嗎?"
},
"overwritePasskeyAlert": {
"message": "該項目已包含密碼金鑰。您確定要覆寫目前的密碼金鑰嗎?"
@@ -4725,10 +4719,10 @@
}
},
"downloadBitwarden": {
- "message": "Download Bitwarden"
+ "message": "下載 Bitwarden"
},
"downloadBitwardenOnAllDevices": {
- "message": "Download Bitwarden on all devices"
+ "message": "在所有裝置中下載 Bitwarden"
},
"getTheMobileApp": {
"message": "Get the mobile app"
@@ -4743,13 +4737,13 @@
"message": "Access your vault without a browser, then set up unlock with biometrics to expedite unlocking in both the desktop app and browser extension."
},
"downloadFromBitwardenNow": {
- "message": "Download from bitwarden.com now"
+ "message": "立即從 bitwarden.com 下載"
},
"getItOnGooglePlay": {
"message": "Get it on Google Play"
},
"downloadOnTheAppStore": {
- "message": "Download on the App Store"
+ "message": "從 App Store 下載"
},
"permanentlyDeleteAttachmentConfirmation": {
"message": "您確定要永久刪除此附檔嗎?"
@@ -5113,6 +5107,18 @@
"showNumberOfAutofillSuggestions": {
"message": "在擴充套件圖示上顯示自動填入建議的數量"
},
+ "accountAccessRequested": {
+ "message": "Account access requested"
+ },
+ "confirmAccessAttempt": {
+ "message": "Confirm access attempt for $EMAIL$",
+ "placeholders": {
+ "email": {
+ "content": "$1",
+ "example": "name@example.com"
+ }
+ }
+ },
"showQuickCopyActions": {
"message": "在密碼庫中顯示快速複製"
},
@@ -5156,7 +5162,7 @@
"message": "以及更多內容"
},
"fileSavedToDevice": {
- "message": "檔案已儲存到裝置。在您的裝置上管理下載檔案。"
+ "message": "檔案已儲存至裝置。在您的裝置中管理下載的檔案。"
},
"showCharacterCount": {
"message": "顯示字元數"
@@ -5441,7 +5447,7 @@
"message": "Change at-risk password"
},
"settingsVaultOptions": {
- "message": "Vault options"
+ "message": "密碼庫選項"
},
"emptyVaultDescription": {
"message": "The vault protects more than just your passwords. Store secure logins, IDs, cards and notes securely here."
@@ -5563,6 +5569,12 @@
"message": "Easily create strong and unique passwords by clicking on the Generate password button to help you keep your logins secure.",
"description": "Aria label for the body content of the generator nudge"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"noPermissionsViewPage": {
"message": "You do not have permissions to view this page. Try logging in with a different account."
},
From c2c57546ac3e570c8895fd702ccc546355233e35 Mon Sep 17 00:00:00 2001
From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com>
Date: Fri, 29 Aug 2025 11:00:17 +0000
Subject: [PATCH 075/167] Autosync the updated translations (#16209)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
---
apps/web/src/locales/af/messages.json | 26 +++++++---
apps/web/src/locales/ar/messages.json | 26 +++++++---
apps/web/src/locales/az/messages.json | 26 +++++++---
apps/web/src/locales/be/messages.json | 26 +++++++---
apps/web/src/locales/bg/messages.json | 26 +++++++---
apps/web/src/locales/bn/messages.json | 26 +++++++---
apps/web/src/locales/bs/messages.json | 26 +++++++---
apps/web/src/locales/ca/messages.json | 26 +++++++---
apps/web/src/locales/cs/messages.json | 26 +++++++---
apps/web/src/locales/cy/messages.json | 26 +++++++---
apps/web/src/locales/da/messages.json | 26 +++++++---
apps/web/src/locales/de/messages.json | 26 +++++++---
apps/web/src/locales/el/messages.json | 26 +++++++---
apps/web/src/locales/en_GB/messages.json | 26 +++++++---
apps/web/src/locales/en_IN/messages.json | 26 +++++++---
apps/web/src/locales/eo/messages.json | 26 +++++++---
apps/web/src/locales/es/messages.json | 26 +++++++---
apps/web/src/locales/et/messages.json | 26 +++++++---
apps/web/src/locales/eu/messages.json | 26 +++++++---
apps/web/src/locales/fa/messages.json | 26 +++++++---
apps/web/src/locales/fi/messages.json | 26 +++++++---
apps/web/src/locales/fil/messages.json | 26 +++++++---
apps/web/src/locales/fr/messages.json | 26 +++++++---
apps/web/src/locales/gl/messages.json | 26 +++++++---
apps/web/src/locales/he/messages.json | 26 +++++++---
apps/web/src/locales/hi/messages.json | 26 +++++++---
apps/web/src/locales/hr/messages.json | 26 +++++++---
apps/web/src/locales/hu/messages.json | 26 +++++++---
apps/web/src/locales/id/messages.json | 26 +++++++---
apps/web/src/locales/it/messages.json | 26 +++++++---
apps/web/src/locales/ja/messages.json | 26 +++++++---
apps/web/src/locales/ka/messages.json | 26 +++++++---
apps/web/src/locales/km/messages.json | 26 +++++++---
apps/web/src/locales/kn/messages.json | 26 +++++++---
apps/web/src/locales/ko/messages.json | 26 +++++++---
apps/web/src/locales/lv/messages.json | 26 +++++++---
apps/web/src/locales/ml/messages.json | 26 +++++++---
apps/web/src/locales/mr/messages.json | 26 +++++++---
apps/web/src/locales/my/messages.json | 26 +++++++---
apps/web/src/locales/nb/messages.json | 26 +++++++---
apps/web/src/locales/ne/messages.json | 26 +++++++---
apps/web/src/locales/nl/messages.json | 26 +++++++---
apps/web/src/locales/nn/messages.json | 26 +++++++---
apps/web/src/locales/or/messages.json | 26 +++++++---
apps/web/src/locales/pl/messages.json | 28 ++++++++---
apps/web/src/locales/pt_BR/messages.json | 26 +++++++---
apps/web/src/locales/pt_PT/messages.json | 26 +++++++---
apps/web/src/locales/ro/messages.json | 26 +++++++---
apps/web/src/locales/ru/messages.json | 26 +++++++---
apps/web/src/locales/si/messages.json | 26 +++++++---
apps/web/src/locales/sk/messages.json | 26 +++++++---
apps/web/src/locales/sl/messages.json | 26 +++++++---
apps/web/src/locales/sr_CS/messages.json | 26 +++++++---
apps/web/src/locales/sr_CY/messages.json | 26 +++++++---
apps/web/src/locales/sv/messages.json | 26 +++++++---
apps/web/src/locales/te/messages.json | 26 +++++++---
apps/web/src/locales/th/messages.json | 26 +++++++---
apps/web/src/locales/tr/messages.json | 62 ++++++++++++++----------
apps/web/src/locales/uk/messages.json | 26 +++++++---
apps/web/src/locales/vi/messages.json | 26 +++++++---
apps/web/src/locales/zh_CN/messages.json | 26 +++++++---
apps/web/src/locales/zh_TW/messages.json | 30 ++++++++----
62 files changed, 1199 insertions(+), 455 deletions(-)
diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json
index 83f8568478a..5baf93d9761 100644
--- a/apps/web/src/locales/af/messages.json
+++ b/apps/web/src/locales/af/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Verander die taal wat deur die webkluis gebruik word."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Verstek"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json
index 602e0827693..1aa0decb1a2 100644
--- a/apps/web/src/locales/ar/messages.json
+++ b/apps/web/src/locales/ar/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "كل التطبيقات"
},
- "unmarkAsCriticalApp": {
- "message": "إلغاء التحديد كتطبيق حرج"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "تم إلغاء تصنيف التطبيق الحرج بنجاح"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "نسخ رقم الرخصة"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "نسخ الاسم"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "تغيير اللغة المستخدمة في خزانة الويب."
},
- "enableFavicon": {
- "message": "إظهار أيقونات الموقع"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "الافتراضي"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json
index 0f1af044a4f..1412c8ef42f 100644
--- a/apps/web/src/locales/az/messages.json
+++ b/apps/web/src/locales/az/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Cəmi tətbiq"
},
- "unmarkAsCriticalApp": {
- "message": "Kritik tətbiq kimi işarəni götür"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritik tətbiq işarəsi uğurla götürüldü"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Lisenziya nömrəsini kopyala"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Adı kopyala"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Veb seyfdə istifadə olunan dili dəyişdirin."
},
- "enableFavicon": {
- "message": "Veb sayt ikonlarını göstər"
- },
- "faviconDesc": {
- "message": "Hər girişin yanında tanına bilən təsvir göstər."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "İlkin"
@@ -10982,6 +10988,12 @@
"message": "Kredit əlavə etmək üçün faktura ünvanı tələb olunur.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Faktura ünvanı"
},
diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json
index 7afac8ce476..8bf24afb50c 100644
--- a/apps/web/src/locales/be/messages.json
+++ b/apps/web/src/locales/be/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Усяго праграм"
},
- "unmarkAsCriticalApp": {
- "message": "Зняць пазнаку крытычнай праграмы"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Пазнака з крытычнай праграмы паспяхова знята"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Змяніць мову інтэрфейсу вэб-сховішча."
},
- "enableFavicon": {
- "message": "Паказваць значкі вэб-сайтаў"
- },
- "faviconDesc": {
- "message": "Паказваць распазнавальны відарыс побач з кожным лагінам."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Прадвызначана"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json
index 0f00e9f4135..b01b77417ab 100644
--- a/apps/web/src/locales/bg/messages.json
+++ b/apps/web/src/locales/bg/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Общо приложения"
},
- "unmarkAsCriticalApp": {
- "message": "Премахване на приложението от важните"
+ "unmarkAsCritical": {
+ "message": "Премахване от важните"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Приложението е премахнато от важните"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Копиране на номера на свидетелството"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Копиране на името"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Смяна на езика на интерфейса. Ще трябва да пуснете програмата повторно."
},
- "enableFavicon": {
- "message": "Показване на иконките на уеб сайтовете"
- },
- "faviconDesc": {
- "message": "Показване на разпознаваемо изображение до всеки запис."
+ "showIconsChangePasswordUrls": {
+ "message": "Показване на иконките на уеб сайтовете и извличане на адресите за смяна на паролата"
},
"default": {
"message": "Стандартно"
@@ -10982,6 +10988,12 @@
"message": "Адресът за таксуване е задължителен за добавянето на средства.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Относно тази настройка"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Битуорден ще използва запазените адреси за вписване, за да определи коя иконка или адрес за смяна на паролата да се ползва, за да улесни работата Ви. Никакви данни не се събират или съхраняват, когато използвате тази услуга."
+ },
"billingAddress": {
"message": "Адрес за фактуриране"
},
diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json
index de7dc0b1a75..08a51fbfaf3 100644
--- a/apps/web/src/locales/bn/messages.json
+++ b/apps/web/src/locales/bn/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "পূর্ব-নির্ধারিত"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json
index 32b26cda3c3..1260bbc7553 100644
--- a/apps/web/src/locales/bs/messages.json
+++ b/apps/web/src/locales/bs/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json
index 9effbd0fd51..78a7c16b4e9 100644
--- a/apps/web/src/locales/ca/messages.json
+++ b/apps/web/src/locales/ca/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copia el número de llicència"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copia el nom"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Canvia l'idioma utilitzat per la caixa forta web."
},
- "enableFavicon": {
- "message": "Mostra les icones del lloc web"
- },
- "faviconDesc": {
- "message": "Mostra una imatge reconeixible al costat de cada inici de sessió."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Per defecte"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json
index 2dc90a26982..d16fadfdd3f 100644
--- a/apps/web/src/locales/cs/messages.json
+++ b/apps/web/src/locales/cs/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Celkem aplikací"
},
- "unmarkAsCriticalApp": {
- "message": "Zrušit označení jako kritické aplikace"
+ "unmarkAsCritical": {
+ "message": "Zrušit označení jako kritické"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritická aplikace úspěšně odoznačena"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopírovat číslo dokladu totožnosti"
},
+ "copyPrivateKey": {
+ "message": "Kopírovat soukromý klíč"
+ },
+ "copyPublicKey": {
+ "message": "Kopírovat veřejný klíč"
+ },
+ "copyFingerprint": {
+ "message": "Kopírovat otisk prstu"
+ },
"copyName": {
"message": "Kopírovat název"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Změní jazyk používaný ve webovém trezoru."
},
- "enableFavicon": {
- "message": "Zobrazit ikony webových stránek"
- },
- "faviconDesc": {
- "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení."
+ "showIconsChangePasswordUrls": {
+ "message": "Zobrazit ikony webových stránek a načíst URL adresy pro změnu hesla"
},
"default": {
"message": "Výchozí"
@@ -10982,6 +10988,12 @@
"message": "Pro přidání kreditu je vyžadována fakturační adresa.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "O tomto nastavení"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden bude používat uložené přihlašovací URI k identifikaci, která ikona nebo změna adresy URL by měla být použita pro zlepšení Vašeho zážitku. Při používání této služby nejsou shromažďovány ani ukládány žádné informace."
+ },
"billingAddress": {
"message": "Fakturační adresa"
},
diff --git a/apps/web/src/locales/cy/messages.json b/apps/web/src/locales/cy/messages.json
index b55f46829c9..af05b2ee36b 100644
--- a/apps/web/src/locales/cy/messages.json
+++ b/apps/web/src/locales/cy/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json
index e25e3135eec..5dc68c2ed37 100644
--- a/apps/web/src/locales/da/messages.json
+++ b/apps/web/src/locales/da/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Applikationer i alt"
},
- "unmarkAsCriticalApp": {
- "message": "Afmarkér som kritisk app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritisk app afmarkeret"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopiér licensenummer"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopiér navn"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Skift sproget brugt af web-boksen."
},
- "enableFavicon": {
- "message": "Vis webstedsikoner"
- },
- "faviconDesc": {
- "message": "Vis et genkendeligt billede ud for hvert login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Standard"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json
index 9a39650f6dd..f15315c256f 100644
--- a/apps/web/src/locales/de/messages.json
+++ b/apps/web/src/locales/de/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Anwendungen insgesamt"
},
- "unmarkAsCriticalApp": {
- "message": "Markierung als kritische Anwendung aufheben"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Markierung als kritische Anwendung erfolgreich aufgehoben"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Lizenznummer kopieren"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Name kopieren"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Die Sprache des Web-Tresors ändern."
},
- "enableFavicon": {
- "message": "Website-Symbole anzeigen"
- },
- "faviconDesc": {
- "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Standard"
@@ -10982,6 +10988,12 @@
"message": "Rechnungsadresse erforderlich, um Guthaben hinzuzufügen.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Rechnungsadresse"
},
diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json
index 9f98f63c1dd..4c8af1b5633 100644
--- a/apps/web/src/locales/el/messages.json
+++ b/apps/web/src/locales/el/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Σύνολο εφαρμογών"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Αντιγραφή αριθμού άδειας"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Αντιγραφή ονόματος"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Αλλάξτε γλώσσα που χρησιμοποιείται από το web vault."
},
- "enableFavicon": {
- "message": "Εμφάνιση εικονιδίων ιστοτόπων"
- },
- "faviconDesc": {
- "message": "Εμφάνιση μιας αναγνωρίσιμης εικόνας δίπλα σε κάθε σύνδεση."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Προεπιλογή"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json
index 75c952a14ba..001d2f50d5c 100644
--- a/apps/web/src/locales/en_GB/messages.json
+++ b/apps/web/src/locales/en_GB/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy licence number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognisable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json
index 7bdcf445615..7b5151eb54f 100644
--- a/apps/web/src/locales/en_IN/messages.json
+++ b/apps/web/src/locales/en_IN/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy licence number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognisable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json
index 6340519efe0..d8ad015949c 100644
--- a/apps/web/src/locales/eo/messages.json
+++ b/apps/web/src/locales/eo/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopii la numeron de permesilo"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopii la nomon"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Ŝanĝi la lingvon uzatan por la retejo de la kaso."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Implicita"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json
index a8de64b622b..cf3c85e10c9 100644
--- a/apps/web/src/locales/es/messages.json
+++ b/apps/web/src/locales/es/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total de aplicaciones"
},
- "unmarkAsCriticalApp": {
- "message": "Desmarcar como aplicación crítica"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copiar número de licencia"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copiar nombre"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Cambiar el idioma utilizado en la caja fuerte web."
},
- "enableFavicon": {
- "message": "Mostrar los iconos del sitio web"
- },
- "faviconDesc": {
- "message": "Mostrar una imagen reconocible junto a cada inicio de sesión."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Por defecto"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json
index 9b94e38bdec..60ecd7d6eb1 100644
--- a/apps/web/src/locales/et/messages.json
+++ b/apps/web/src/locales/et/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopeeri litsentsi number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopeeri nimi"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Siin saab veebihoidla keelt muuta."
},
- "enableFavicon": {
- "message": "Kuva veebilehtede ikoone"
- },
- "faviconDesc": {
- "message": "Kuva iga kirje kõrval lehekülje ikooni."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Vaikimisi"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json
index f8ef2fece95..c4237cec695 100644
--- a/apps/web/src/locales/eu/messages.json
+++ b/apps/web/src/locales/eu/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Aldatu webguneko kutxa gotorrean erabiltzen den hizkuntza."
},
- "enableFavicon": {
- "message": "Erakutsi webguneko ikonoak"
- },
- "faviconDesc": {
- "message": "Erakutsi irudi bat saio-hasiera bakoitzaren ondoan."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Lehenetsia"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/fa/messages.json b/apps/web/src/locales/fa/messages.json
index a24f0c3976e..b5b4035dd7e 100644
--- a/apps/web/src/locales/fa/messages.json
+++ b/apps/web/src/locales/fa/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "کل برنامهها"
},
- "unmarkAsCriticalApp": {
- "message": "لغو علامت حیاتی بودن برنامه"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "برنامه حیاتی با موفقیت لغو علامت شد"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "کپی شماره گواهینامه"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "کپی نام"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "زبان مورد استفاده در گاوصندوق وب را تغییر دهید."
},
- "enableFavicon": {
- "message": "نمایش نمادهای وبسایت"
- },
- "faviconDesc": {
- "message": "یک تصویر قابل تشخیص در کنار هر ورود نشان دهید."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "پیشفرض"
@@ -10982,6 +10988,12 @@
"message": "نشانی صورتحساب برای افزودن اعتبار الزامی است.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json
index 6304d4135e9..c5c49679344 100644
--- a/apps/web/src/locales/fi/messages.json
+++ b/apps/web/src/locales/fi/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Sovelluksia yhteensä"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopioi ajokortin numero"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopioi nimi"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Vaihda verkkoholvissa käytettävä kieli."
},
- "enableFavicon": {
- "message": "Näytä verkkosivustojen kuvakkeet"
- },
- "faviconDesc": {
- "message": "Näytä tunnistettava kuvake jokaiselle kirjautumistiedolle."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Oletus"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json
index 765e39af077..fe4d740c0bf 100644
--- a/apps/web/src/locales/fil/messages.json
+++ b/apps/web/src/locales/fil/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Baguhin ang wikang ginagamit ng web vault."
},
- "enableFavicon": {
- "message": "Ipakita ang icon ng mga website"
- },
- "faviconDesc": {
- "message": "Magpakita ng isang sikat na larawan sa tabi ng bawat login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json
index 4a64b44549d..8526009e442 100644
--- a/apps/web/src/locales/fr/messages.json
+++ b/apps/web/src/locales/fr/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total des applications"
},
- "unmarkAsCriticalApp": {
- "message": "Ne plus marquer comme application critique"
+ "unmarkAsCritical": {
+ "message": "Retirer la cote critique"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Marquage d'application critique retiré avec succès"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copier le numéro de permis de conduire"
},
+ "copyPrivateKey": {
+ "message": "Copier la clé privée"
+ },
+ "copyPublicKey": {
+ "message": "Copier la clé publique"
+ },
+ "copyFingerprint": {
+ "message": "Copier l'empreinte digitale"
+ },
"copyName": {
"message": "Copier le nom"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Changez la langue utilisée par le coffre web."
},
- "enableFavicon": {
- "message": "Afficher les icônes des sites web"
- },
- "faviconDesc": {
- "message": "Affichez une image reconnaissable à côté de chaque identifiant."
+ "showIconsChangePasswordUrls": {
+ "message": "Affiche les icônes du site web et récupère les URL de changement de mot de passe"
},
"default": {
"message": "Par défaut"
@@ -10982,6 +10988,12 @@
"message": "L'adresse de facturation est requise pour ajouter du crédit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "À propos de ce paramètre"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden utilisera les URIs de connexion enregistrées pour identifier quelle icône ou URL de changement de mot de passe doit être utilisée pour améliorer votre expérience. Aucune information n'est recueillie ou enregistrée lorsque vous utilisez ce service."
+ },
"billingAddress": {
"message": "Adresse de facturation"
},
diff --git a/apps/web/src/locales/gl/messages.json b/apps/web/src/locales/gl/messages.json
index b74bd25864d..b06ee2ef7ef 100644
--- a/apps/web/src/locales/gl/messages.json
+++ b/apps/web/src/locales/gl/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json
index 5e72a211b86..fa088f4d270 100644
--- a/apps/web/src/locales/he/messages.json
+++ b/apps/web/src/locales/he/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "סה\"כ יישומים"
},
- "unmarkAsCriticalApp": {
- "message": "בטל סימון כיישום קריטי"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "בוטל סימון יישום קריטי בהצלחה"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "העתק מספר רישיון"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "העתק שם"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "שנה את השפה של כספת הרשת."
},
- "enableFavicon": {
- "message": "הצג סמלי אתר אינטרנט"
- },
- "faviconDesc": {
- "message": "הצג תמונה מוכרת ליד כל כניסה."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "ברירת מחדל"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json
index 0ecc0608258..92affce25f8 100644
--- a/apps/web/src/locales/hi/messages.json
+++ b/apps/web/src/locales/hi/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json
index 724f028c5d7..1b7c43de6ba 100644
--- a/apps/web/src/locales/hr/messages.json
+++ b/apps/web/src/locales/hr/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Ukupno aplikacija"
},
- "unmarkAsCriticalApp": {
- "message": "Odznači kao kritičnu aplikaciju"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritična aplikacija uspješno odznačena"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopiraj broj osobne"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopiraj ime"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Promijeni jezik web trezora."
},
- "enableFavicon": {
- "message": "Prikaži ikone mrežnih mjesta"
- },
- "faviconDesc": {
- "message": "Prikaži prepoznatljivu sliku pored svake prijave."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Zadano"
@@ -10982,6 +10988,12 @@
"message": "Za dodavanje kredita potrebna je adresa za naplatu.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Adresa za naplatu"
},
diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json
index e79902e23b2..b82b0519fa1 100644
--- a/apps/web/src/locales/hu/messages.json
+++ b/apps/web/src/locales/hu/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Összes alkalmazás"
},
- "unmarkAsCriticalApp": {
- "message": "Ktritkus alkalmazás jelölés eltávolítása"
+ "unmarkAsCritical": {
+ "message": "Ktritkus jelölés eltávolítása"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "A ktritkus alkalmazás jelölés eltávolítása sikeres volt."
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Vezetői engedély szám másolása"
},
+ "copyPrivateKey": {
+ "message": "Személyes kulcs másolása"
+ },
+ "copyPublicKey": {
+ "message": "Nyilvános kulcs másolása"
+ },
+ "copyFingerprint": {
+ "message": "Ujjlenyomat másolása"
+ },
"copyName": {
"message": "Név másolása"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "A webes széf nyelvének megváltoztatása."
},
- "enableFavicon": {
- "message": "Webhely ikonok megjelenítése"
- },
- "faviconDesc": {
- "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett."
+ "showIconsChangePasswordUrls": {
+ "message": "Webhely ikonok megjelenítése és jelszó webcímek módosításának lekérése"
},
"default": {
"message": "Alapértelmezett"
@@ -10982,6 +10988,12 @@
"message": "A jóváírás hozzáadásához szükséges számlázási cím.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Informció erről a beállításról"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "A Bitwarden mentett bejelentkezési webcímeket használ annak azonosítására, hogy melyik ikont vagy jelszó webcímet kell használni az élmény javítása érdekében. A szolgáltatás használatakor nincs információ gyűjtés vagy mentés."
+ },
"billingAddress": {
"message": "Számlázási cím"
},
diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json
index dda41bbb9d9..9430b14659f 100644
--- a/apps/web/src/locales/id/messages.json
+++ b/apps/web/src/locales/id/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Semua aplikasi"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Salin nomor lisensi"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Salin nama"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Ubah bahasa yang digunakan oleh brankas web."
},
- "enableFavicon": {
- "message": "Tampilkan ikon website"
- },
- "faviconDesc": {
- "message": "Tampilkan gambar pengenal di samping setiap login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Bawaan"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json
index 8978d3475b8..82f1edd6217 100644
--- a/apps/web/src/locales/it/messages.json
+++ b/apps/web/src/locales/it/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Applicazioni totali"
},
- "unmarkAsCriticalApp": {
- "message": "Contrassegna l'applicazione come non critica"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Applicazione contrassegnata come non critica"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copia numero patente"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copia nome"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Cambia la lingua utilizzata dalla cassaforte web."
},
- "enableFavicon": {
- "message": "Mostra icone dei siti"
- },
- "faviconDesc": {
- "message": "Mostra un piccolo logo riconoscibile accanto a ogni login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Predefinito"
@@ -10982,6 +10988,12 @@
"message": "Indirizzo di fatturazione richiesto per aggiungere credito.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Indirizzo di fatturazione"
},
diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json
index 1c97befe579..75c20d416d2 100644
--- a/apps/web/src/locales/ja/messages.json
+++ b/apps/web/src/locales/ja/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "合計アプリ数"
},
- "unmarkAsCriticalApp": {
- "message": "重要なアプリとしてのマークを解除"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "重要なアプリケーションのマークを解除しました"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "免許証番号をコピー"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "名前をコピー"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "ウェブ保管庫で使用する言語を変更します。"
},
- "enableFavicon": {
- "message": "ウェブサイトのアイコンを表示"
- },
- "faviconDesc": {
- "message": "ログイン情報の隣にアイコン画像を表示します"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "デフォルト"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json
index b183e58498e..7f202135f3a 100644
--- a/apps/web/src/locales/ka/messages.json
+++ b/apps/web/src/locales/ka/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json
index 6ab1431d5a4..06756e960d2 100644
--- a/apps/web/src/locales/km/messages.json
+++ b/apps/web/src/locales/km/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json
index e264b4dcce0..b13904b5a3a 100644
--- a/apps/web/src/locales/kn/messages.json
+++ b/apps/web/src/locales/kn/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "ವೆಬ್ ವಾಲ್ಟ್ ಬಳಸುವ ಭಾಷೆಯನ್ನು ಬದಲಾಯಿಸಿ."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "ಡಿಫಾಲ್ಟ್"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json
index 02febd78c06..51b6dc9b33e 100644
--- a/apps/web/src/locales/ko/messages.json
+++ b/apps/web/src/locales/ko/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "웹 보관함에서 사용할 언어를 변경합니다."
},
- "enableFavicon": {
- "message": "웹사이트 아이콘 표시하기"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "기본값"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json
index 475ef6228b1..aaca3a427d8 100644
--- a/apps/web/src/locales/lv/messages.json
+++ b/apps/web/src/locales/lv/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Kopējais lietotņu skaits"
},
- "unmarkAsCriticalApp": {
- "message": "Noņemt kritiskas lietontes atzīmi"
+ "unmarkAsCritical": {
+ "message": "Noņemt kritiskuma atzīmi"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritiskas lietotnes atzīme sekmīgi noņemta"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Ievietot licences numuru starpliktuvē"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Ievietot nosaukumu starpliktuvē"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Nomainīt tīmekļa glabātavā izmantoto valodu."
},
- "enableFavicon": {
- "message": "Rādīt tīmekļvietņu ikonas"
- },
- "faviconDesc": {
- "message": "Attēlot atpazīstamu attēlu pie katra pieteikšanās vienuma."
+ "showIconsChangePasswordUrls": {
+ "message": "Rādīt tīmekļvietņu ikonas un iegūt paroles nomaiņas URL"
},
"default": {
"message": "Noklusējums"
@@ -10982,6 +10988,12 @@
"message": "Norēķinu adrese ir nepieciešama, lai pievienot kredītu.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Par šo iestatījumu"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden izmantos saglabātos pieteikšanās vienuma URI, lai noteiktu, kuru ikonu vai paroles nomaiņas URL izmantot, lai uzlabotu pieredzi. Šī pakalpojuma izmantošanas laikā nekāda informācija netiek ievākta vai saglabāta."
+ },
"billingAddress": {
"message": "Norēķinu adrese"
},
diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json
index 5d44873fbfa..6c09aa82ea9 100644
--- a/apps/web/src/locales/ml/messages.json
+++ b/apps/web/src/locales/ml/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "അപ്ലിക്കേഷൻ ഉപയോഗിക്കുന്ന ഭാഷ മാറ്റുക. പുനരാരംഭിക്കൽ ആവശ്യമാണ്."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "സാധാരണ പോലെ"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/mr/messages.json b/apps/web/src/locales/mr/messages.json
index 48e1de061a5..9a90f76649a 100644
--- a/apps/web/src/locales/mr/messages.json
+++ b/apps/web/src/locales/mr/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/my/messages.json b/apps/web/src/locales/my/messages.json
index 6ab1431d5a4..06756e960d2 100644
--- a/apps/web/src/locales/my/messages.json
+++ b/apps/web/src/locales/my/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json
index 3909e7ad2c8..2392eabfc5c 100644
--- a/apps/web/src/locales/nb/messages.json
+++ b/apps/web/src/locales/nb/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopiér lisensnummer"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopiér navn"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Endre språket som brukes av netthvelvet."
},
- "enableFavicon": {
- "message": "Vis nettsideikoner"
- },
- "faviconDesc": {
- "message": "Vis et gjenkjennelig bilde ved siden av hver innlogging."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Standard"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Fakturaadresse"
},
diff --git a/apps/web/src/locales/ne/messages.json b/apps/web/src/locales/ne/messages.json
index 7ea48fde42f..3f977e46f92 100644
--- a/apps/web/src/locales/ne/messages.json
+++ b/apps/web/src/locales/ne/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json
index 71223d4e880..69f24ccced7 100644
--- a/apps/web/src/locales/nl/messages.json
+++ b/apps/web/src/locales/nl/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Totaal applicaties"
},
- "unmarkAsCriticalApp": {
- "message": "Markeren als belangrijke app ongedaan maken"
+ "unmarkAsCritical": {
+ "message": "Markeren als belangrijk ongedaan maken"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Markeren als belangrijke app ongedaan gemaakt"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kenteken kopiëren"
},
+ "copyPrivateKey": {
+ "message": "Privésleutel kopiëren"
+ },
+ "copyPublicKey": {
+ "message": "Publieke sleutel kopiëren"
+ },
+ "copyFingerprint": {
+ "message": "Vingerafdruk kopiëren"
+ },
"copyName": {
"message": "Naam kopiëren"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "De taal van de webkluis aanpassen."
},
- "enableFavicon": {
- "message": "Websitepictogrammen weergeven"
- },
- "faviconDesc": {
- "message": "Een herkenbare afbeelding naast iedere login weergeven."
+ "showIconsChangePasswordUrls": {
+ "message": "Pictogrammen van de website weergeven URL's voor wachtwoordwijzigingen ophalen"
},
"default": {
"message": "Standaard"
@@ -10982,6 +10988,12 @@
"message": "Factuuradres vereist voor het toevoegen van krediet.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Over deze instelling"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden gebruikt opgeslagen login-URI's om te bepalen welk pictogram of URL voor het wijzigen van het wachtwoord moet worden gebruikt om je ervaring te verbeteren. Er wordt geen informatie verzameld of opgeslagen wanneer je deze service gebruikt."
+ },
"billingAddress": {
"message": "Factuuradres"
},
diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json
index 484a110c2ab..0caa2e8d5ae 100644
--- a/apps/web/src/locales/nn/messages.json
+++ b/apps/web/src/locales/nn/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/or/messages.json b/apps/web/src/locales/or/messages.json
index 6ab1431d5a4..06756e960d2 100644
--- a/apps/web/src/locales/or/messages.json
+++ b/apps/web/src/locales/or/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json
index df24c334031..ba4cb3118a4 100644
--- a/apps/web/src/locales/pl/messages.json
+++ b/apps/web/src/locales/pl/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Wszystkie aplikacje"
},
- "unmarkAsCriticalApp": {
- "message": "Odznacz jako krytyczną aplikację"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Krytyczna aplikacja została pomyślnie odznaczona"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Skopiuj numer licencji"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Skopiuj nazwę"
},
@@ -1715,7 +1724,7 @@
"description": "Label for the avoid ambiguous characters checkbox."
},
"length": {
- "message": "Długość"
+ "message": "Liczba znaków"
},
"passwordMinLength": {
"message": "Minimalna długość hasła"
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Zmień język używany przez sejf."
},
- "enableFavicon": {
- "message": "Pokaż ikony witryn"
- },
- "faviconDesc": {
- "message": "Pokaż rozpoznawalny obraz obok każdych danych logowania."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Domyślny"
@@ -10982,6 +10988,12 @@
"message": "Aby dodać środki, wymagany jest adres rozliczeniowy.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Adres rozliczeniowy"
},
diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json
index 8e49cfc1a03..141be675a6a 100644
--- a/apps/web/src/locales/pt_BR/messages.json
+++ b/apps/web/src/locales/pt_BR/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Todos os aplicativos"
},
- "unmarkAsCriticalApp": {
- "message": "Desmarcar como aplicativo crítico"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Aplicação crítica desmarcada com sucesso"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copiar número da CNH"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copiar nome"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Altere o idioma usado pelo cofre web."
},
- "enableFavicon": {
- "message": "Mostrar ícones do site"
- },
- "faviconDesc": {
- "message": "Mostrar uma imagem reconhecível ao lado de cada login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Padrão"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json
index 6d85c096e5f..33ad54c762d 100644
--- a/apps/web/src/locales/pt_PT/messages.json
+++ b/apps/web/src/locales/pt_PT/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Todas de aplicações"
},
- "unmarkAsCriticalApp": {
- "message": "Desmarcar como aplicação crítica"
+ "unmarkAsCritical": {
+ "message": "Desmarcar como crítica"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Aplicação crítica desmarcada com sucesso"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copiar número da carta de condução"
},
+ "copyPrivateKey": {
+ "message": "Copiar chave privada"
+ },
+ "copyPublicKey": {
+ "message": "Copiar chave pública"
+ },
+ "copyFingerprint": {
+ "message": "Copiar impressão digital"
+ },
"copyName": {
"message": "Copiar nome"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Alterar o idioma utilizado pelo cofre web."
},
- "enableFavicon": {
- "message": "Mostrar ícones do site"
- },
- "faviconDesc": {
- "message": "Mostrar uma imagem reconhecível junto a cada credencial."
+ "showIconsChangePasswordUrls": {
+ "message": "Mostrar ícones de sites e recuperar URLs de alteração de palavra-passe"
},
"default": {
"message": "Predefinido"
@@ -10982,6 +10988,12 @@
"message": "Endereço de faturação necessário para adicionar crédito.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Acerca desta definição"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "O Bitwarden utilizará os URIs de credenciais guardadas para identificar qual o ícone ou URL de alteração de palavra-passe que deve ser utilizado para melhorar a sua experiência. Nenhuma informação é recolhida ou guardada quando utiliza este serviço."
+ },
"billingAddress": {
"message": "Endereço de faturação"
},
diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json
index 36bbbb6f830..458982c84d1 100644
--- a/apps/web/src/locales/ro/messages.json
+++ b/apps/web/src/locales/ro/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Toate aplicațiile"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copiați numărul de licență"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copiați numele"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Alegeți limba în care folosiți seiful web."
},
- "enableFavicon": {
- "message": "Afișare pictograme site web"
- },
- "faviconDesc": {
- "message": "Afișează o imagine ușor de recunoscut lângă fiecare autentificare."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Implicit"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json
index 76e1e2a09fc..20d545668aa 100644
--- a/apps/web/src/locales/ru/messages.json
+++ b/apps/web/src/locales/ru/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Всего приложений"
},
- "unmarkAsCriticalApp": {
- "message": "Снять отметку критического приложения"
+ "unmarkAsCritical": {
+ "message": "Снять отметку критического"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Отметка критического приложения успешно снята"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Скопировать номер лицензии"
},
+ "copyPrivateKey": {
+ "message": "Скопировать приватный ключ"
+ },
+ "copyPublicKey": {
+ "message": "Скопировать публичный ключ"
+ },
+ "copyFingerprint": {
+ "message": "Скопировать отпечаток"
+ },
"copyName": {
"message": "Скопировать имя"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Изменение языка, используемого веб-хранилищем."
},
- "enableFavicon": {
- "message": "Показать значки сайтов"
- },
- "faviconDesc": {
- "message": "Отображать узнаваемое изображение рядом с каждым логином."
+ "showIconsChangePasswordUrls": {
+ "message": "Показывать значки сайтов и извлекать URL изменения пароля"
},
"default": {
"message": "По умолчанию"
@@ -10982,6 +10988,12 @@
"message": "Для пополнения счета необходим платежный адрес.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Об этой настройке"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden будет использовать сохраненные URI логинов, чтобы определить, какой значок или URL для смены пароля следует использовать для улучшения вашего взаимодействия. При использовании этого сервиса никакая информация не собирается и не сохраняется."
+ },
"billingAddress": {
"message": "Платежный адрес"
},
diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json
index ab29812f383..c6170a0e312 100644
--- a/apps/web/src/locales/si/messages.json
+++ b/apps/web/src/locales/si/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json
index f2c493a5f9f..f7e54bfa933 100644
--- a/apps/web/src/locales/sk/messages.json
+++ b/apps/web/src/locales/sk/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Všetkých aplikácii"
},
- "unmarkAsCriticalApp": {
- "message": "Zrušiť označenie aplikácie za kritickú"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Označenie aplikácie za kritickú úspešne zrušené"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopírovať číslo licencie"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopírovať meno"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Zmeňte východzí jazyk pre webový trezor."
},
- "enableFavicon": {
- "message": "Zobraziť favikony"
- },
- "faviconDesc": {
- "message": "Pri každom prihlásení zobraziť rozpoznateľný obrázok."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Predvolené"
@@ -10982,6 +10988,12 @@
"message": "Na pridanie kreditu je potrebná fakturačná adresa.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Fakturačná adresa"
},
diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json
index 1057caeb205..145024fa918 100644
--- a/apps/web/src/locales/sl/messages.json
+++ b/apps/web/src/locales/sl/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Nastavite, v katerem jeziku uporabljate spletni trezor."
},
- "enableFavicon": {
- "message": "Prikaži ikone spletnih strani"
- },
- "faviconDesc": {
- "message": "Pri vsaki prijavi prikaži prepoznavno sliko."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Privzeto"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json
index c9c857ded51..be6f9654862 100644
--- a/apps/web/src/locales/sr_CS/messages.json
+++ b/apps/web/src/locales/sr_CS/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Promenite jezik veb trezora."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Podrazumevano"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/sr_CY/messages.json b/apps/web/src/locales/sr_CY/messages.json
index f09ff8a5b05..f9c235590bd 100644
--- a/apps/web/src/locales/sr_CY/messages.json
+++ b/apps/web/src/locales/sr_CY/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Укупно апликација"
},
- "unmarkAsCriticalApp": {
- "message": "Уклони ознаку критичне апликације"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Успешно уклоњена ознака са критичне апликације"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Копирати број лиценце"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Копирати име"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Променити језик за Сеф."
},
- "enableFavicon": {
- "message": "Прикажи иконе сајтова"
- },
- "faviconDesc": {
- "message": "Прикажи препознатљиву иконицу поред сваке ставке за пријаву."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Подразумевано"
@@ -10982,6 +10988,12 @@
"message": "Адреса за наплату је потребна за додавање кредита.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Адреса рачуна"
},
diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json
index d050d1a18e2..aa4657b075f 100644
--- a/apps/web/src/locales/sv/messages.json
+++ b/apps/web/src/locales/sv/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Totalt antal applikationer"
},
- "unmarkAsCriticalApp": {
- "message": "Avmarkera som kritisk app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritisk applikation avmarkerades"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Kopiera licensnummer"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Kopiera namn"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Ändra språket som används i webbvalvet."
},
- "enableFavicon": {
- "message": "Visa webbplatsikoner"
- },
- "faviconDesc": {
- "message": "Visa en igenkännbar bild bredvid varje inloggning."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Standard"
@@ -10982,6 +10988,12 @@
"message": "Faktureringsadress krävs för att lägga till kredit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Faktureringsadress"
},
diff --git a/apps/web/src/locales/te/messages.json b/apps/web/src/locales/te/messages.json
index 6ab1431d5a4..06756e960d2 100644
--- a/apps/web/src/locales/te/messages.json
+++ b/apps/web/src/locales/te/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/th/messages.json b/apps/web/src/locales/th/messages.json
index f6faa8c027f..fb13fd7aaa3 100644
--- a/apps/web/src/locales/th/messages.json
+++ b/apps/web/src/locales/th/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Change the language used by the web vault."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Default"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json
index cdea2a6077d..849dae006f4 100644
--- a/apps/web/src/locales/tr/messages.json
+++ b/apps/web/src/locales/tr/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Toplam uygulama"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Kritik uygulama işareti başarıyla kaldırıldı"
@@ -657,7 +657,7 @@
"message": "Not"
},
"typeSshKey": {
- "message": "SSH key"
+ "message": "SSH anahtarı"
},
"typeLoginPlural": {
"message": "Hesaplar"
@@ -813,7 +813,7 @@
"description": "Copy passphrase to clipboard"
},
"passwordCopied": {
- "message": "Password copied"
+ "message": "Parola kopyalandı"
},
"copyUsername": {
"message": "Kullanıcı adını kopyala",
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Ruhsat numarasını kopyala"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Adı kopyala"
},
@@ -1096,13 +1105,13 @@
"message": "Başka bir giriş yöntemi kullan"
},
"logInWithPasskey": {
- "message": "Log in with passkey"
+ "message": "Geçiş anahtarıyla giriş yap"
},
"useSingleSignOn": {
- "message": "Use single sign-on"
+ "message": "Çoklu oturum açma kullan"
},
"welcomeBack": {
- "message": "Welcome back"
+ "message": "Tekrar hoş geldiniz"
},
"invalidPasskeyPleaseTryAgain": {
"message": "Geçersiz geçiş anahtarı. Lütfen tekrar deneyin."
@@ -1186,7 +1195,7 @@
"message": "Hesap aç"
},
"newToBitwarden": {
- "message": "New to Bitwarden?"
+ "message": "Bitwarden'da yeni misiniz?"
},
"setAStrongPassword": {
"message": "Güçlü bir parola belirleyin"
@@ -1204,7 +1213,7 @@
"message": "Giriş yap"
},
"logInToBitwarden": {
- "message": "Log in to Bitwarden"
+ "message": "Bitwarden'a giriş yapın"
},
"enterTheCodeSentToYourEmail": {
"message": "E-posta adresinize gönderilen kodu girin"
@@ -1216,13 +1225,13 @@
"message": "Press your YubiKey to authenticate"
},
"authenticationTimeout": {
- "message": "Authentication timeout"
+ "message": "Kimlik doğrulama zaman aşımı"
},
"authenticationSessionTimedOut": {
- "message": "The authentication session timed out. Please restart the login process."
+ "message": "Kimlik doğrulama oturumu zaman aşımına uğradı. Lütfen giriş sürecini yeniden başlatın."
},
"verifyYourIdentity": {
- "message": "Verify your Identity"
+ "message": "Kimliğinizi doğrulayın"
},
"weDontRecognizeThisDevice": {
"message": "Bu cihazı tanıyamadık. Kimliğinizi doğrulamak için e-postanıza gönderilen kodu girin."
@@ -1399,7 +1408,7 @@
"message": "Bu koleksiyondaki tüm kayıtları görmek için izniniz yok."
},
"youDoNotHavePermissions": {
- "message": "You do not have permissions to this collection"
+ "message": "Bu koleksiyona erişme izniniz yok"
},
"noCollectionsInList": {
"message": "Listelenecek koleksiyon yok."
@@ -1426,7 +1435,7 @@
"message": "Cihazınıza bir bildirim gönderildi."
},
"notificationSentDevicePart1": {
- "message": "Unlock Bitwarden on your device or on the "
+ "message": "Bitwarden kilidini cihazınızdan veya "
},
"accessAttemptBy": {
"message": "$EMAIL$ erişim denemesi",
@@ -1447,7 +1456,7 @@
"message": "web uygulaması"
},
"notificationSentDevicePart2": {
- "message": "Make sure the Fingerprint phrase matches the one below before approving."
+ "message": "Onay vermeden önce parmak izi ifadesinin aşağıdakiyle eşleştiğini kontrol edin."
},
"notificationSentDeviceComplete": {
"message": "Unlock Bitwarden on your device. Make sure the Fingerprint phrase matches the one below before approving."
@@ -1474,14 +1483,14 @@
}
},
"dontAskAgainOnThisDeviceFor30Days": {
- "message": "Don't ask again on this device for 30 days"
+ "message": "Bu cihazda 30 gün boyunca sorma"
},
"selectAnotherMethod": {
- "message": "Select another method",
+ "message": "Başka bir yöntem seç",
"description": "Select another two-step login method"
},
"useYourRecoveryCode": {
- "message": "Use your recovery code"
+ "message": "Kurtarma kodu kullan"
},
"insertU2f": {
"message": "Güvenlik anahtarınızı bilgisayarınızın USB portuna takın. Düğmesi varsa dokunun."
@@ -1499,7 +1508,7 @@
"message": "İki aşamalı giriş seçenekleri"
},
"selectTwoStepLoginMethod": {
- "message": "Select two-step login method"
+ "message": "İki aşamalı giriş yöntemini seçin"
},
"recoveryCodeDesc": {
"message": "İki aşamalı giriş sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz."
@@ -1820,7 +1829,7 @@
"message": "Geçerli oturum"
},
"requestPending": {
- "message": "Request pending"
+ "message": "İstek bekliyor"
},
"logBackInOthersToo": {
"message": "Lütfen yeniden oturum açın. Diğer Bitwarden uygulamalarını kullanıyorsanız onlarda da oturumunuzu kapatıp yeniden açın."
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Web kasasında kullanılan dili değiştirin."
},
- "enableFavicon": {
- "message": "Web sitesi simgelerini göster"
- },
- "faviconDesc": {
- "message": "Hesapların yanında tanıdık görseller göster."
+ "showIconsChangePasswordUrls": {
+ "message": "Web sitesi simgelerini göster ve parola değiştirme URL'lerini al"
},
"default": {
"message": "Varsayılan"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "Bu ayar hakkında"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Fatura adresi"
},
diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json
index 2290429de7a..3903c31275c 100644
--- a/apps/web/src/locales/uk/messages.json
+++ b/apps/web/src/locales/uk/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Всього програм"
},
- "unmarkAsCriticalApp": {
- "message": "Зняти позначку критичної програми"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Позначку критичної програми знято"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Копіювати номер ліцензії"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Копіювати ім'я"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Змінити мову інтерфейсу вебсховища."
},
- "enableFavicon": {
- "message": "Показувати піктограми вебсайтів"
- },
- "faviconDesc": {
- "message": "Показувати зображення біля кожного запису."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Типово"
@@ -10982,6 +10988,12 @@
"message": "Щоб додати кредит, необхідно ввести платіжну адресу.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Платіжна адреса"
},
diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json
index dd6f35f3f32..d107ae80b56 100644
--- a/apps/web/src/locales/vi/messages.json
+++ b/apps/web/src/locales/vi/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Tổng số ứng dụng"
},
- "unmarkAsCriticalApp": {
- "message": "Bỏ đánh dấu ứng dụng quan trọng"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Ứng dụng quan trọng đã được gỡ bỏ dấu hiệu thành công"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Sao chép số giấy phép"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Sao chép tên"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "Thay đổi ngôn ngữ của kho trên web."
},
- "enableFavicon": {
- "message": "Hiện biểu tượng trang web"
- },
- "faviconDesc": {
- "message": "Hiện logo trang web bên cạnh mỗi đăng nhập."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "Mặc định"
@@ -10982,6 +10988,12 @@
"message": "Cần có địa chỉ thanh toán để thêm tín dụng.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Địa chỉ thanh toán"
},
diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json
index 682f57e5ddd..276f5866b00 100644
--- a/apps/web/src/locales/zh_CN/messages.json
+++ b/apps/web/src/locales/zh_CN/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "总的应用程序"
},
- "unmarkAsCriticalApp": {
- "message": "取消标记为关键应用程序"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "关键应用程序已成功取消标记"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "复制许可证号码"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "复制名称"
},
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "更改网页密码库的语言。"
},
- "enableFavicon": {
- "message": "显示网站图标"
- },
- "faviconDesc": {
- "message": "在每个登录项目旁边显示一个可识别的图像。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "默认"
@@ -10982,6 +10988,12 @@
"message": "添加信用额度需要计费地址。",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "计费地址"
},
diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json
index 39224adbbf5..6181e877071 100644
--- a/apps/web/src/locales/zh_TW/messages.json
+++ b/apps/web/src/locales/zh_TW/messages.json
@@ -176,8 +176,8 @@
"totalApplications": {
"message": "Total applications"
},
- "unmarkAsCriticalApp": {
- "message": "Unmark as critical app"
+ "unmarkAsCritical": {
+ "message": "Unmark as critical"
},
"criticalApplicationSuccessfullyUnmarked": {
"message": "Critical application successfully unmarked"
@@ -867,6 +867,15 @@
"copyLicenseNumber": {
"message": "Copy license number"
},
+ "copyPrivateKey": {
+ "message": "Copy private key"
+ },
+ "copyPublicKey": {
+ "message": "Copy public key"
+ },
+ "copyFingerprint": {
+ "message": "Copy fingerprint"
+ },
"copyName": {
"message": "Copy name"
},
@@ -1087,7 +1096,7 @@
"message": "使用主密碼登入"
},
"readingPasskeyLoading": {
- "message": "正在讀取密碼金輪..."
+ "message": "正在讀取通行金鑰..."
},
"readingPasskeyLoadingInfo": {
"message": "保持此視窗打開,然後按照瀏覽器的提示進行操作。"
@@ -1111,7 +1120,7 @@
"message": "不支援密碼金鑰 2FA。請更新 app 以登入。"
},
"loginWithPasskeyInfo": {
- "message": "使用已產生的密碼金輪,無需密碼即可自動登入。生物特徵辨識(例如面部識別或指紋)或其他 FIDO2 安全方式將用於確認您的身分。"
+ "message": "使用已產生的密碼金鑰,無需密碼即可自動登入。生物特徵辨識(例如面部識別或指紋)或其他 FIDO2 安全方式將用於確認您的身分。"
},
"newPasskey": {
"message": "新增密碼金鑰"
@@ -2102,11 +2111,8 @@
"languageDesc": {
"message": "變更網頁版密碼庫使用的語言。"
},
- "enableFavicon": {
- "message": "顯示網站圖示"
- },
- "faviconDesc": {
- "message": "在每個登入資料旁顯示一個可辨識的圖片。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"default": {
"message": "預設"
@@ -10982,6 +10988,12 @@
"message": "Billing address required to add credit.",
"description": "Error message shown when trying to add credit to a trialing organization without a billing address."
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"billingAddress": {
"message": "Billing address"
},
From 2b2912b1be6570be0a9ea33ed011b2a514f3df74 Mon Sep 17 00:00:00 2001
From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com>
Date: Fri, 29 Aug 2025 11:16:03 +0000
Subject: [PATCH 076/167] Autosync the updated translations (#16207)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
---
apps/desktop/src/locales/af/messages.json | 13 ++++---
apps/desktop/src/locales/ar/messages.json | 13 ++++---
apps/desktop/src/locales/az/messages.json | 13 ++++---
apps/desktop/src/locales/be/messages.json | 13 ++++---
apps/desktop/src/locales/bg/messages.json | 13 ++++---
apps/desktop/src/locales/bn/messages.json | 13 ++++---
apps/desktop/src/locales/bs/messages.json | 13 ++++---
apps/desktop/src/locales/ca/messages.json | 13 ++++---
apps/desktop/src/locales/cs/messages.json | 13 ++++---
apps/desktop/src/locales/cy/messages.json | 13 ++++---
apps/desktop/src/locales/da/messages.json | 13 ++++---
apps/desktop/src/locales/de/messages.json | 13 ++++---
apps/desktop/src/locales/el/messages.json | 13 ++++---
apps/desktop/src/locales/en_GB/messages.json | 13 ++++---
apps/desktop/src/locales/en_IN/messages.json | 13 ++++---
apps/desktop/src/locales/eo/messages.json | 13 ++++---
apps/desktop/src/locales/es/messages.json | 13 ++++---
apps/desktop/src/locales/et/messages.json | 13 ++++---
apps/desktop/src/locales/eu/messages.json | 13 ++++---
apps/desktop/src/locales/fa/messages.json | 13 ++++---
apps/desktop/src/locales/fi/messages.json | 13 ++++---
apps/desktop/src/locales/fil/messages.json | 13 ++++---
apps/desktop/src/locales/fr/messages.json | 13 ++++---
apps/desktop/src/locales/gl/messages.json | 13 ++++---
apps/desktop/src/locales/he/messages.json | 39 ++++++++++---------
apps/desktop/src/locales/hi/messages.json | 13 ++++---
apps/desktop/src/locales/hr/messages.json | 13 ++++---
apps/desktop/src/locales/hu/messages.json | 13 ++++---
apps/desktop/src/locales/id/messages.json | 13 ++++---
apps/desktop/src/locales/it/messages.json | 13 ++++---
apps/desktop/src/locales/ja/messages.json | 13 ++++---
apps/desktop/src/locales/ka/messages.json | 13 ++++---
apps/desktop/src/locales/km/messages.json | 13 ++++---
apps/desktop/src/locales/kn/messages.json | 13 ++++---
apps/desktop/src/locales/ko/messages.json | 13 ++++---
apps/desktop/src/locales/lt/messages.json | 13 ++++---
apps/desktop/src/locales/lv/messages.json | 13 ++++---
apps/desktop/src/locales/me/messages.json | 13 ++++---
apps/desktop/src/locales/ml/messages.json | 13 ++++---
apps/desktop/src/locales/mr/messages.json | 13 ++++---
apps/desktop/src/locales/my/messages.json | 13 ++++---
apps/desktop/src/locales/nb/messages.json | 13 ++++---
apps/desktop/src/locales/ne/messages.json | 13 ++++---
apps/desktop/src/locales/nl/messages.json | 13 ++++---
apps/desktop/src/locales/nn/messages.json | 13 ++++---
apps/desktop/src/locales/or/messages.json | 13 ++++---
apps/desktop/src/locales/pl/messages.json | 21 +++++-----
apps/desktop/src/locales/pt_BR/messages.json | 13 ++++---
apps/desktop/src/locales/pt_PT/messages.json | 13 ++++---
apps/desktop/src/locales/ro/messages.json | 13 ++++---
apps/desktop/src/locales/ru/messages.json | 13 ++++---
apps/desktop/src/locales/si/messages.json | 13 ++++---
apps/desktop/src/locales/sk/messages.json | 13 ++++---
apps/desktop/src/locales/sl/messages.json | 13 ++++---
apps/desktop/src/locales/sr/messages.json | 13 ++++---
apps/desktop/src/locales/sv/messages.json | 13 ++++---
apps/desktop/src/locales/te/messages.json | 13 ++++---
apps/desktop/src/locales/th/messages.json | 13 ++++---
apps/desktop/src/locales/tr/messages.json | 41 +++++++++++---------
apps/desktop/src/locales/uk/messages.json | 13 ++++---
apps/desktop/src/locales/vi/messages.json | 13 ++++---
apps/desktop/src/locales/zh_CN/messages.json | 13 ++++---
apps/desktop/src/locales/zh_TW/messages.json | 13 ++++---
63 files changed, 535 insertions(+), 346 deletions(-)
diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json
index cce27510be0..ed5167e7f33 100644
--- a/apps/desktop/src/locales/af/messages.json
+++ b/apps/desktop/src/locales/af/messages.json
@@ -1305,11 +1305,8 @@
"message": "Wis gekopieerde waardes outomaties vanuit u knipbord.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Toon webwerfikone"
- },
- "faviconDesc": {
- "message": "Toon ’n herkenbare beeld langs elke aantekening."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimaliseer na stelsellaai"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json
index 54277fdffa4..1d7e12f0cc0 100644
--- a/apps/desktop/src/locales/ar/messages.json
+++ b/apps/desktop/src/locales/ar/messages.json
@@ -1305,11 +1305,8 @@
"message": "مسح القيم المنسوخة تلقائيًا من حافظتك.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "إظهار أيقونات الموقع"
- },
- "faviconDesc": {
- "message": "إظهار صورة قابلة للتعرف بجانب كل تسجيل دخول."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "تصغير إلى أيقونة شريط المهام"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json
index d7793c28dd3..05c3d1f1bcc 100644
--- a/apps/desktop/src/locales/az/messages.json
+++ b/apps/desktop/src/locales/az/messages.json
@@ -1305,11 +1305,8 @@
"message": "Kopyalanmış dəyərləri lövhədən avtomatik təmizlə.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Veb sayt ikonlarını göstər"
- },
- "faviconDesc": {
- "message": "Hər girişin yanında tanına bilən bir təsvir göstər."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Bildiriş sahəsi ikonuna kiçilt"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Kolleksiyalara təyin et"
},
diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json
index e4cd522aefa..4966d9d6194 100644
--- a/apps/desktop/src/locales/be/messages.json
+++ b/apps/desktop/src/locales/be/messages.json
@@ -1305,11 +1305,8 @@
"message": "Аўтаматычна ачышчаць скапіяваныя значэнні з вашага буфера абмену.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Паказваць значкі вэб-сайтаў"
- },
- "faviconDesc": {
- "message": "Паказваць распазнавальны відарыс побач з кожным лагінам."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Згарнуць у вобласць апавяшчэнняў"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json
index e0590fcb0bb..a2707e2ae35 100644
--- a/apps/desktop/src/locales/bg/messages.json
+++ b/apps/desktop/src/locales/bg/messages.json
@@ -1305,11 +1305,8 @@
"message": "Автоматично изчистване на буфера след поставяне на стойността.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Показване на иконките на уеб сайтовете"
- },
- "faviconDesc": {
- "message": "Показване на разпознаваемо изображение до всеки запис."
+ "showIconsChangePasswordUrls": {
+ "message": "Показване на иконките на уеб сайтовете и извличане на адресите за смяна на паролата"
},
"enableMinToTray": {
"message": "Смаляване в областта за уведомяване"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Относно тази настройка"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Битуорден ще използва запазените адреси за вписване, за да определи коя иконка или адрес за смяна на паролата да се ползва, за да улесни работата Ви. Никакви данни не се събират или съхраняват, когато използвате тази услуга."
+ },
"assignToCollections": {
"message": "Свързване с колекции"
},
diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json
index b0ea7f40bb8..b953ccbb03a 100644
--- a/apps/desktop/src/locales/bn/messages.json
+++ b/apps/desktop/src/locales/bn/messages.json
@@ -1305,11 +1305,8 @@
"message": "আপনার ক্লিপবোর্ড থেকে অনুলিপিত মানগুলি স্বয়ংক্রিয়ভাবে সাফ করে।",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json
index 8163f9be864..5393da1d3ce 100644
--- a/apps/desktop/src/locales/bs/messages.json
+++ b/apps/desktop/src/locales/bs/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatski očistiti kopirane vrijednosti iz vaše međumemorije.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimiziraj kao ikonicu u sistemskoj traci"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json
index e71ce2d1a26..eafdb7ae274 100644
--- a/apps/desktop/src/locales/ca/messages.json
+++ b/apps/desktop/src/locales/ca/messages.json
@@ -1305,11 +1305,8 @@
"message": "Esborra automàticament els valors copiats del porta-retalls.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Mostra les icones del lloc web"
- },
- "faviconDesc": {
- "message": "Mostra una imatge reconeixible al costat de cada inici de sessió."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimitza a icona en la safata"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assigna a col·leccions"
},
diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json
index 279f1b2e698..f2d4058ff96 100644
--- a/apps/desktop/src/locales/cs/messages.json
+++ b/apps/desktop/src/locales/cs/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automaticky vymaže zkopírované hodnoty z Vaší schránky.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Zobrazit ikony webových stránek"
- },
- "faviconDesc": {
- "message": "Zobrazí rozeznatelný obrázek vedle každého přihlášení."
+ "showIconsChangePasswordUrls": {
+ "message": "Zobrazit ikony webových stránek a načíst URL adresy pro změnu hesla"
},
"enableMinToTray": {
"message": "Minimalizovat do systémové lišty"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "O tomto nastavení"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden bude používat uložené přihlašovací URI k identifikaci, která ikona nebo změna adresy URL by měla být použita pro zlepšení Vašeho zážitku. Při používání této služby nejsou shromažďovány ani ukládány žádné informace."
+ },
"assignToCollections": {
"message": "Přiřadit ke sbírkám"
},
diff --git a/apps/desktop/src/locales/cy/messages.json b/apps/desktop/src/locales/cy/messages.json
index 5509981bc14..055ccc91eb3 100644
--- a/apps/desktop/src/locales/cy/messages.json
+++ b/apps/desktop/src/locales/cy/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json
index 680f29a05d0..da09ac723cf 100644
--- a/apps/desktop/src/locales/da/messages.json
+++ b/apps/desktop/src/locales/da/messages.json
@@ -1305,11 +1305,8 @@
"message": "Ryd automatisk kopierede data fra udklipsholderen.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Vis webstedsikoner"
- },
- "faviconDesc": {
- "message": "Vis et genkendeligt billede ud for hvert login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimér som bakkeikon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json
index c976db9c2ba..7fcf2337c94 100644
--- a/apps/desktop/src/locales/de/messages.json
+++ b/apps/desktop/src/locales/de/messages.json
@@ -1305,11 +1305,8 @@
"message": "Kopierten Inhalt automatisch aus der Zwischenablage löschen.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Website-Symbole anzeigen"
- },
- "faviconDesc": {
- "message": "Ein wiedererkennbares Bild neben jeden Zugangsdaten anzeigen."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "In Infobereich-Symbol minimieren"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Sammlungen zuweisen"
},
diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json
index 8bd66e22ac5..7f3df18b286 100644
--- a/apps/desktop/src/locales/el/messages.json
+++ b/apps/desktop/src/locales/el/messages.json
@@ -1305,11 +1305,8 @@
"message": "Αυτόματη εκκαθάριση αντιγραμμένων τιμών προχείρου.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Εμφάνιση εικονιδίων ιστοτόπων"
- },
- "faviconDesc": {
- "message": "Εμφάνιση μιας αναγνωρίσιμης εικόνας δίπλα σε κάθε σύνδεση."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Ελαχιστοποίηση σε εικονίδιο περιοχής ειδοποιήσεων"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json
index 8094de67ce9..ff515cbab8a 100644
--- a/apps/desktop/src/locales/en_GB/messages.json
+++ b/apps/desktop/src/locales/en_GB/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognisable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimise to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json
index 311afd9e0ee..900ebcb1562 100644
--- a/apps/desktop/src/locales/en_IN/messages.json
+++ b/apps/desktop/src/locales/en_IN/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimise to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json
index 95b35d0ab80..8006da74e7d 100644
--- a/apps/desktop/src/locales/eo/messages.json
+++ b/apps/desktop/src/locales/eo/messages.json
@@ -1305,11 +1305,8 @@
"message": "Aŭtomate forviŝi la kopiitajn valorojn el via tondujo.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Montri la bildosimbolojn de la retejoj"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json
index 737d3b3aa68..233492bf304 100644
--- a/apps/desktop/src/locales/es/messages.json
+++ b/apps/desktop/src/locales/es/messages.json
@@ -1305,11 +1305,8 @@
"message": "Borrar automáticamente los valores copiados de su portapapeles.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Mostrar iconos del sitio web"
- },
- "faviconDesc": {
- "message": "Mostrar una imagen reconocible junto a cada inicio de sesión."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimizar a icono en la bandeja"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Asignar a colecciones"
},
diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json
index 5291e175152..66b9ed8c757 100644
--- a/apps/desktop/src/locales/et/messages.json
+++ b/apps/desktop/src/locales/et/messages.json
@@ -1305,11 +1305,8 @@
"message": "Puhastab automaatselt lõikelauale kopeeritud sisu.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Kuva veebilehtede ikoone"
- },
- "faviconDesc": {
- "message": "Kuvab iga kirje kõrval lehekülje ikooni."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimeeri tegumiribale"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json
index 2917854d587..2aeaaadd1e1 100644
--- a/apps/desktop/src/locales/eu/messages.json
+++ b/apps/desktop/src/locales/eu/messages.json
@@ -1305,11 +1305,8 @@
"message": "Ezabatu automatikoki arbelean kopiatutako balioak.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Erakutsi webguneko ikonoak"
- },
- "faviconDesc": {
- "message": "Erakutsi irudi bat saio-hasiera bakoitzaren ondoan."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimizatu erretiluko ikonora"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json
index c0182dca2d5..13cc092fe54 100644
--- a/apps/desktop/src/locales/fa/messages.json
+++ b/apps/desktop/src/locales/fa/messages.json
@@ -1305,11 +1305,8 @@
"message": "به صورت خودکار، مقادیر کپی شده را از حافظه موقت پاک کن.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "نمایش نمادهای وبسایت"
- },
- "faviconDesc": {
- "message": "یک تصویر قابل تشخیص در کنار هر ورود نشان دهید."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "کوچک کردن به نماد سینی"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "اختصاص به مجموعهها"
},
diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json
index 78e43c68308..c2f048f4a93 100644
--- a/apps/desktop/src/locales/fi/messages.json
+++ b/apps/desktop/src/locales/fi/messages.json
@@ -1305,11 +1305,8 @@
"message": "Poista kopioidut arvot leikepöydältä automaattisesti.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Näytä verkkosivustojen kuvakkeet"
- },
- "faviconDesc": {
- "message": "Näytä tunnistettava kuva jokaiselle kirjautumistiedolle."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Pienennä ilmoitusalueelle"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json
index 19ef8f4ead6..f2fbcc574e0 100644
--- a/apps/desktop/src/locales/fil/messages.json
+++ b/apps/desktop/src/locales/fil/messages.json
@@ -1305,11 +1305,8 @@
"message": "Awtomatikong linisin ang mga kopya mula sa iy.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Ipakita ang mga icon ng website"
- },
- "faviconDesc": {
- "message": "Ipakita ang isang kilalang larawan sa tabi ng bawat login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "I-minimise sa icon ng tray"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json
index 0076c2b81e5..3fa8e036f49 100644
--- a/apps/desktop/src/locales/fr/messages.json
+++ b/apps/desktop/src/locales/fr/messages.json
@@ -1305,11 +1305,8 @@
"message": "Effacer automatiquement de votre presse-papiers les valeurs copiées.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Afficher les icônes des sites web"
- },
- "faviconDesc": {
- "message": "Afficher une image reconnaissable à côté de chaque identifiant."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Réduire dans la zone de notification"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assigner aux collections"
},
diff --git a/apps/desktop/src/locales/gl/messages.json b/apps/desktop/src/locales/gl/messages.json
index 07de313e63d..676ee14c556 100644
--- a/apps/desktop/src/locales/gl/messages.json
+++ b/apps/desktop/src/locales/gl/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json
index bb5377fd12b..c5f91f81ea2 100644
--- a/apps/desktop/src/locales/he/messages.json
+++ b/apps/desktop/src/locales/he/messages.json
@@ -1305,11 +1305,8 @@
"message": "נקה אוטומטית ערכים שהועתקו ללוח ההעתקות (clipboard).",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "הצג סמלים של אתרי האינטרננט"
- },
- "faviconDesc": {
- "message": "הצג תמונה מוכרת בכל נסיון התחברות."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "מזער למגש המערכת"
@@ -1752,7 +1749,7 @@
"message": "לא ניתן לייבא סוגי פריטי כרטיסים"
},
"restrictCardTypeImportDesc": {
- "message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults."
+ "message": "פוליסה שנקבעה על ידי ארגון אחד או יותר מונע ממך מלייבא כרטיסים לכספות שלך."
},
"filePasswordAndConfirmFilePasswordDoNotMatch": {
"message": "\"סיסמת קובץ\" ו\"אשר סיסמת קובץ\" אינם תואמים."
@@ -2422,13 +2419,13 @@
"message": "הסיסמה הראשית שלך אינה עומדת באחת או יותר מפוליסות הארגון שלך. כדי לגשת לכספת, אתה מוכרח לעדכן את הסיסמה הראשית שלך עכשיו. בהמשך תנותק מההפעלה הנוכחית שלך, מה שידרוש ממך להיכנס חזרה. הפעלות פעילות במכשירים אחרים עלולות להישאר פעילות למשך עד שעה אחת."
},
"changePasswordWarning": {
- "message": "After changing your password, you will need to log in with your new password. Active sessions on other devices will be logged out within one hour."
+ "message": "לאחר שינוי סיסמא, תצטרך להתחבר באמצעות הסיסמא החדשה שלך. הפעלות פעילות במכשירים אחרים ינותקו תוך שעה."
},
"accountRecoveryUpdateMasterPasswordSubtitle": {
- "message": "Change your master password to complete account recovery."
+ "message": "יש לשנות את הסיסמא הראשית שלך כדי להשלים את שחזור החשבון."
},
"updateMasterPasswordSubtitle": {
- "message": "Your master password does not meet this organization’s requirements. Change your master password to continue."
+ "message": "הסיסמא הראשית שלך לא עומדת בדרישות ארגון זה. שנה את הסיסמא הראשית שלך כדי להמשיך."
},
"tdeDisabledMasterPasswordRequired": {
"message": "הארגון שלך השבית הצפנת מכשיר מהימן. נא להגדיר סיסמה ראשית כדי לגשת לכספת שלך."
@@ -2571,7 +2568,7 @@
"message": "הסיסמה הראשית הוסרה"
},
"removeMasterPasswordForOrganizationUserKeyConnector": {
- "message": "A master password is no longer required for members of the following organization. Please confirm the domain below with your organization administrator."
+ "message": "סיסמא ראשית אינה נדרשת עוד עבור חברים בארגון הבא. אנא אשר את הדומיין שלהלן עם מנהל הארגון שלך."
},
"organizationName": {
"message": "שם הארגון"
@@ -3225,7 +3222,7 @@
"message": "לא ניתן להשלים את ההתחברות"
},
"loginOnTrustedDeviceOrAskAdminToAssignPassword": {
- "message": "You need to log in on a trusted device or ask your administrator to assign you a password."
+ "message": "עליך להיכנס ממכשיר מהימן או לבקש ממנהל המערכת שלך להקצות לך סיסמא."
},
"region": {
"message": "אזור"
@@ -3280,13 +3277,13 @@
"message": "הארגון אינו אמין"
},
"emergencyAccessTrustWarning": {
- "message": "For the security of your account, only confirm if you have granted emergency access to this user and their fingerprint matches what is displayed in their account"
+ "message": "למען אבטחת חשבונך, אשר רק אם הענקת גישה בשעת חירום למשתמש זה וטביעת האצבע שלהם תואמת עם מה שמוצג בחשבון שלהם"
},
"orgTrustWarning": {
- "message": "For the security of your account, only proceed if you are a member of this organization, have account recovery enabled, and the fingerprint displayed below matches the organization's fingerprint."
+ "message": "למען אבטחת חשבונך, המשך רק אם אתה חבר בארגון זה, שחזור חשבונך מופעל, וטביעת האצבע המוצגת למטה תואמת לטביעת האצבע של הארגון."
},
"orgTrustWarning1": {
- "message": "This organization has an Enterprise policy that will enroll you in account recovery. Enrollment will allow organization administrators to change your password. Only proceed if you recognize this organization and the fingerprint phrase displayed below matches the organization's fingerprint."
+ "message": "לארגון זה יש פוליסות ארגוניות שירשמו אותך לשחזור חשבון. ההרשמה תאפשר למנהלי הארגון לשנות את סיסמתך. המשך רק אם אתה מזהה ארגון זה וביטוי טביעת האצבע המוצג למטה תואם לטביעת האצבע של הארגון."
},
"trustUser": {
"message": "סמוך על המשתמש"
@@ -3462,7 +3459,7 @@
"message": "עקוב אחר השלבים למטה כדי לסיים להיכנס."
},
"followTheStepsBelowToFinishLoggingInWithSecurityKey": {
- "message": "Follow the steps below to finish logging in with your security key."
+ "message": "עקוב אחרי השלבים למטה כדי לסיים את הכניסה באמצעות מפתח האבטחה שלך."
},
"launchDuo": {
"message": "פתח את Duo בדפדפן"
@@ -3615,15 +3612,15 @@
"description": "Label indicating the most common import formats"
},
"uriMatchDefaultStrategyHint": {
- "message": "URI match detection is how Bitwarden identifies autofill suggestions.",
+ "message": "זיהוי התאמת URI הוא האופן שבו Bitwarden מזהה הצעות למילוי אוטומטי.",
"description": "Explains to the user that URI match detection determines how Bitwarden suggests autofill options, and clarifies that this default strategy applies when no specific match detection is set for a login item."
},
"regExAdvancedOptionWarning": {
- "message": "\"Regular expression\" is an advanced option with increased risk of exposing credentials.",
+ "message": "\"ביטוי רגולרי\" היא אפשרות מתקדמת עם סיכון מוגבר לחשיפת אישורי כניסה.",
"description": "Content for dialog which warns a user when selecting 'regular expression' matching strategy as a cipher match strategy"
},
"startsWithAdvancedOptionWarning": {
- "message": "\"Starts with\" is an advanced option with increased risk of exposing credentials.",
+ "message": "\"מתחיל עם\" היא אפשרות מתקדמת עם סיכון מוגבר לחשיפת אישורי כניסה.",
"description": "Content for dialog which warns a user when selecting 'starts with' matching strategy as a cipher match strategy"
},
"uriMatchWarningDialogLink": {
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "הקצה לאוספים"
},
diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json
index 0a451e6e238..0b15a1faad5 100644
--- a/apps/desktop/src/locales/hi/messages.json
+++ b/apps/desktop/src/locales/hi/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json
index 29680a25198..2303a72a23c 100644
--- a/apps/desktop/src/locales/hr/messages.json
+++ b/apps/desktop/src/locales/hr/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatski očisti kopirane vrijednosti iz međuspremnika.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Prikaži ikone mrežnih mjesta"
- },
- "faviconDesc": {
- "message": "Prikaži prepoznatljivu sliku pored svake prijave."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimiziraj u područje obavijesti"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Dodijeli zbirkama"
},
diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json
index 87468eb3622..d2c6d023678 100644
--- a/apps/desktop/src/locales/hu/messages.json
+++ b/apps/desktop/src/locales/hu/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatikusan törli a vágólapra másolt értékeket.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Webhely ikonok megjelenítése"
- },
- "faviconDesc": {
- "message": "Felismerhető kép megjelenítése minden bejelentkezés mellett."
+ "showIconsChangePasswordUrls": {
+ "message": "Webhely ikonok megjelenítése és jelszó webcímek módosításának lekérése"
},
"enableMinToTray": {
"message": "Kicsinyítés tálcaikonná"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Informció erről a beállításról"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "A Bitwarden mentett bejelentkezési webcímeket használ annak azonosítására, hogy melyik ikont vagy jelszó webcímet kell használni az élmény javítása érdekében. A szolgáltatás használatakor nincs információ gyűjtés vagy mentés."
+ },
"assignToCollections": {
"message": "Hozzárendelés gyűjteményekhez"
},
diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json
index 3c6fb0bf8fc..4047d491bd1 100644
--- a/apps/desktop/src/locales/id/messages.json
+++ b/apps/desktop/src/locales/id/messages.json
@@ -1305,11 +1305,8 @@
"message": "Secara otomatis menghapus nilai yang disalin dari clipboard Anda.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Tampilkan ikon website"
- },
- "faviconDesc": {
- "message": "Tampilkan gambar pengenal di samping setiap login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Kecilkan ke Ikon Baki"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json
index 85033e30341..91bc61fe0a4 100644
--- a/apps/desktop/src/locales/it/messages.json
+++ b/apps/desktop/src/locales/it/messages.json
@@ -1305,11 +1305,8 @@
"message": "Cancella automaticamente i valori copiati dagli appunti.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Mostra icone dei siti"
- },
- "faviconDesc": {
- "message": "Mostra un piccolo logo riconoscibile accanto a ogni login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimizza nell'area di notifica"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assegna a una raccolta"
},
diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json
index 64ec2e4a0ec..5bc37bc295d 100644
--- a/apps/desktop/src/locales/ja/messages.json
+++ b/apps/desktop/src/locales/ja/messages.json
@@ -1305,11 +1305,8 @@
"message": "選択した時間が経過した後、自動的にクリップボードを消去します。",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "ウェブサイトのアイコンを表示"
- },
- "faviconDesc": {
- "message": "ログイン情報の隣にアイコン画像を表示します"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "トレイアイコンに最小化"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json
index c2a474dfdfa..57d831a8210 100644
--- a/apps/desktop/src/locales/ka/messages.json
+++ b/apps/desktop/src/locales/ka/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json
index 07de313e63d..676ee14c556 100644
--- a/apps/desktop/src/locales/km/messages.json
+++ b/apps/desktop/src/locales/km/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json
index 31eb6dd4b1e..ef8e1095471 100644
--- a/apps/desktop/src/locales/kn/messages.json
+++ b/apps/desktop/src/locales/kn/messages.json
@@ -1305,11 +1305,8 @@
"message": "ನಿಮ್ಮ ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಿಂದ ನಕಲಿಸಿದ ಮೌಲ್ಯಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆರವುಗೊಳಿಸಿ.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "ಟ್ರೇ ಐಕಾನ್ಗೆ ಕಡಿಮೆ ಮಾಡಿ"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json
index 50f723b406c..24d5c7b427f 100644
--- a/apps/desktop/src/locales/ko/messages.json
+++ b/apps/desktop/src/locales/ko/messages.json
@@ -1305,11 +1305,8 @@
"message": "자동으로 클립보드에 복사된 값을 제거합니다.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "웹사이트 아이콘 표시하기"
- },
- "faviconDesc": {
- "message": "로그인 정보 옆에 식별용 이미지를 표시합니다."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "알림 영역으로 최소화"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/lt/messages.json b/apps/desktop/src/locales/lt/messages.json
index 5d2261c2029..24a2f8c1e62 100644
--- a/apps/desktop/src/locales/lt/messages.json
+++ b/apps/desktop/src/locales/lt/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatiškai išvalyti nukopijuotas reikšmes iškarpinėje.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Rodyti tinklalapių ikonėles"
- },
- "faviconDesc": {
- "message": "Prie kiekvieno prisijungimo parodykite atpažįstamą vaizdą."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Sumažinti į užduočių juostos piktogramą"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json
index ae0e19b743d..2aae7635487 100644
--- a/apps/desktop/src/locales/lv/messages.json
+++ b/apps/desktop/src/locales/lv/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automātiski noņemt starpliktuvē ievietotās vērtības.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Rādīt tīmekļvietņu ikonas"
- },
- "faviconDesc": {
- "message": "Attēlot atpazīstamu attēlu pie katra pieteikšanās vienuma."
+ "showIconsChangePasswordUrls": {
+ "message": "Rādīt tīmekļvietņu ikonas un iegūt paroles nomaiņas URL"
},
"enableMinToTray": {
"message": "Samazināt ikonjoslā"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Par šo iestatījumu"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden izmantos saglabātos pieteikšanās vienuma URI, lai noteiktu, kuru ikonu vai paroles nomaiņas URL izmantot, lai uzlabotu pieredzi. Šī pakalpojuma izmantošanas laikā nekāda informācija netiek ievākta vai saglabāta."
+ },
"assignToCollections": {
"message": "Piešķirt krājumiem"
},
diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json
index 012b64e62bd..d01f3cf48b5 100644
--- a/apps/desktop/src/locales/me/messages.json
+++ b/apps/desktop/src/locales/me/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatsko brisanje kopiranih vrijednosti iz vašeg međuspremnika.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "MInimiziraj u sistemsku traku"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json
index 8a76d49d3b0..e5d3ed265d8 100644
--- a/apps/desktop/src/locales/ml/messages.json
+++ b/apps/desktop/src/locales/ml/messages.json
@@ -1305,11 +1305,8 @@
"message": "നിങ്ങളുടെ ക്ലിപ്പ്ബോർഡിൽ നിന്ന് പകർത്തിയ മൂല്യങ്ങൾ സ്വയം മായ്ക്കുക.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "ട്രേ ഐക്കണിലേക്ക് ചെറുതാക്കുക"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/mr/messages.json b/apps/desktop/src/locales/mr/messages.json
index 07de313e63d..676ee14c556 100644
--- a/apps/desktop/src/locales/mr/messages.json
+++ b/apps/desktop/src/locales/mr/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/my/messages.json b/apps/desktop/src/locales/my/messages.json
index f277fcf61cf..7b36a7fc52f 100644
--- a/apps/desktop/src/locales/my/messages.json
+++ b/apps/desktop/src/locales/my/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json
index 07f61c5fe79..d3d4a284e7f 100644
--- a/apps/desktop/src/locales/nb/messages.json
+++ b/apps/desktop/src/locales/nb/messages.json
@@ -1305,11 +1305,8 @@
"message": "Slett automatisk kopierte verdier fra utklippstavlen.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Vis nettstedsikoner"
- },
- "faviconDesc": {
- "message": "Vis et gjenkjennelig bilde ved siden av hver innlogging."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimer til oppgavelinjen"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Legg til i samlinger"
},
diff --git a/apps/desktop/src/locales/ne/messages.json b/apps/desktop/src/locales/ne/messages.json
index 7f68ff13562..018ea7b0d3f 100644
--- a/apps/desktop/src/locales/ne/messages.json
+++ b/apps/desktop/src/locales/ne/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json
index 82591230a83..37203a071ad 100644
--- a/apps/desktop/src/locales/nl/messages.json
+++ b/apps/desktop/src/locales/nl/messages.json
@@ -1305,11 +1305,8 @@
"message": "Gekopieerde waarden automatisch van het klembord wissen.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Toon website-pictogrammen"
- },
- "faviconDesc": {
- "message": "Een herkenbare afbeelding naast iedere login weergeven."
+ "showIconsChangePasswordUrls": {
+ "message": "Pictogrammen van de website weergeven URL's voor wachtwoordwijzigingen ophalen"
},
"enableMinToTray": {
"message": "Minimaliseren naar systeemvak"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Over deze instelling"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden gebruikt opgeslagen login-URI's om te bepalen welk pictogram of URL voor het wijzigen van het wachtwoord moet worden gebruikt om je ervaring te verbeteren. Er wordt geen informatie verzameld of opgeslagen wanneer je deze service gebruikt."
+ },
"assignToCollections": {
"message": "Aan collecties toewijzen"
},
diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json
index a6710d7fa37..eebc323de60 100644
--- a/apps/desktop/src/locales/nn/messages.json
+++ b/apps/desktop/src/locales/nn/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Vis nettstadikon"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/or/messages.json b/apps/desktop/src/locales/or/messages.json
index 23efde7f42d..bdc8488ce9f 100644
--- a/apps/desktop/src/locales/or/messages.json
+++ b/apps/desktop/src/locales/or/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json
index 91394e2be1f..e320046b947 100644
--- a/apps/desktop/src/locales/pl/messages.json
+++ b/apps/desktop/src/locales/pl/messages.json
@@ -590,7 +590,7 @@
}
},
"length": {
- "message": "Długość"
+ "message": "Liczba znaków"
},
"passwordMinLength": {
"message": "Minimalna długość hasła"
@@ -936,7 +936,7 @@
"message": "Kod weryfikacyjny jest nieprawidłowy"
},
"continue": {
- "message": "Przejdź"
+ "message": "Kontynuuj"
},
"verificationCodeEmailSent": {
"message": "Wiadomość weryfikacyjna została wysłana na adres $EMAIL$.",
@@ -1163,7 +1163,7 @@
"message": "Zmień hasło główne"
},
"continueToWebApp": {
- "message": "Przejść do aplikacji internetowej?"
+ "message": "Kontynuować przejście do aplikacji internetowej?"
},
"changeMasterPasswordOnWebConfirmation": {
"message": "Możesz zmienić hasło główne w aplikacji internetowej Bitwarden."
@@ -1305,11 +1305,8 @@
"message": "Automatycznie wyczyść skopiowaną wartość ze schowka.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Pokaż ikony stron internetowych"
- },
- "faviconDesc": {
- "message": "Pokaż rozpoznawalną ikonę obok danych logowania."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimalizuj do zasobnika systemowego"
@@ -1693,7 +1690,7 @@
"message": "Wyjdź"
},
"showHide": {
- "message": "Pokaż / Ukryj",
+ "message": "Pokaż / ukryj",
"description": "Text for a button that toggles the visibility of the window. Shows the window when it is hidden or hides the window if it is currently open."
},
"hideToTray": {
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Przypisz do kolekcji"
},
diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json
index 9db268ed9bc..8394525aa7d 100644
--- a/apps/desktop/src/locales/pt_BR/messages.json
+++ b/apps/desktop/src/locales/pt_BR/messages.json
@@ -1305,11 +1305,8 @@
"message": "Limpar automaticamente os valores copiados da sua área de transferência.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Mostrar ícones dos sites"
- },
- "faviconDesc": {
- "message": "Mostre uma imagem reconhecível ao lado de cada credencial."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimizar para ícone da bandeja"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Atribuído a coleções"
},
diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json
index 5fd620a00ff..30152d2ef07 100644
--- a/apps/desktop/src/locales/pt_PT/messages.json
+++ b/apps/desktop/src/locales/pt_PT/messages.json
@@ -1305,11 +1305,8 @@
"message": "Limpar automaticamente os valores copiados da sua área de transferência.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Mostrar ícones do site"
- },
- "faviconDesc": {
- "message": "Mostrar uma imagem reconhecível junto a cada credencial."
+ "showIconsChangePasswordUrls": {
+ "message": "Mostrar ícones de sites e recuperar URLs de alteração de palavra-passe"
},
"enableMinToTray": {
"message": "Minimizar para ícone de bandeja"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Acerca desta definição"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "O Bitwarden utilizará os URIs de credenciais guardadas para identificar qual o ícone ou URL de alteração de palavra-passe que deve ser utilizado para melhorar a sua experiência. Nenhuma informação é recolhida ou guardada quando utiliza este serviço."
+ },
"assignToCollections": {
"message": "Atribuir às coleções"
},
diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json
index 7ebde796b70..d8f98249de8 100644
--- a/apps/desktop/src/locales/ro/messages.json
+++ b/apps/desktop/src/locales/ro/messages.json
@@ -1305,11 +1305,8 @@
"message": "Se șterg automat valorile copiate din clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Afișare pictograme site web"
- },
- "faviconDesc": {
- "message": "Afișează o imagine ușor de recunoscut lângă fiecare autentificare."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Se minimizează în zona de notificare"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json
index 4cb36325d0e..c7e7375e4a5 100644
--- a/apps/desktop/src/locales/ru/messages.json
+++ b/apps/desktop/src/locales/ru/messages.json
@@ -1305,11 +1305,8 @@
"message": "Автоматически удалять скопированные значения из буфера обмена.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Показать значки сайтов"
- },
- "faviconDesc": {
- "message": "Отображать узнаваемое изображение рядом с каждым логином."
+ "showIconsChangePasswordUrls": {
+ "message": "Показывать значки сайтов и извлекать URL изменения пароля"
},
"enableMinToTray": {
"message": "Сворачивать в область уведомлений"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Об этой настройке"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden будет использовать сохраненные URI логинов, чтобы определить, какой значок или URL для смены пароля следует использовать для улучшения вашего взаимодействия. При использовании этого сервиса никакая информация не собирается и не сохраняется."
+ },
"assignToCollections": {
"message": "Назначить коллекциям"
},
diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json
index ade8bd70e52..4344eea3689 100644
--- a/apps/desktop/src/locales/si/messages.json
+++ b/apps/desktop/src/locales/si/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json
index 634622d66d4..d4ddc7c5d35 100644
--- a/apps/desktop/src/locales/sk/messages.json
+++ b/apps/desktop/src/locales/sk/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automaticky vymazať skopírované hodnoty zo schránky.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Zobrazovať favikony stránok"
- },
- "faviconDesc": {
- "message": "Pri každom prihlásení zobrazí rozpoznateľný obrázok."
+ "showIconsChangePasswordUrls": {
+ "message": "Zobraziť ikony webových stránok a načítať adresy URL na zmenu hesla"
},
"enableMinToTray": {
"message": "Minimalizovať do systémovej lišty"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "O tomto nastavení"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden použije uložené prihlasovacie URI na určenie ikony alebo adresy URL na zmenu hesla, ktoré by sa mali použiť na zlepšenie vášho zážitku. Pri používaní tejto služby sa nezbierajú ani neukladajú žiadne informácie."
+ },
"assignToCollections": {
"message": "Priradiť ku zbierkam"
},
diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json
index 57811085362..6d8ec6d3379 100644
--- a/apps/desktop/src/locales/sl/messages.json
+++ b/apps/desktop/src/locales/sl/messages.json
@@ -1305,11 +1305,8 @@
"message": "Samodejno počisti kopirane vrednosti iz odložišča.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Pomanjšaj v orodno vrstico"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json
index 39f930dc6db..1596fdb3a8e 100644
--- a/apps/desktop/src/locales/sr/messages.json
+++ b/apps/desktop/src/locales/sr/messages.json
@@ -1305,11 +1305,8 @@
"message": "Аутоматски обришите копиране вредности из привремене меморије.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Прикажи иконе сајтова"
- },
- "faviconDesc": {
- "message": "Прикажи препознатљиву слику поред сваке ставке за пријаву."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Минимизирај као иконицу у системској траци"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Додели колекцијама"
},
diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json
index b6bb67ad595..ef191b1afb8 100644
--- a/apps/desktop/src/locales/sv/messages.json
+++ b/apps/desktop/src/locales/sv/messages.json
@@ -1305,11 +1305,8 @@
"message": "Rensa automatiskt kopierade värden från urklipp.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Visa webbplatsikoner"
- },
- "faviconDesc": {
- "message": "Visa en identifierbar bild bredvid varje inloggning."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimera till systemfältsikon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Tilldela till samlingar"
},
diff --git a/apps/desktop/src/locales/te/messages.json b/apps/desktop/src/locales/te/messages.json
index 07de313e63d..676ee14c556 100644
--- a/apps/desktop/src/locales/te/messages.json
+++ b/apps/desktop/src/locales/te/messages.json
@@ -1305,11 +1305,8 @@
"message": "Automatically clear copied values from your clipboard.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Show website icons"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to tray icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json
index 8f7f7494ce3..c53a04c2d55 100644
--- a/apps/desktop/src/locales/th/messages.json
+++ b/apps/desktop/src/locales/th/messages.json
@@ -1305,11 +1305,8 @@
"message": "ล้างค่าที่คัดลอกโดยอัตโนมัติจากคลิปบอร์ดของคุณ",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "โชว์ไอคอนเว็บไซต์"
- },
- "faviconDesc": {
- "message": "Show a recognizable image next to each login."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Minimize to Tray Icon"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json
index f77d2bfd7b4..ad9eb74d6d4 100644
--- a/apps/desktop/src/locales/tr/messages.json
+++ b/apps/desktop/src/locales/tr/messages.json
@@ -211,7 +211,7 @@
"message": "RSA 4096 bit"
},
"sshKeyGenerated": {
- "message": "A new SSH key was generated"
+ "message": "Yeni bir SSH anahtarı oluşturuldu"
},
"sshKeyWrongPassword": {
"message": "Girdiğiniz parola yanlış."
@@ -232,7 +232,7 @@
"message": "Please unlock your vault to approve the SSH key request."
},
"sshAgentUnlockTimeout": {
- "message": "SSH key request timed out."
+ "message": "SSH anahtar isteği zaman aşımına uğradı."
},
"enableSshAgent": {
"message": "Enable SSH agent"
@@ -280,11 +280,11 @@
"message": "Bitwarden, aşağıda listelenen kasa öğelerinin şifresini çözemedi."
},
"contactCSToAvoidDataLossPart1": {
- "message": "Contact customer success",
+ "message": "Müşteri ekibi ile başarıyla iletişime geçtin",
"description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'"
},
"contactCSToAvoidDataLossPart2": {
- "message": "to avoid additional data loss.",
+ "message": "ek veri kaybını önlemek için.",
"description": "This is part of a larger sentence. The full sentence will read 'Contact customer success to avoid additional data loss.'"
},
"january": {
@@ -560,7 +560,7 @@
"message": "Parolayı kopyala"
},
"regenerateSshKey": {
- "message": "Regenerate SSH key"
+ "message": "SSH anahtarını yeniden oluştur"
},
"copySshPrivateKey": {
"message": "SSH özel anahtarını kopyala"
@@ -718,7 +718,7 @@
"message": "Maksimum dosya boyutu 500 MB'dir."
},
"legacyEncryptionUnsupported": {
- "message": "Legacy encryption is no longer supported. Please contact support to recover your account."
+ "message": "Eski şifreleme artık desteklenmemektedir. Hesabınızı kurtarmak için lütfen destek ekibiyle iletişime geçin."
},
"editedFolder": {
"message": "Klasör kaydedildi"
@@ -1027,13 +1027,13 @@
"message": "Şirket içinde barındırılan ortam"
},
"selfHostedBaseUrlHint": {
- "message": "Specify the base URL of your on-premises hosted Bitwarden installation. Example: https://bitwarden.company.com"
+ "message": "Yerel sunucunuzda barındırılan Bitwarden kurulumunuzun temel URL’sini belirtin. Örnek: https://bitwarden.sirketiniz.com"
},
"selfHostedCustomEnvHeader": {
"message": "İleri düzey yapılandırma için her hizmetin taban URL'sini bağımsız olarak belirleyebilirsiniz."
},
"selfHostedEnvFormInvalid": {
- "message": "You must add either the base Server URL or at least one custom environment."
+ "message": "Temel Sunucu URL’sini veya en az bir özel ortam eklemelisiniz."
},
"customEnvironment": {
"message": "Özel ortam"
@@ -1305,11 +1305,8 @@
"message": "Kopyalanan değerleri otomatik olarak panodan sil.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Web sitesi simgelerini göster"
- },
- "faviconDesc": {
- "message": "Hesapların yanında tanıdık görseller göster."
+ "showIconsChangePasswordUrls": {
+ "message": "Web sitesi simgelerini göster ve parola değiştirme URL'lerini al"
},
"enableMinToTray": {
"message": "Tepsi simgesine küçült"
@@ -1623,10 +1620,10 @@
"message": "Kopyalama başarılı"
},
"errorRefreshingAccessToken": {
- "message": "Access Token Refresh Error"
+ "message": "Erişim Anahtarı Yenileme Hatası"
},
"errorRefreshingAccessTokenDesc": {
- "message": "No refresh token or API keys found. Please try logging out and logging back in."
+ "message": "Yenileme veya API anahtarı bulunamadı. Lütfen çıkış yapıp tekrar giriş yapmayı deneyin."
},
"help": {
"message": "Yardım"
@@ -1749,7 +1746,7 @@
"message": "Hesap kısıtlı"
},
"restrictCardTypeImport": {
- "message": "Cannot import card item types"
+ "message": "Kart öge türleri içe aktarılamıyor"
},
"restrictCardTypeImportDesc": {
"message": "A policy set by 1 or more organizations prevents you from importing cards to your vaults."
@@ -1829,7 +1826,7 @@
"message": "Kilidi Windows Hello ile aç"
},
"unlockWithPolkit": {
- "message": "Unlock with system authentication"
+ "message": "Sistem kimlik doğrulaması ile kilit açma"
},
"windowsHelloConsentMessage": {
"message": "Bitwarden için doğrulayın."
@@ -2002,10 +1999,10 @@
"message": "Kimlik doğrulama anahtarını kopyala (TOTP)"
},
"totpHelperTitle": {
- "message": "Make 2-step verification seamless"
+ "message": "2 adımlı doğrulamayı sorunsuz hale getirin"
},
"totpHelper": {
- "message": "Bitwarden can store and fill 2-step verification codes. Copy and paste the key into this field."
+ "message": "Bitwarden, 2 adımlı doğrulama kodlarını saklayabilir ve otomatik olarak doldurabilir. Anahtarı kopyalayıp bu alana yapıştırın."
},
"totpHelperWithCapture": {
"message": "Bitwarden can store and fill 2-step verification codes. Select the camera icon to take a screenshot of this website's authenticator QR code, or copy and paste the key into this field."
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "Bu ayar hakkında"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json
index aff1ea20739..41b6ae9340b 100644
--- a/apps/desktop/src/locales/uk/messages.json
+++ b/apps/desktop/src/locales/uk/messages.json
@@ -1305,11 +1305,8 @@
"message": "Автоматично очищати скопійовані значення з буфера обміну.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Показувати піктограми вебсайтів"
- },
- "faviconDesc": {
- "message": "Показувати зображення біля кожного запису."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Згортати до системного лотка"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Призначити до збірок"
},
diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json
index aeef74f5caa..c4b08cc9df2 100644
--- a/apps/desktop/src/locales/vi/messages.json
+++ b/apps/desktop/src/locales/vi/messages.json
@@ -1305,11 +1305,8 @@
"message": "Tự động xóa mọi thứ đã sao chép khỏi bảng nhớ tạm.",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "Hiện biểu tượng trang web"
- },
- "faviconDesc": {
- "message": "Hiện logo trang web bên cạnh mỗi đăng nhập."
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "Thu nhỏ vào khay hệ thống"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Gán vào bộ sưu tập"
},
diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json
index da82f06b39f..b23ea267827 100644
--- a/apps/desktop/src/locales/zh_CN/messages.json
+++ b/apps/desktop/src/locales/zh_CN/messages.json
@@ -1305,11 +1305,8 @@
"message": "自动清除复制到剪贴板的值。",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "显示网站图标"
- },
- "faviconDesc": {
- "message": "在每个登录项目旁边显示可识别的图像。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "最小化到托盘图标"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "分配到集合"
},
diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json
index 026034e2dfc..a2b8f394568 100644
--- a/apps/desktop/src/locales/zh_TW/messages.json
+++ b/apps/desktop/src/locales/zh_TW/messages.json
@@ -1305,11 +1305,8 @@
"message": "自動清除剪貼簿中複製的值。",
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
- "enableFavicon": {
- "message": "顯示網站圖示"
- },
- "faviconDesc": {
- "message": "在每個登入資料旁顯示一個可辨識的圖片。"
+ "showIconsChangePasswordUrls": {
+ "message": "Show website icons and retrieve change password URLs"
},
"enableMinToTray": {
"message": "最小化至系統匣圖示"
@@ -3928,6 +3925,12 @@
"description": "Two part message",
"example": "Store your keys and connect with the SSH agent for fast, encrypted authentication. Learn more about SSH agent"
},
+ "aboutThisSetting": {
+ "message": "About this setting"
+ },
+ "permitCipherDetailsDescription": {
+ "message": "Bitwarden will use saved login URIs to identify which icon or change password URL should be used to improve your experience. No information is collected or saved when you use this service."
+ },
"assignToCollections": {
"message": "Assign to collections"
},
From 97ee61db00917aad176df813119bef00a6322555 Mon Sep 17 00:00:00 2001
From: Oscar Hinton
Date: Fri, 29 Aug 2025 14:27:50 +0200
Subject: [PATCH 077/167] Configure clippy (#16194)
Apply the same clippy configuration as we have in sdk-internal. bitwarden/sdk-internal@49f84e6/Cargo.toml#L91-L94
Adds FIXME comments to all existing violations. unwrap is bad as those will resullt in panics and crash the application. Unused async is ignored in napi since that would require changes to the js side which I don't want to deal with.
---
.github/workflows/lint.yml | 7 ++++
apps/desktop/desktop_native/Cargo.toml | 22 ++++++++---
.../desktop_native/autotype/Cargo.toml | 8 +++-
apps/desktop/desktop_native/clippy.toml | 2 +
apps/desktop/desktop_native/core/Cargo.toml | 39 ++++++++++---------
.../desktop_native/core/src/autofill/unix.rs | 1 +
.../core/src/autofill/windows.rs | 1 +
.../core/src/autostart/unimplemented.rs | 1 +
.../core/src/biometric/windows.rs | 2 +
.../desktop_native/core/src/ipc/mod.rs | 2 +
.../desktop_native/core/src/password/macos.rs | 4 ++
.../core/src/password/windows.rs | 4 ++
.../core/src/powermonitor/linux.rs | 4 ++
.../core/src/powermonitor/unimplemented.rs | 2 +
.../desktop_native/core/src/ssh_agent/mod.rs | 6 +--
.../ssh_agent/named_pipe_listener_stream.rs | 2 +
.../desktop_native/core/src/ssh_agent/unix.rs | 2 +-
.../core/src/ssh_agent/windows.rs | 2 +-
.../desktop_native/macos_provider/Cargo.toml | 3 ++
.../desktop_native/macos_provider/src/lib.rs | 6 +++
apps/desktop/desktop_native/napi/Cargo.toml | 9 +++--
apps/desktop/desktop_native/napi/src/lib.rs | 19 +++++++--
apps/desktop/desktop_native/objc/Cargo.toml | 3 ++
apps/desktop/desktop_native/proxy/Cargo.toml | 3 ++
apps/desktop/desktop_native/proxy/src/main.rs | 2 +
.../windows_plugin_authenticator/Cargo.toml | 10 ++++-
.../windows_plugin_authenticator/src/lib.rs | 2 +
27 files changed, 131 insertions(+), 37 deletions(-)
create mode 100644 apps/desktop/desktop_native/clippy.toml
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 4246d623f04..7eab45e5b1b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -102,3 +102,10 @@ jobs:
run: cargo clippy --all-features --tests
env:
RUSTFLAGS: "-D warnings"
+
+ - name: Install cargo-sort
+ run: cargo install cargo-sort --locked --git https://github.com/DevinR528/cargo-sort.git --rev f5047967021cbb1f822faddc355b3b07674305a1
+
+ - name: Cargo sort
+ working-directory: ./apps/desktop/desktop_native
+ run: cargo sort --workspace --check
diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml
index 21835c61585..b5819d3688e 100644
--- a/apps/desktop/desktop_native/Cargo.toml
+++ b/apps/desktop/desktop_native/Cargo.toml
@@ -1,6 +1,13 @@
[workspace]
resolver = "2"
-members = ["napi", "core", "proxy", "macos_provider", "windows_plugin_authenticator", "autotype"]
+members = [
+ "autotype",
+ "core",
+ "macos_provider",
+ "napi",
+ "proxy",
+ "windows_plugin_authenticator"
+]
[workspace.package]
version = "0.0.0"
@@ -21,7 +28,7 @@ bytes = "=1.10.1"
cbc = "=0.1.2"
core-foundation = "=0.10.0"
dirs = "=6.0.0"
-ed25519 = "=2.2.3"
+ed25519 = "=2.2.3"
embed_plist = "=1.2.2"
futures = "=0.3.31"
hex = "=0.4.3"
@@ -36,7 +43,7 @@ napi-derive = "=2.16.13"
oo7 = "=0.4.3"
oslog = "=0.2.0"
pin-project = "=1.1.10"
-pkcs8 = "=0.10.2"
+pkcs8 = "=0.10.2"
rand = "=0.9.1"
rsa = "=0.9.6"
russh-cryptovec = "=0.7.3"
@@ -48,14 +55,14 @@ serde_json = "=1.0.127"
sha2 = "=0.10.8"
simplelog = "=0.12.2"
ssh-encoding = "=0.2.0"
-ssh-key = {version = "=0.6.7", default-features = false }
+ssh-key = { version = "=0.6.7", default-features = false }
sysinfo = "=0.35.0"
thiserror = "=2.0.12"
tokio = "=1.45.0"
tokio-stream = "=0.1.15"
tokio-util = "=0.7.13"
typenum = "=1.18.0"
-uniffi = "=0.28.3"
+uniffi = "=0.28.3"
widestring = "=1.2.0"
windows = "=0.61.1"
windows-core = "=0.61.0"
@@ -64,3 +71,8 @@ windows-registry = "=0.5.3"
zbus = "=5.5.0"
zbus_polkit = "=5.0.0"
zeroizing-alloc = "=0.1.0"
+
+[workspace.lints.clippy]
+unused_async = "deny"
+unwrap_used = "deny"
+string_slice = "warn"
diff --git a/apps/desktop/desktop_native/autotype/Cargo.toml b/apps/desktop/desktop_native/autotype/Cargo.toml
index c8267c3e2ea..de026a3ddd8 100644
--- a/apps/desktop/desktop_native/autotype/Cargo.toml
+++ b/apps/desktop/desktop_native/autotype/Cargo.toml
@@ -6,5 +6,11 @@ edition.workspace = true
publish.workspace = true
[target.'cfg(windows)'.dependencies]
-windows = { workspace = true, features = ["Win32_UI_Input_KeyboardAndMouse", "Win32_UI_WindowsAndMessaging"] }
+windows = { workspace = true, features = [
+ "Win32_UI_Input_KeyboardAndMouse",
+ "Win32_UI_WindowsAndMessaging",
+] }
windows-core = { workspace = true }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/clippy.toml b/apps/desktop/desktop_native/clippy.toml
new file mode 100644
index 00000000000..a29e019ac02
--- /dev/null
+++ b/apps/desktop/desktop_native/clippy.toml
@@ -0,0 +1,2 @@
+allow-unwrap-in-tests=true
+allow-expect-in-tests=true
diff --git a/apps/desktop/desktop_native/core/Cargo.toml b/apps/desktop/desktop_native/core/Cargo.toml
index 50c07b56600..97189e1d7cd 100644
--- a/apps/desktop/desktop_native/core/Cargo.toml
+++ b/apps/desktop/desktop_native/core/Cargo.toml
@@ -7,32 +7,35 @@ publish = { workspace = true }
[features]
default = [
- "dep:widestring",
- "dep:windows",
- "dep:core-foundation",
- "dep:security-framework",
- "dep:security-framework-sys",
- "dep:zbus",
- "dep:zbus_polkit",
+ "dep:widestring",
+ "dep:windows",
+ "dep:core-foundation",
+ "dep:security-framework",
+ "dep:security-framework-sys",
+ "dep:zbus",
+ "dep:zbus_polkit"
]
manual_test = []
[dependencies]
aes = { workspace = true }
anyhow = { workspace = true }
-arboard = { workspace = true, features = [
- "wayland-data-control",
-] }
+arboard = { workspace = true, features = ["wayland-data-control"] }
base64 = { workspace = true }
+bitwarden-russh = { workspace = true }
byteorder = { workspace = true }
+bytes = { workspace = true }
cbc = { workspace = true, features = ["alloc"] }
-homedir = { workspace = true }
-pin-project = { workspace = true }
dirs = { workspace = true }
+ed25519 = { workspace = true, features = ["pkcs8"] }
futures = { workspace = true }
+homedir = { workspace = true }
interprocess = { workspace = true, features = ["tokio"] }
log = { workspace = true }
+pin-project = { workspace = true }
+pkcs8 = { workspace = true, features = ["alloc", "encryption", "pem"] }
rand = { workspace = true }
+rsa = { workspace = true }
russh-cryptovec = { workspace = true }
scopeguard = { workspace = true }
sha2 = { workspace = true }
@@ -43,17 +46,12 @@ ssh-key = { workspace = true, features = [
"rsa",
"getrandom",
] }
-bitwarden-russh = { workspace = true }
+sysinfo = { workspace = true, features = ["windows"] }
+thiserror = { workspace = true }
tokio = { workspace = true, features = ["io-util", "sync", "macros", "net"] }
tokio-stream = { workspace = true, features = ["net"] }
tokio-util = { workspace = true, features = ["codec"] }
-thiserror = { workspace = true }
typenum = { workspace = true }
-pkcs8 = { workspace = true, features = ["alloc", "encryption", "pem"] }
-rsa = { workspace = true }
-ed25519 = { workspace = true, features = ["pkcs8"] }
-bytes = { workspace = true }
-sysinfo = { workspace = true, features = ["windows"] }
zeroizing-alloc = { workspace = true }
[target.'cfg(windows)'.dependencies]
@@ -88,3 +86,6 @@ ashpd = { workspace = true }
zbus = { workspace = true, optional = true }
zbus_polkit = { workspace = true, optional = true }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/core/src/autofill/unix.rs b/apps/desktop/desktop_native/core/src/autofill/unix.rs
index a6a961f46b1..937adb43e61 100644
--- a/apps/desktop/desktop_native/core/src/autofill/unix.rs
+++ b/apps/desktop/desktop_native/core/src/autofill/unix.rs
@@ -1,5 +1,6 @@
use anyhow::Result;
+#[allow(clippy::unused_async)]
pub async fn run_command(_value: String) -> Result {
todo!("Unix does not support autofill");
}
diff --git a/apps/desktop/desktop_native/core/src/autofill/windows.rs b/apps/desktop/desktop_native/core/src/autofill/windows.rs
index 6e0543af36c..09dc6867931 100644
--- a/apps/desktop/desktop_native/core/src/autofill/windows.rs
+++ b/apps/desktop/desktop_native/core/src/autofill/windows.rs
@@ -1,5 +1,6 @@
use anyhow::Result;
+#[allow(clippy::unused_async)]
pub async fn run_command(_value: String) -> Result {
todo!("Windows does not support autofill");
}
diff --git a/apps/desktop/desktop_native/core/src/autostart/unimplemented.rs b/apps/desktop/desktop_native/core/src/autostart/unimplemented.rs
index 14f567bdc65..56af7484fd4 100644
--- a/apps/desktop/desktop_native/core/src/autostart/unimplemented.rs
+++ b/apps/desktop/desktop_native/core/src/autostart/unimplemented.rs
@@ -1,5 +1,6 @@
use anyhow::Result;
+#[allow(clippy::unused_async)]
pub async fn set_autostart(_autostart: bool, _params: Vec) -> Result<()> {
unimplemented!();
}
diff --git a/apps/desktop/desktop_native/core/src/biometric/windows.rs b/apps/desktop/desktop_native/core/src/biometric/windows.rs
index 99bec132edb..8013c21bf9a 100644
--- a/apps/desktop/desktop_native/core/src/biometric/windows.rs
+++ b/apps/desktop/desktop_native/core/src/biometric/windows.rs
@@ -27,6 +27,8 @@ use super::{decrypt, encrypt, windows_focus::set_focus};
pub struct Biometric {}
impl super::BiometricTrait for Biometric {
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
async fn prompt(hwnd: Vec, message: String) -> Result {
let h = isize::from_le_bytes(hwnd.clone().try_into().unwrap());
diff --git a/apps/desktop/desktop_native/core/src/ipc/mod.rs b/apps/desktop/desktop_native/core/src/ipc/mod.rs
index 531aeaa0a0b..41215b3a0ee 100644
--- a/apps/desktop/desktop_native/core/src/ipc/mod.rs
+++ b/apps/desktop/desktop_native/core/src/ipc/mod.rs
@@ -30,6 +30,8 @@ fn internal_ipc_codec(inner: T) -> Framed std::path::PathBuf {
#[cfg(target_os = "windows")]
{
diff --git a/apps/desktop/desktop_native/core/src/password/macos.rs b/apps/desktop/desktop_native/core/src/password/macos.rs
index 3075dce3b88..4f3a16ba4be 100644
--- a/apps/desktop/desktop_native/core/src/password/macos.rs
+++ b/apps/desktop/desktop_native/core/src/password/macos.rs
@@ -4,22 +4,26 @@ use security_framework::passwords::{
delete_generic_password, get_generic_password, set_generic_password,
};
+#[allow(clippy::unused_async)]
pub async fn get_password(service: &str, account: &str) -> Result {
let password = get_generic_password(service, account).map_err(convert_error)?;
let result = String::from_utf8(password)?;
Ok(result)
}
+#[allow(clippy::unused_async)]
pub async fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
set_generic_password(service, account, password.as_bytes())?;
Ok(())
}
+#[allow(clippy::unused_async)]
pub async fn delete_password(service: &str, account: &str) -> Result<()> {
delete_generic_password(service, account).map_err(convert_error)?;
Ok(())
}
+#[allow(clippy::unused_async)]
pub async fn is_available() -> Result {
Ok(true)
}
diff --git a/apps/desktop/desktop_native/core/src/password/windows.rs b/apps/desktop/desktop_native/core/src/password/windows.rs
index ee2361a832f..ad09019f014 100644
--- a/apps/desktop/desktop_native/core/src/password/windows.rs
+++ b/apps/desktop/desktop_native/core/src/password/windows.rs
@@ -14,6 +14,7 @@ use windows::{
const CRED_FLAGS_NONE: u32 = 0;
+#[allow(clippy::unused_async)]
pub async fn get_password(service: &str, account: &str) -> Result {
let target_name = U16CString::from_str(target_name(service, account))?;
@@ -46,6 +47,7 @@ pub async fn get_password(service: &str, account: &str) -> Result {
Ok(password)
}
+#[allow(clippy::unused_async)]
pub async fn set_password(service: &str, account: &str, password: &str) -> Result<()> {
let mut target_name = U16CString::from_str(target_name(service, account))?;
let mut user_name = U16CString::from_str(account)?;
@@ -77,6 +79,7 @@ pub async fn set_password(service: &str, account: &str, password: &str) -> Resul
Ok(())
}
+#[allow(clippy::unused_async)]
pub async fn delete_password(service: &str, account: &str) -> Result<()> {
let target_name = U16CString::from_str(target_name(service, account))?;
@@ -87,6 +90,7 @@ pub async fn delete_password(service: &str, account: &str) -> Result<()> {
Ok(())
}
+#[allow(clippy::unused_async)]
pub async fn is_available() -> Result {
Ok(true)
}
diff --git a/apps/desktop/desktop_native/core/src/powermonitor/linux.rs b/apps/desktop/desktop_native/core/src/powermonitor/linux.rs
index aa93037e95f..454487bce80 100644
--- a/apps/desktop/desktop_native/core/src/powermonitor/linux.rs
+++ b/apps/desktop/desktop_native/core/src/powermonitor/linux.rs
@@ -19,6 +19,8 @@ const SCREEN_LOCK_MONITORS: [ScreenLock; 2] = [
},
];
+// FIXME: Remove unwraps! They panic and terminate the whole application.
+#[allow(clippy::unwrap_used)]
pub async fn on_lock(tx: tokio::sync::mpsc::Sender<()>) -> Result<(), Box> {
let connection = Connection::session().await?;
@@ -41,6 +43,8 @@ pub async fn on_lock(tx: tokio::sync::mpsc::Sender<()>) -> Result<(), Box bool {
let connection = Connection::session().await.unwrap();
for monitor in SCREEN_LOCK_MONITORS {
diff --git a/apps/desktop/desktop_native/core/src/powermonitor/unimplemented.rs b/apps/desktop/desktop_native/core/src/powermonitor/unimplemented.rs
index efe36bcb3c7..8fa3707ab2f 100644
--- a/apps/desktop/desktop_native/core/src/powermonitor/unimplemented.rs
+++ b/apps/desktop/desktop_native/core/src/powermonitor/unimplemented.rs
@@ -1,7 +1,9 @@
+#[allow(clippy::unused_async)]
pub async fn on_lock(_: tokio::sync::mpsc::Sender<()>) -> Result<(), Box> {
unimplemented!();
}
+#[allow(clippy::unused_async)]
pub async fn is_lock_monitor_available() -> bool {
false
}
diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs b/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs
index 33076071a1b..d038ba2277f 100644
--- a/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs
+++ b/apps/desktop/desktop_native/core/src/ssh_agent/mod.rs
@@ -90,7 +90,7 @@ impl ssh_agent::Agent
return false;
}
- let request_id = self.get_request_id().await;
+ let request_id = self.get_request_id();
let request_data = match request_parser::parse_request(data) {
Ok(data) => data,
Err(e) => {
@@ -138,7 +138,7 @@ impl ssh_agent::Agent
return true;
}
- let request_id = self.get_request_id().await;
+ let request_id = self.get_request_id();
let mut rx_channel = self.get_ui_response_rx.lock().await.resubscribe();
let message = SshAgentUIRequest {
@@ -263,7 +263,7 @@ impl BitwardenDesktopAgent {
Ok(())
}
- async fn get_request_id(&self) -> u32 {
+ fn get_request_id(&self) -> u32 {
if !self.is_running() {
println!("[BitwardenDesktopAgent] Agent is not running, but tried to get request id");
return 0;
diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/named_pipe_listener_stream.rs b/apps/desktop/desktop_native/core/src/ssh_agent/named_pipe_listener_stream.rs
index 094144effe1..fccd7ca5ed6 100644
--- a/apps/desktop/desktop_native/core/src/ssh_agent/named_pipe_listener_stream.rs
+++ b/apps/desktop/desktop_native/core/src/ssh_agent/named_pipe_listener_stream.rs
@@ -26,6 +26,8 @@ pub struct NamedPipeServerStream {
}
impl NamedPipeServerStream {
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
pub fn new(cancellation_token: CancellationToken, is_running: Arc) -> Self {
let (tx, rx) = tokio::sync::mpsc::channel(16);
tokio::spawn(async move {
diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/unix.rs b/apps/desktop/desktop_native/core/src/ssh_agent/unix.rs
index 05d07cfee46..53142d4c476 100644
--- a/apps/desktop/desktop_native/core/src/ssh_agent/unix.rs
+++ b/apps/desktop/desktop_native/core/src/ssh_agent/unix.rs
@@ -18,7 +18,7 @@ use crate::ssh_agent::peercred_unix_listener_stream::PeercredUnixListenerStream;
use super::{BitwardenDesktopAgent, BitwardenSshKey, SshAgentUIRequest};
impl BitwardenDesktopAgent {
- pub async fn start_server(
+ pub fn start_server(
auth_request_tx: tokio::sync::mpsc::Sender,
auth_response_rx: Arc>>,
) -> Result {
diff --git a/apps/desktop/desktop_native/core/src/ssh_agent/windows.rs b/apps/desktop/desktop_native/core/src/ssh_agent/windows.rs
index aeb20aefd66..75c47165960 100644
--- a/apps/desktop/desktop_native/core/src/ssh_agent/windows.rs
+++ b/apps/desktop/desktop_native/core/src/ssh_agent/windows.rs
@@ -14,7 +14,7 @@ use tokio_util::sync::CancellationToken;
use super::{BitwardenDesktopAgent, BitwardenSshKey, SshAgentUIRequest};
impl BitwardenDesktopAgent {
- pub async fn start_server(
+ pub fn start_server(
auth_request_tx: tokio::sync::mpsc::Sender,
auth_response_rx: Arc>>,
) -> Result {
diff --git a/apps/desktop/desktop_native/macos_provider/Cargo.toml b/apps/desktop/desktop_native/macos_provider/Cargo.toml
index cf7338f23cf..a48aadb5b99 100644
--- a/apps/desktop/desktop_native/macos_provider/Cargo.toml
+++ b/apps/desktop/desktop_native/macos_provider/Cargo.toml
@@ -28,3 +28,6 @@ oslog = { workspace = true }
[build-dependencies]
uniffi = { workspace = true, features = ["build"] }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/macos_provider/src/lib.rs b/apps/desktop/desktop_native/macos_provider/src/lib.rs
index 32d2514f1dd..9872468643b 100644
--- a/apps/desktop/desktop_native/macos_provider/src/lib.rs
+++ b/apps/desktop/desktop_native/macos_provider/src/lib.rs
@@ -61,6 +61,8 @@ pub struct MacOSProviderClient {
#[uniffi::export]
impl MacOSProviderClient {
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
#[uniffi::constructor]
pub fn connect() -> Self {
let _ = oslog::OsLogger::new("com.bitwarden.desktop.autofill-extension")
@@ -179,6 +181,8 @@ enum SerializedMessage {
}
impl MacOSProviderClient {
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
fn add_callback(&self, callback: Box) -> u32 {
let sequence_number = self
.response_callbacks_counter
@@ -192,6 +196,8 @@ impl MacOSProviderClient {
sequence_number
}
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
fn send_message(
&self,
message: impl Serialize + DeserializeOwned,
diff --git a/apps/desktop/desktop_native/napi/Cargo.toml b/apps/desktop/desktop_native/napi/Cargo.toml
index 20b56395801..8f2a5cb78a9 100644
--- a/apps/desktop/desktop_native/napi/Cargo.toml
+++ b/apps/desktop/desktop_native/napi/Cargo.toml
@@ -14,19 +14,19 @@ default = []
manual_test = []
[dependencies]
+anyhow = { workspace = true }
autotype = { path = "../autotype" }
base64 = { workspace = true }
-hex = { workspace = true }
-anyhow = { workspace = true }
desktop_core = { path = "../core" }
+hex = { workspace = true }
log = { workspace = true }
napi = { workspace = true, features = ["async"] }
napi-derive = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
tokio = { workspace = true }
-tokio-util = { workspace = true }
tokio-stream = { workspace = true }
+tokio-util = { workspace = true }
[target.'cfg(windows)'.dependencies]
windows-registry = { workspace = true }
@@ -34,3 +34,6 @@ windows_plugin_authenticator = { path = "../windows_plugin_authenticator" }
[build-dependencies]
napi-build = { workspace = true }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/napi/src/lib.rs b/apps/desktop/desktop_native/napi/src/lib.rs
index d0a57b5632a..24d41bc3831 100644
--- a/apps/desktop/desktop_native/napi/src/lib.rs
+++ b/apps/desktop/desktop_native/napi/src/lib.rs
@@ -110,6 +110,7 @@ pub mod biometrics {
/// If the iv is provided, it will be used as the challenge. Otherwise a random challenge will be generated.
///
/// `format!("|")`
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn derive_key_material(iv: Option) -> napi::Result {
Biometric::derive_key_material(iv.as_deref())
@@ -150,11 +151,13 @@ pub mod biometrics {
#[napi]
pub mod clipboards {
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn read() -> napi::Result {
desktop_core::clipboard::read().map_err(|e| napi::Error::from_reason(e.to_string()))
}
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn write(text: String, password: bool) -> napi::Result<()> {
desktop_core::clipboard::write(&text, password)
@@ -201,6 +204,7 @@ pub mod sshagent {
pub namespace: Option,
}
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn serve(
callback: ThreadsafeFunction,
@@ -262,9 +266,7 @@ pub mod sshagent {
match desktop_core::ssh_agent::BitwardenDesktopAgent::start_server(
auth_request_tx,
Arc::new(Mutex::new(auth_response_rx)),
- )
- .await
- {
+ ) {
Ok(state) => Ok(SshAgentState { state }),
Err(e) => Err(napi::Error::from_reason(e.to_string())),
}
@@ -319,16 +321,21 @@ pub mod sshagent {
#[napi]
pub mod processisolations {
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn disable_coredumps() -> napi::Result<()> {
desktop_core::process_isolation::disable_coredumps()
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
+
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn is_core_dumping_disabled() -> napi::Result {
desktop_core::process_isolation::is_core_dumping_disabled()
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
+
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn disable_memory_access() -> napi::Result<()> {
desktop_core::process_isolation::disable_memory_access()
@@ -367,12 +374,14 @@ pub mod powermonitors {
#[napi]
pub mod windows_registry {
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn create_key(key: String, subkey: String, value: String) -> napi::Result<()> {
crate::registry::create_key(&key, &subkey, &value)
.map_err(|e| napi::Error::from_reason(e.to_string()))
}
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi]
pub async fn delete_key(key: String, subkey: String) -> napi::Result<()> {
crate::registry::delete_key(&key, &subkey)
@@ -432,6 +441,7 @@ pub mod ipc {
///
/// @param name The endpoint name to listen on. This name uniquely identifies the IPC connection and must be the same for both the server and client.
/// @param callback This function will be called whenever a message is received from a client.
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi(factory)]
pub async fn listen(
name: String,
@@ -609,12 +619,15 @@ pub mod autofill {
server: desktop_core::ipc::server::Server,
}
+ // FIXME: Remove unwraps! They panic and terminate the whole application.
+ #[allow(clippy::unwrap_used)]
#[napi]
impl IpcServer {
/// Create and start the IPC server without blocking.
///
/// @param name The endpoint name to listen on. This name uniquely identifies the IPC connection and must be the same for both the server and client.
/// @param callback This function will be called whenever a message is received from a client.
+ #[allow(clippy::unused_async)] // FIXME: Remove unused async!
#[napi(factory)]
pub async fn listen(
name: String,
diff --git a/apps/desktop/desktop_native/objc/Cargo.toml b/apps/desktop/desktop_native/objc/Cargo.toml
index 07961f8e13f..339cce2e024 100644
--- a/apps/desktop/desktop_native/objc/Cargo.toml
+++ b/apps/desktop/desktop_native/objc/Cargo.toml
@@ -19,3 +19,6 @@ core-foundation = "=0.10.0"
[build-dependencies]
cc = "=1.2.4"
glob = "=0.3.2"
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/proxy/Cargo.toml b/apps/desktop/desktop_native/proxy/Cargo.toml
index a9a1a5aca28..cb1f39d9b42 100644
--- a/apps/desktop/desktop_native/proxy/Cargo.toml
+++ b/apps/desktop/desktop_native/proxy/Cargo.toml
@@ -16,3 +16,6 @@ tokio-util = { workspace = true, features = ["codec"] }
[target.'cfg(target_os = "macos")'.dependencies]
embed_plist = { workspace = true }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/proxy/src/main.rs b/apps/desktop/desktop_native/proxy/src/main.rs
index 7b3337cce71..792b1bf272d 100644
--- a/apps/desktop/desktop_native/proxy/src/main.rs
+++ b/apps/desktop/desktop_native/proxy/src/main.rs
@@ -50,6 +50,8 @@ fn init_logging(log_path: &Path, console_level: LevelFilter, file_level: LevelFi
///
/// Browser extension <-[native messaging]-> proxy <-[ipc]-> desktop
///
+// FIXME: Remove unwraps! They panic and terminate the whole application.
+#[allow(clippy::unwrap_used)]
#[tokio::main(flavor = "current_thread")]
async fn main() {
#[cfg(target_os = "windows")]
diff --git a/apps/desktop/desktop_native/windows_plugin_authenticator/Cargo.toml b/apps/desktop/desktop_native/windows_plugin_authenticator/Cargo.toml
index 18abb86d057..17c834325a4 100644
--- a/apps/desktop/desktop_native/windows_plugin_authenticator/Cargo.toml
+++ b/apps/desktop/desktop_native/windows_plugin_authenticator/Cargo.toml
@@ -6,6 +6,14 @@ license = { workspace = true }
publish = { workspace = true }
[target.'cfg(windows)'.dependencies]
-windows = { workspace = true, features = ["Win32_Foundation", "Win32_Security", "Win32_System_Com", "Win32_System_LibraryLoader" ] }
+windows = { workspace = true, features = [
+ "Win32_Foundation",
+ "Win32_Security",
+ "Win32_System_Com",
+ "Win32_System_LibraryLoader",
+] }
windows-core = { workspace = true }
hex = { workspace = true }
+
+[lints]
+workspace = true
diff --git a/apps/desktop/desktop_native/windows_plugin_authenticator/src/lib.rs b/apps/desktop/desktop_native/windows_plugin_authenticator/src/lib.rs
index cdea50aee99..2e4f453d8f0 100644
--- a/apps/desktop/desktop_native/windows_plugin_authenticator/src/lib.rs
+++ b/apps/desktop/desktop_native/windows_plugin_authenticator/src/lib.rs
@@ -86,6 +86,8 @@ fn register_com_library() -> std::result::Result<(), String> {
}
/// Adds Bitwarden as a plugin authenticator.
+// FIXME: Remove unwraps! They panic and terminate the whole application.
+#[allow(clippy::unwrap_used)]
fn add_authenticator() -> std::result::Result<(), String> {
let authenticator_name: HSTRING = AUTHENTICATOR_NAME.into();
let authenticator_name_ptr = PCWSTR(authenticator_name.as_ptr()).as_ptr();
From 381adf93054fcffdcae627f395981d505a785a53 Mon Sep 17 00:00:00 2001
From: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Date: Fri, 29 Aug 2025 22:49:28 +1000
Subject: [PATCH 078/167] Move max-old-space-size to .npmrc (#16192)
* Move max-old-space-size to .npmrc
* Remove redundant environment variables
* Add comment
---
.npmrc | 3 +++
apps/cli/package.json | 4 ++--
apps/desktop/package.json | 2 +-
apps/web/package.json | 8 ++++----
package.json | 6 +++---
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/.npmrc b/.npmrc
index cffe8cdef13..421cf18217d 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1 +1,4 @@
save-exact=true
+# Increase available heap size to avoid running out of memory when compiling.
+# This applies to all npm scripts in this repository.
+node-options=--max-old-space-size=8192
\ No newline at end of file
diff --git a/apps/cli/package.json b/apps/cli/package.json
index 8c5b367cb61..0a6707b4c64 100644
--- a/apps/cli/package.json
+++ b/apps/cli/package.json
@@ -18,14 +18,14 @@
"license": "SEE LICENSE IN LICENSE.txt",
"scripts": {
"clean": "rimraf dist",
- "build:oss": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
+ "build:oss": "webpack",
"build:oss:debug": "npm run build:oss && node --inspect ./build/bw.js",
"build:oss:watch": "webpack --watch",
"build:oss:prod": "cross-env NODE_ENV=production webpack",
"build:oss:prod:watch": "cross-env NODE_ENV=production webpack --watch",
"debug": "node --inspect ./build/bw.js",
"publish:npm": "npm run build:oss:prod && npm publish --access public",
- "build:bit": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-cli/webpack.config.js",
+ "build:bit": "webpack -c ../../bitwarden_license/bit-cli/webpack.config.js",
"build:bit:debug": "npm run build:bit && node --inspect ./build/bw.js",
"build:bit:watch": "webpack --watch -c ../../bitwarden_license/bit-cli/webpack.config.js",
"build:bit:prod": "cross-env NODE_ENV=production npm run build:bit",
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index df79a106393..eee422d88a3 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -19,7 +19,7 @@
"postinstall": "electron-rebuild",
"start": "cross-env ELECTRON_IS_DEV=0 ELECTRON_NO_UPDATER=1 electron ./build",
"build-native": "cd desktop_native && node build.js",
- "build": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" concurrently -n Main,Rend,Prel -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\" \"npm run build:preload\"",
+ "build": "concurrently -n Main,Rend,Prel -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\" \"npm run build:preload\"",
"build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"",
"build:preload": "cross-env NODE_ENV=production webpack --config webpack.preload.js",
"build:preload:watch": "cross-env NODE_ENV=production webpack --config webpack.preload.js --watch",
diff --git a/apps/web/package.json b/apps/web/package.json
index 115a508aff9..2aca101130d 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -2,10 +2,10 @@
"name": "@bitwarden/web-vault",
"version": "2025.8.1",
"scripts": {
- "build:oss": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack",
- "build:bit": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
- "build:oss:watch": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack serve",
- "build:bit:watch": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" webpack serve -c ../../bitwarden_license/bit-web/webpack.config.js",
+ "build:oss": "webpack",
+ "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
+ "build:oss:watch": "webpack serve",
+ "build:bit:watch": "webpack serve -c ../../bitwarden_license/bit-web/webpack.config.js",
"build:bit:dev": "cross-env ENV=development npm run build:bit",
"build:bit:dev:analyze": "cross-env LOGGING=false webpack -c ../../bitwarden_license/bit-web/webpack.config.js --profile --json > stats.json && npx webpack-bundle-analyzer stats.json build/",
"build:bit:dev:watch": "cross-env ENV=development NODE_OPTIONS=\"--max-old-space-size=8192\" npm run build:bit:watch",
diff --git a/package.json b/package.json
index bf6be11a616..d670ca2d002 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,9 @@
"test:locales": "tsc --project ./scripts/tsconfig.json && node ./scripts/dist/test-locales.js",
"lint:dep-ownership": "tsc --project ./scripts/tsconfig.json && node ./scripts/dist/dep-ownership.js",
"docs:json": "compodoc -p ./tsconfig.json -e json -d . --disableRoutesGraph",
- "storybook": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" ng run components:storybook",
- "build-storybook": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" ng run components:build-storybook",
- "build-storybook:ci": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" ng run components:build-storybook --webpack-stats-json",
+ "storybook": "ng run components:storybook",
+ "build-storybook": "ng run components:build-storybook",
+ "build-storybook:ci": "ng run components:build-storybook --webpack-stats-json",
"test-stories": "test-storybook --url http://localhost:6006",
"test-stories:watch": "test-stories --watch"
},
From d57d653551286133610d1df92b57146c60559170 Mon Sep 17 00:00:00 2001
From: Github Actions
Date: Fri, 29 Aug 2025 15:40:20 +0000
Subject: [PATCH 079/167] Bumped client version(s)
---
apps/web/package.json | 2 +-
package-lock.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/web/package.json b/apps/web/package.json
index 2aca101130d..6eb9a576a23 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,6 +1,6 @@
{
"name": "@bitwarden/web-vault",
- "version": "2025.8.1",
+ "version": "2025.8.2",
"scripts": {
"build:oss": "webpack",
"build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js",
diff --git a/package-lock.json b/package-lock.json
index aa35f522eeb..9e65708076b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -291,7 +291,7 @@
},
"apps/web": {
"name": "@bitwarden/web-vault",
- "version": "2025.8.1"
+ "version": "2025.8.2"
},
"libs/admin-console": {
"name": "@bitwarden/admin-console",
From e0da2671b43715a19bd2132fa4c352eb7b063bad Mon Sep 17 00:00:00 2001
From: Oscar Hinton
Date: Fri, 29 Aug 2025 19:09:33 +0200
Subject: [PATCH 080/167] [PM-13374] Update all SDK uuids (#14962)
* fix: broken SDK interface
* Fix all compile errors related to uuids
* Fix browser desktop
* Fix tests
---------
Co-authored-by: Andreas Coroiu