diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 2dc459d6ad2..a954236cdf7 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -52,3 +52,25 @@ libs/common/src/admin-console @bitwarden/team-admin-console-dev
apps/web/src/app/billing @bitwarden/team-billing-dev
libs/angular/src/billing @bitwarden/team-billing-dev
libs/common/src/billing @bitwarden/team-billing-dev
+
+## Platform team files ##
+apps/browser/src/platform @bitwarden/team-platform-dev
+apps/cli/src/platform @bitwarden/team-platform-dev
+apps/desktop/src/platform @bitwarden/team-platform-dev
+apps/web/src/app/platform @bitwarden/team-platform-dev
+libs/angular/src/platform @bitwarden/team-platform-dev
+libs/common/src/platform @bitwarden/team-platform-dev
+# Node-specifc platform files
+libs/node @bitwarden/team-platform-dev
+# Web utils used across app and connectors
+apps/web/src/utils/ @bitwarden/team-platform-dev
+# Web core and shared files
+apps/web/src/app/core @bitwarden/team-platform-dev
+apps/web/src/app/shared @bitwarden/team-platform-dev
+apps/web/src/translation-constants.ts @bitwarden/team-platform-dev
+
+## Component Library ##
+libs/components @bitwarden/team-platform-dev
+
+## Desktop native module ##
+apps/desktop/desktop_native @bitwarden/team-platform-dev
diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt
index 91b604746ed..a17ec6b8113 100644
--- a/.github/whitelist-capital-letters.txt
+++ b/.github/whitelist-capital-letters.txt
@@ -5,6 +5,7 @@
./apps/browser/src/services/vaultTimeout
./apps/browser/store/windows/Assets
./libs/common/src/abstractions/fileDownload
+./libs/common/src/abstractions/userVerification
./libs/common/src/abstractions/vaultTimeout
./libs/common/src/services/vaultTimeout
./bitwarden_license/README.md
@@ -22,8 +23,6 @@
./libs/angular/src/validators/inputsFieldMatch.validator.ts
./libs/angular/src/validators/notAllowedValueAsync.validator.ts
./libs/angular/src/services/theming/themeBuilder.ts
-./libs/angular/src/interfaces/selectOptions.ts
-./libs/components/src/stories/Introduction.stories.mdx
./libs/common/src/misc/nodeUtils.ts
./libs/common/src/misc/linkedFieldOption.decorator.ts
./libs/common/src/misc/serviceUtils.ts
@@ -37,24 +36,14 @@
./libs/common/src/abstractions/fileDownload/fileDownload.service.ts
./libs/common/src/abstractions/fileDownload/fileDownloadRequest.ts
./libs/common/src/abstractions/formValidationErrors.service.ts
+./libs/common/src/abstractions/userVerification/userVerification.service.abstraction.ts
+./libs/common/src/abstractions/userVerification/userVerification-api.service.abstraction.ts
./libs/common/src/abstractions/vaultTimeout/vaultTimeoutSettings.service.ts
./libs/common/src/abstractions/vaultTimeout/vaultTimeout.service.ts
-./libs/common/src/abstractions/cryptoFunction.service.ts
./libs/common/src/abstractions/anonymousHub.service.ts
-./libs/common/src/abstractions/appId.service.ts
-./libs/common/src/services/azureFileUpload.service.ts
-./libs/common/src/services/stateMigration.service.ts
-./libs/common/src/services/consoleLog.service.ts
-./libs/common/src/services/formValidationErrors.service.ts
./libs/common/src/services/vaultTimeout/vaultTimeoutSettings.service.ts
./libs/common/src/services/vaultTimeout/vaultTimeout.service.ts
./libs/common/src/services/anonymousHub.service.ts
-./libs/common/src/services/appId.service.ts
-./libs/common/src/services/noopMessaging.service.ts
-./libs/common/src/services/memoryStorage.service.ts
-./libs/common/src/services/bitwardenFileUpload.service.ts
-./libs/common/src/services/webCryptoFunction.service.ts
-./libs/common/src/interfaces/IEncrypted.ts
./README.md
./LICENSE_BITWARDEN.txt
./CONTRIBUTING.md
@@ -91,7 +80,6 @@
./apps/browser/src/models/browserGroupingsComponentState.ts
./apps/browser/src/models/biometricErrors.ts
./apps/browser/src/browser/safariApp.ts
-./apps/browser/src/browser/browserApi.ts
./apps/browser/src/safari/desktop/ViewController.swift
./apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/Contents.json
./apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -102,21 +90,5 @@
./apps/browser/src/safari/safari/SafariWebExtensionHandler.swift
./apps/browser/src/safari/safari/Info.plist
./apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
-./apps/browser/src/listeners/onCommandListener.ts
-./apps/browser/src/listeners/onInstallListener.ts
-./apps/browser/src/services/browserFileDownloadService.ts
-./apps/browser/src/services/localBackedSessionStorage.service.spec.ts
-./apps/browser/src/services/browserMessagingPrivateModeBackground.service.ts
-./apps/browser/src/services/browserPlatformUtils.service.spec.ts
-./apps/browser/src/services/browserMemoryStorage.service.ts
./apps/browser/src/services/vaultTimeout/vaultTimeout.service.ts
-./apps/browser/src/services/browserCrypto.service.ts
-./apps/browser/src/services/browserPlatformUtils.service.ts
-./apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts
-./apps/browser/src/services/browserLocalStorage.service.ts
-./apps/browser/src/services/localBackedSessionStorage.service.ts
-./apps/browser/src/services/browserMessagingPrivateModePopup.service.ts
-./apps/browser/src/services/browserMessaging.service.ts
-./apps/browser/src/services/keyGeneration.service.ts
-./apps/browser/src/services/abstractChromeStorageApi.service.ts
./SECURITY.md
diff --git a/.github/workflows/brew-bump-cli.yml b/.github/workflows/brew-bump-cli.yml
index c5f7b126fe2..cae9db880ec 100644
--- a/.github/workflows/brew-bump-cli.yml
+++ b/.github/workflows/brew-bump-cli.yml
@@ -23,7 +23,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "brew-bump-workflow-pat"
diff --git a/.github/workflows/brew-bump-desktop.yml b/.github/workflows/brew-bump-desktop.yml
index 876180931c6..43b24f4553c 100644
--- a/.github/workflows/brew-bump-desktop.yml
+++ b/.github/workflows/brew-bump-desktop.yml
@@ -23,7 +23,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "brew-bump-workflow-pat"
diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml
index a48d8b7880b..89fa40a53fe 100644
--- a/.github/workflows/build-browser.yml
+++ b/.github/workflows/build-browser.yml
@@ -354,7 +354,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "crowdin-api-token"
@@ -416,7 +416,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
if: failure()
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "devops-alerts-slack-webhook-url"
diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml
index 4e9ce9e2bb6..bc33a4ccd0a 100644
--- a/.github/workflows/build-cli.yml
+++ b/.github/workflows/build-cli.yml
@@ -404,7 +404,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
if: failure()
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "devops-alerts-slack-webhook-url"
diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml
index b1989252dc8..b5da80f7f78 100644
--- a/.github/workflows/build-desktop.yml
+++ b/.github/workflows/build-desktop.yml
@@ -277,7 +277,7 @@ jobs:
node-gyp install $(node -v)
- name: Install AST
- uses: bitwarden/gh-actions/install-ast@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/install-ast@72594be690a4e7bfa87b1402b2aedc75acdbff12
- name: Set up environmentF
run: choco install checksum --no-progress
@@ -302,7 +302,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "code-signing-vault-url,
@@ -1190,7 +1190,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "crowdin-api-token"
@@ -1269,7 +1269,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
if: failure()
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "devops-alerts-slack-webhook-url"
diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml
index 325d3f54df4..ee8d689c219 100644
--- a/.github/workflows/build-web.yml
+++ b/.github/workflows/build-web.yml
@@ -84,6 +84,8 @@ jobs:
npm_command: "build:bit:poc"
- name: "ee"
npm_command: "build:bit:ee"
+ - name: "eudevtest"
+ npm_command: "build:bit:eudevtest"
steps:
- name: Checkout repo
@@ -235,7 +237,7 @@ jobs:
- name: Retrieve github PAT secrets
id: retrieve-secret-pat
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "github-pat-bitwarden-devops-bot-repo-scope"
@@ -243,7 +245,7 @@ jobs:
- name: Setup DCT
if: ${{ env.is_publish_branch == 'true' }}
id: setup-dct
- uses: bitwarden/gh-actions/setup-docker-trust@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/setup-docker-trust@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
azure-creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
azure-keyvault-name: "bitwarden-ci"
@@ -291,7 +293,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "crowdin-api-token"
@@ -352,7 +354,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
if: failure()
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "devops-alerts-slack-webhook-url"
diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml
index 453a19423ab..d2f1f45c25d 100644
--- a/.github/workflows/chromatic.yml
+++ b/.github/workflows/chromatic.yml
@@ -31,12 +31,17 @@ jobs:
- name: Install Node dependencies
run: npm ci
+
+ # Manual build the storybook to resolve a chromatic/storybook bug related to TurboSnap
+ - name: Build Storybook
+ run: npm run build-storybook:ci
- name: Publish to Chromatic
- uses: chromaui/action@a89b674adf766dbde41ad9ea2b2b60b91188a0f0
+ uses: chromaui/action@a2ed440e22f7d4e2c6b0710f7903aa2df70a1ecd
with:
token: ${{ secrets.GITHUB_TOKEN }}
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
+ storybookBuildDir: ./storybook-static
exitOnceUploaded: true
onlyChanged: true
externals: "[\"libs/components/**/*.scss\", \"libs/components/tailwind.config*.js\"]"
diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml
index 35c31dc72ff..f058c712031 100644
--- a/.github/workflows/crowdin-pull.yml
+++ b/.github/workflows/crowdin-pull.yml
@@ -32,13 +32,13 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
- name: Download translations
- uses: bitwarden/gh-actions/crowdin@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/crowdin@72594be690a4e7bfa87b1402b2aedc75acdbff12
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
diff --git a/.github/workflows/deploy-non-prod-web.yml b/.github/workflows/deploy-non-prod-web.yml
index 45f74ff52be..e0b6977a781 100644
--- a/.github/workflows/deploy-non-prod-web.yml
+++ b/.github/workflows/deploy-non-prod-web.yml
@@ -13,6 +13,7 @@ on:
options:
- QA
- POC2
+ - eudevtest
jobs:
@@ -63,7 +64,7 @@ jobs:
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: Download latest cloud asset
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: apps/web
diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml
index 4a65b0d412c..c9f9b20c62d 100644
--- a/.github/workflows/release-browser.yml
+++ b/.github/workflows/release-browser.yml
@@ -41,7 +41,7 @@ jobs:
- name: Check Release Version
id: version
- uses: bitwarden/gh-actions/release-version-check@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/release-version-check@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
release-type: ${{ github.event.inputs.release_type }}
project-type: ts
@@ -103,7 +103,7 @@ jobs:
- name: Download latest Release build artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-browser.yml
workflow_conclusion: success
@@ -116,7 +116,7 @@ jobs:
- name: Dry Run - Download latest master build artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-browser.yml
workflow_conclusion: success
diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml
index 5901d81740b..406b345c2fe 100644
--- a/.github/workflows/release-cli.yml
+++ b/.github/workflows/release-cli.yml
@@ -57,7 +57,7 @@ jobs:
- name: Check Release Version
id: version
- uses: bitwarden/gh-actions/release-version-check@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/release-version-check@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
release-type: ${{ github.event.inputs.release_type }}
project-type: ts
@@ -78,7 +78,7 @@ jobs:
- name: Download all Release artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli
@@ -87,7 +87,7 @@ jobs:
- name: Dry Run - Download all artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli
@@ -150,7 +150,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "snapcraft-store-token"
@@ -162,7 +162,7 @@ jobs:
- name: Download artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli
@@ -172,7 +172,7 @@ jobs:
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli
@@ -204,7 +204,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "cli-choco-api-key"
@@ -220,7 +220,7 @@ jobs:
- name: Download artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli/dist
@@ -230,7 +230,7 @@ jobs:
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli/dist
@@ -263,14 +263,14 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "npm-api-key"
- name: Download artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli/build
@@ -280,7 +280,7 @@ jobs:
- name: Dry Run - Download artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-cli.yml
path: apps/cli/build
diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml
index 74d02aefc79..f9a5e4d5ad3 100644
--- a/.github/workflows/release-desktop-beta.yml
+++ b/.github/workflows/release-desktop-beta.yml
@@ -47,7 +47,7 @@ jobs:
- name: Check Release Version
id: version
- uses: bitwarden/gh-actions/release-version-check@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/release-version-check@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
release-type: 'Initial Release'
project-type: ts
@@ -231,7 +231,7 @@ jobs:
node-gyp install $(node -v)
- name: Install AST
- uses: bitwarden/gh-actions/install-ast@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/install-ast@72594be690a4e7bfa87b1402b2aedc75acdbff12
- name: Set up environment
run: choco install checksum --no-progress
@@ -249,7 +249,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "code-signing-vault-url,
@@ -932,7 +932,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml
index 8eaf148be98..e8832528143 100644
--- a/.github/workflows/release-desktop.yml
+++ b/.github/workflows/release-desktop.yml
@@ -67,7 +67,7 @@ jobs:
- name: Check Release Version
id: version
- uses: bitwarden/gh-actions/release-version-check@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/release-version-check@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
release-type: ${{ github.event.inputs.release_type }}
project-type: ts
@@ -110,7 +110,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
@@ -123,7 +123,7 @@ jobs:
- name: Download all artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
@@ -132,7 +132,7 @@ jobs:
- name: Dry Run - Download all artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
@@ -185,14 +185,14 @@ jobs:
--endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com
- name: Get checksum files
- uses: bitwarden/gh-actions/get-checksum@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-checksum@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
packages_dir: "apps/desktop/artifacts"
file_path: "apps/desktop/artifacts/sha256-checksums.txt"
- name: Create Release
uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0
- if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' && github.event.inputs.github_release }}
+ if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' && inputs.github_release }}
env:
PKG_VERSION: ${{ steps.version.outputs.version }}
RELEASE_CHANNEL: ${{ steps.release-channel.outputs.channel }}
@@ -263,15 +263,15 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "snapcraft-store-token"
- name: Install Snap
uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # v2.1.1
- with:
- snapcraft_token: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }}
+ env:
+ SNAPCRAFT_STORE_CREDENTIALS: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }}
- name: Setup
run: mkdir dist
@@ -279,7 +279,7 @@ jobs:
- name: Download Snap artifact
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
@@ -289,7 +289,7 @@ jobs:
- name: Dry Run - Download Snap artifact
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
@@ -299,9 +299,11 @@ jobs:
- name: Deploy to Snap Store
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
+ env:
+ SNAPCRAFT_STORE_CREDENTIALS: ${{ steps.retrieve-secrets.outputs.snapcraft-store-token }}
run: |
- snapcraft upload bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable
- snapcraft logout
+ /snap/bin/snapcraft upload bitwarden_${{ env._PKG_VERSION }}_amd64.snap --release stable
+ /snap/bin/snapcraft logout
working-directory: apps/desktop/dist
choco:
@@ -327,7 +329,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "cli-choco-api-key"
@@ -345,7 +347,7 @@ jobs:
- name: Download choco artifact
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
@@ -355,7 +357,7 @@ jobs:
- name: Dry Run - Download choco artifact
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-desktop.yml
workflow_conclusion: success
diff --git a/.github/workflows/release-qa-web.yml b/.github/workflows/release-qa-web.yml
index b50e48753c4..60f38e9d320 100644
--- a/.github/workflows/release-qa-web.yml
+++ b/.github/workflows/release-qa-web.yml
@@ -23,7 +23,7 @@ jobs:
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: Download latest cloud asset
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: apps/web
diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml
index e5aea6b3778..1ba24a8369d 100644
--- a/.github/workflows/release-web.yml
+++ b/.github/workflows/release-web.yml
@@ -38,7 +38,7 @@ jobs:
- name: Check Release Version
id: version
- uses: bitwarden/gh-actions/release-version-check@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/release-version-check@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
release-type: ${{ github.event.inputs.release_type }}
project-type: ts
@@ -70,7 +70,7 @@ jobs:
########## DockerHub ##########
- name: Setup DCT
id: setup-dct
- uses: bitwarden/gh-actions/setup-docker-trust@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/setup-docker-trust@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
azure-creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
azure-keyvault-name: "bitwarden-ci"
@@ -156,7 +156,7 @@ jobs:
- name: Retrieve bot secrets
id: retrieve-bot-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: bitwarden-ci
secrets: "github-pat-bitwarden-devops-bot-repo-scope"
@@ -170,7 +170,7 @@ jobs:
- name: Download latest cloud asset
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: assets
@@ -180,7 +180,7 @@ jobs:
- name: Dry Run - Download latest cloud asset
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: assets
@@ -253,7 +253,7 @@ jobs:
- name: Download latest build artifacts
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: apps/web/artifacts
@@ -264,7 +264,7 @@ jobs:
- name: Dry Run - Download latest build artifacts
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
- uses: bitwarden/gh-actions/download-artifacts@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/download-artifacts@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
workflow: build-web.yml
path: apps/web/artifacts
diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml
index bd27e05cc69..7221028df2e 100644
--- a/.github/workflows/staged-rollout-desktop.yml
+++ b/.github/workflows/staged-rollout-desktop.yml
@@ -26,7 +26,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "aws-electron-access-id,
diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml
index 752e4baba2c..cebe740b9d1 100644
--- a/.github/workflows/version-bump.yml
+++ b/.github/workflows/version-bump.yml
@@ -49,7 +49,7 @@ jobs:
- name: Retrieve secrets
id: retrieve-secrets
- uses: bitwarden/gh-actions/get-keyvault-secrets@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/get-keyvault-secrets@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
keyvault: "bitwarden-ci"
secrets: "github-gpg-private-key, github-gpg-private-key-passphrase"
@@ -86,14 +86,14 @@ jobs:
- name: Bump Browser Version - Manifest
if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }}
- uses: bitwarden/gh-actions/version-bump@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/version-bump@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
version: ${{ github.event.inputs.version_number }}
file_path: "apps/browser/src/manifest.json"
- name: Bump Browser Version - Manifest v3
if: ${{ github.event.inputs.client == 'Browser' || github.event.inputs.client == 'All' }}
- uses: bitwarden/gh-actions/version-bump@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/version-bump@72594be690a4e7bfa87b1402b2aedc75acdbff12
with:
version: ${{ github.event.inputs.version_number }}
file_path: "apps/browser/src/manifest.v3.json"
diff --git a/.github/workflows/workflow-linter.yml b/.github/workflows/workflow-linter.yml
index 39f2436b722..20525879d5a 100644
--- a/.github/workflows/workflow-linter.yml
+++ b/.github/workflows/workflow-linter.yml
@@ -8,4 +8,4 @@ on:
jobs:
call-workflow:
- uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@c86ced0dc8c9daeecf057a6333e6f318db9c5a2b
+ uses: bitwarden/gh-actions/.github/workflows/workflow-linter.yml@72594be690a4e7bfa87b1402b2aedc75acdbff12
diff --git a/.storybook/main.js b/.storybook/main.js
deleted file mode 100644
index 3db3964022e..00000000000
--- a/.storybook/main.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
-
-module.exports = {
- stories: [
- "../libs/components/src/**/*.stories.mdx",
- "../libs/components/src/**/*.stories.@(js|jsx|ts|tsx)",
- "../apps/web/src/**/*.stories.mdx",
- "../apps/web/src/**/*.stories.@(js|jsx|ts|tsx)",
- "../bitwarden_license/bit-web/src/**/*.stories.mdx",
- "../bitwarden_license/bit-web/src/**/*.stories.@(js|jsx|ts|tsx)",
- ],
- addons: [
- "@storybook/addon-links",
- "@storybook/addon-essentials",
- "@storybook/addon-a11y",
- "storybook-addon-designs",
- ],
- framework: "@storybook/angular",
- core: {
- builder: "webpack5",
- disableTelemetry: true,
- },
- env: (config) => ({
- ...config,
- FLAGS: JSON.stringify({
- secretsManager: true,
- }),
- }),
- webpackFinal: async (config, { configType }) => {
- config.resolve.plugins = [new TsconfigPathsPlugin()];
- return config;
- },
-};
diff --git a/.storybook/main.ts b/.storybook/main.ts
new file mode 100644
index 00000000000..a7f12f469ba
--- /dev/null
+++ b/.storybook/main.ts
@@ -0,0 +1,53 @@
+import { StorybookConfig } from "@storybook/angular";
+import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
+import remarkGfm from "remark-gfm";
+
+const config: StorybookConfig = {
+ stories: [
+ "../libs/components/src/**/*.mdx",
+ "../libs/components/src/**/*.stories.@(js|jsx|ts|tsx)",
+ "../apps/web/src/**/*.mdx",
+ "../apps/web/src/**/*.stories.@(js|jsx|ts|tsx)",
+ "../bitwarden_license/bit-web/src/**/*.mdx",
+ "../bitwarden_license/bit-web/src/**/*.stories.@(js|jsx|ts|tsx)",
+ ],
+ addons: [
+ "@storybook/addon-links",
+ "@storybook/addon-essentials",
+ "@storybook/addon-a11y",
+ {
+ name: "@storybook/addon-docs",
+ options: {
+ mdxPluginOptions: {
+ mdxCompileOptions: {
+ remarkPlugins: [remarkGfm],
+ },
+ },
+ },
+ },
+ ],
+ framework: {
+ name: "@storybook/angular",
+ options: {},
+ },
+ core: {
+ disableTelemetry: true,
+ },
+ env: (config) => ({
+ ...config,
+ FLAGS: JSON.stringify({
+ secretsManager: true,
+ }),
+ }),
+ webpackFinal: async (config, { configType }) => {
+ if (config.resolve) {
+ config.resolve.plugins = [new TsconfigPathsPlugin()] as any;
+ }
+ return config;
+ },
+ docs: {
+ autodocs: true,
+ },
+};
+
+export default config;
diff --git a/.storybook/preview.js b/.storybook/preview.js
deleted file mode 100644
index 754e8d2b884..00000000000
--- a/.storybook/preview.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import { setCompodocJson } from "@storybook/addon-docs/angular";
-import { componentWrapperDecorator, addDecorator } from "@storybook/angular";
-
-import docJson from "../documentation.json";
-setCompodocJson(docJson);
-
-export const parameters = {
- actions: { argTypesRegex: "^on[A-Z].*" },
- controls: {
- matchers: {
- color: /(background|color)$/i,
- date: /Date$/,
- },
- },
- options: {
- storySort: {
- order: ["Documentation", ["Introduction", "Colors", "Icons"], "Component Library"],
- },
- },
- docs: { inlineStories: true },
-};
-
-// ng-template is used to scope any template reference variables and isolate the previews
-const decorator = componentWrapperDecorator(
- (story) => `
-
- ${story}
-
-
- ${story}
-
-
-
-
-`
-);
-
-addDecorator(decorator);
diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx
new file mode 100644
index 00000000000..d7d37a71e7c
--- /dev/null
+++ b/.storybook/preview.tsx
@@ -0,0 +1,111 @@
+import { setCompodocJson } from "@storybook/addon-docs/angular";
+import { componentWrapperDecorator } from "@storybook/angular";
+import type { Preview } from "@storybook/angular";
+
+import docJson from "../documentation.json";
+setCompodocJson(docJson);
+
+const decorator = componentWrapperDecorator(
+ (story) => {
+ return `
+
+
+ ${story}
+
+
+
+
+ ${story}
+
+
+
+
+ ${story}
+
+
+
+
+ ${story}
+
+
+
+
+
+
+
+ `;
+ },
+ ({ globals }) => {
+ return { theme: `${globals["theme"]}` };
+ }
+);
+
+const preview: Preview = {
+ decorators: [decorator],
+ globalTypes: {
+ theme: {
+ description: "Global theme for components",
+ defaultValue: "both",
+ toolbar: {
+ title: "Theme",
+ icon: "circlehollow",
+ items: [
+ {
+ title: "Light & Dark",
+ value: "both",
+ icon: "sidebyside",
+ },
+ {
+ title: "Light",
+ value: "light",
+ icon: "sun",
+ },
+ {
+ title: "Dark",
+ value: "dark",
+ icon: "moon",
+ },
+ {
+ title: "Nord",
+ value: "nord",
+ left: "⛰",
+ },
+ {
+ title: "Solarized",
+ value: "solarized",
+ left: "☯",
+ },
+ ],
+ dynamicTitle: true,
+ },
+ },
+ },
+ parameters: {
+ actions: { argTypesRegex: "^on[A-Z].*" },
+ controls: {
+ matchers: {
+ color: /(background|color)$/i,
+ date: /Date$/,
+ },
+ },
+ options: {
+ storySort: {
+ order: ["Documentation", ["Introduction", "Colors", "Icons"], "Component Library"],
+ },
+ },
+ docs: { source: { type: "dynamic", excludeDecorators: true } },
+ },
+};
+
+export default preview;
diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json
index 397be6b000c..113cc5bcde5 100644
--- a/.storybook/tsconfig.json
+++ b/.storybook/tsconfig.json
@@ -7,6 +7,7 @@
"exclude": ["../src/test.setup.ts", "../apps/src/**/*.spec.ts", "../libs/**/*.spec.ts"],
"files": [
"./typings.d.ts",
+ "./preview.tsx",
"../libs/components/src/main.ts",
"../libs/components/src/polyfills.ts"
]
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 48fd373db46..07423dd18ba 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,3 @@
{
- "cSpell.words": ["Csprng", "Popout", "Reprompt", "takeuntil"]
+ "cSpell.words": ["Csprng", "decryptable", "Popout", "Reprompt", "takeuntil"]
}
diff --git a/angular.json b/angular.json
index a2b82cc64e9..4b62c771cbf 100644
--- a/angular.json
+++ b/angular.json
@@ -135,20 +135,25 @@
}
},
"defaultConfiguration": "development"
- }
- }
- },
- "storybook": {
- "projectType": "application",
- "root": "libs/components",
- "sourceRoot": "libs/components/src",
- "architect": {
- "build": {
- "builder": "@angular-devkit/build-angular:browser",
+ },
+ "storybook": {
+ "builder": "@storybook/angular:start-storybook",
"options": {
- "tsConfig": ".storybook/tsconfig.json",
- "styles": ["libs/components/src/styles.scss", "libs/components/src/styles.css"],
- "scripts": []
+ "configDir": ".storybook",
+ "browserTarget": "components:build",
+ "compodoc": true,
+ "compodocArgs": ["-p", "./tsconfig.json", "-e", "json", "-d", "."],
+ "port": 6006
+ }
+ },
+ "build-storybook": {
+ "builder": "@storybook/angular:build-storybook",
+ "options": {
+ "configDir": ".storybook",
+ "browserTarget": "components:build",
+ "compodoc": true,
+ "compodocArgs": ["-e", "json", "-d", "."],
+ "outputDir": "storybook-static"
}
}
}
diff --git a/apps/browser/package.json b/apps/browser/package.json
index b29ab9c27b3..4872af87d3f 100644
--- a/apps/browser/package.json
+++ b/apps/browser/package.json
@@ -1,6 +1,6 @@
{
"name": "@bitwarden/browser",
- "version": "2023.4.0",
+ "version": "2023.5.0",
"scripts": {
"build": "webpack",
"build:mv3": "cross-env MANIFEST_VERSION=3 webpack",
diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json
index e117d21790c..91bbfdb48b4 100644
--- a/apps/browser/src/_locales/ca/messages.json
+++ b/apps/browser/src/_locales/ca/messages.json
@@ -2222,17 +2222,17 @@
}
},
"region": {
- "message": "Region"
+ "message": "Regió"
},
"opensInANewWindow": {
"message": "S'obri en una finestra nova"
},
"eu": {
- "message": "EU",
+ "message": "UE",
"description": "European Union"
},
"us": {
- "message": "US",
+ "message": "EUA",
"description": "United States"
}
}
diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json
index e6da9f04c8d..4f85e42e08f 100644
--- a/apps/browser/src/_locales/el/messages.json
+++ b/apps/browser/src/_locales/el/messages.json
@@ -1462,13 +1462,13 @@
"message": "Αυτόματη συμπλήρωση αντικειμένου"
},
"insecurePageWarning": {
- "message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page."
+ "message": "Προειδοποίηση: Αυτή είναι μια μη ασφαλή σελίδα HTTP και οποιαδήποτε πληροφορία υποβάλλετε μπορεί να γίνει ορατή και επεμβάσιμη από άλλους. Αυτή η σύνδεση αποθηκεύτηκε αρχικά σε μια ασφαλή (HTTPS) σελίδα."
},
"insecurePageWarningFillPrompt": {
"message": "Do you still wish to fill this login?"
},
"autofillIframeWarning": {
- "message": "The form is hosted by a different domain than the URI of your saved login. Choose OK to auto-fill anyway, or Cancel to stop."
+ "message": "Η φόρμα φιλοξενείται από διαφορετικό τομέα (domain) από το λινκ (uri) της αποθηκευμένης σύνδεσης σας (login). Επιλέξτε OK για αυτόματη συμπλήρωση, ή Ακύρωση για να σταματήσετε."
},
"autofillIframeWarningTip": {
"message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.",
diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json
index cf3cae05d40..68a6ba26b1f 100644
--- a/apps/browser/src/_locales/nl/messages.json
+++ b/apps/browser/src/_locales/nl/messages.json
@@ -2225,7 +2225,7 @@
"message": "Regio"
},
"opensInANewWindow": {
- "message": "Opens in a new window"
+ "message": "Opent in een nieuw venster"
},
"eu": {
"message": "EU",
diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json
index ca32eb73aa6..de2c505ced3 100644
--- a/apps/browser/src/_locales/pl/messages.json
+++ b/apps/browser/src/_locales/pl/messages.json
@@ -1471,7 +1471,7 @@
"message": "Formularz jest hostowany przez inną domenę niż zapisany adres URI dla tego loginu. Wybierz OK, aby i tak automatycznie wypełnić lub anuluj aby zatrzymać."
},
"autofillIframeWarningTip": {
- "message": "To prevent this warning in the future, save this URI, $HOSTNAME$, to your Bitwarden login item for this site.",
+ "message": "Aby zapobiec temu ostrzeżeniu w przyszłości, zapisz ten URI, $HOSTNAME$, dla tej witryny.",
"placeholders": {
"hostname": {
"content": "$1",
diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json
index 99503282049..abb193ecbab 100644
--- a/apps/browser/src/_locales/pt_PT/messages.json
+++ b/apps/browser/src/_locales/pt_PT/messages.json
@@ -3,7 +3,7 @@
"message": "Bitwarden"
},
"extName": {
- "message": "Bitwarden",
+ "message": "Bitwarden - gestor de palavras-passe",
"description": "Extension name, MUST be less than 40 characters (Safari restriction)"
},
"extDesc": {
@@ -20,7 +20,7 @@
"message": "Iniciar sessão"
},
"enterpriseSingleSignOn": {
- "message": "Início de Sessão Único da Empresa"
+ "message": "Início de sessão único para empresas"
},
"cancel": {
"message": "Cancelar"
@@ -32,22 +32,22 @@
"message": "Submeter"
},
"emailAddress": {
- "message": "Endereço de Email"
+ "message": "Endereço de e-mail"
},
"masterPass": {
- "message": "Palavra-passe Mestra"
+ "message": "Palavra-passe mestra"
},
"masterPassDesc": {
- "message": "A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não existe maneira de recuperar a palavra-passe no caso de a esquecer."
+ "message": "A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não há forma de recuperar a palavra-passe no caso de a esquecer."
},
"masterPassHintDesc": {
- "message": "Uma dica da palavra-passe mestra pode ajudar a lembrar-se da sua palavra-passe se a esquecer."
+ "message": "Uma dica da palavra-passe mestra pode ajudá-lo a lembrar-se da sua palavra-passe, caso se esqueça dela."
},
"reTypeMasterPass": {
- "message": "Re-digite a palavra-passe mestra"
+ "message": "Reintroduza a palavra-passe mestra"
},
"masterPassHint": {
- "message": "Dica da Palavra-passe Mestra (opcional)"
+ "message": "Dica da palavra-passe mestra (opcional)"
},
"tab": {
"message": "Separador"
@@ -59,7 +59,7 @@
"message": "O meu cofre"
},
"allVaults": {
- "message": "Todos os Cofres"
+ "message": "Todos os cofres"
},
"tools": {
"message": "Ferramentas"
@@ -68,10 +68,10 @@
"message": "Definições"
},
"currentTab": {
- "message": "Separador Atual"
+ "message": "Separador atual"
},
"copyPassword": {
- "message": "Copiar Palavra-passe"
+ "message": "Copiar palavra-passe"
},
"copyNote": {
"message": "Copiar nota"
@@ -83,22 +83,22 @@
"message": "Copiar nome de utilizador"
},
"copyNumber": {
- "message": "Copiar Número"
+ "message": "Copiar número"
},
"copySecurityCode": {
"message": "Copiar código de segurança"
},
"autoFill": {
- "message": "Auto-preencher"
+ "message": "Preenchimento automático"
},
"generatePasswordCopied": {
- "message": "Gerar Palavra-passe (copiada)"
+ "message": "Gerar palavra-passe (copiada)"
},
"copyElementIdentifier": {
"message": "Copiar nome do campo personalizado"
},
"noMatchingLogins": {
- "message": "Sem credencias correspondidas."
+ "message": "Sem inícios de sessão correspondentes"
},
"unlockVaultMenu": {
"message": "Desbloqueie o seu cofre"
@@ -107,19 +107,19 @@
"message": "Inicie sessão para abrir o seu cofre"
},
"autoFillInfo": {
- "message": "Não existem credenciais disponíveis para auto-preencher para o separador de navegador atual."
+ "message": "Não existem inícios de sessão disponíveis para preenchimento automático no separador atual do navegador."
},
"addLogin": {
- "message": "Adicionar uma credencial"
+ "message": "Adicionar um início de sessão"
},
"addItem": {
- "message": "Adicionar Item"
+ "message": "Adicionar item"
},
"passwordHint": {
"message": "Dica da palavra-passe"
},
"enterEmailToGetHint": {
- "message": "Introduza o endereço de email da sua conta para receber a dica da sua palavra-passe mestra."
+ "message": "Introduza o endereço de e-mail da sua conta para receber a dica da sua palavra-passe mestra."
},
"getMasterPasswordHint": {
"message": "Obter dica da palavra-passe mestra"
@@ -131,13 +131,13 @@
"message": "Enviar um código de verificação para o seu e-mail"
},
"sendCode": {
- "message": "Enviar o código"
+ "message": "Enviar código"
},
"codeSent": {
"message": "Código enviado"
},
"verificationCode": {
- "message": "Código de Verificação"
+ "message": "Código de verificação"
},
"confirmIdentity": {
"message": "Confirme a sua identidade para continuar."
@@ -146,24 +146,24 @@
"message": "Conta"
},
"changeMasterPassword": {
- "message": "Alterar Palavra-passe Mestra"
+ "message": "Alterar palavra-passe mestra"
},
"fingerprintPhrase": {
"message": "Frase de impressão digital",
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
},
"yourAccountsFingerprint": {
- "message": "A frase de impressão digital da sua conta",
+ "message": "Frase da impressão digital da sua conta",
"description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing."
},
"twoStepLogin": {
- "message": "Início de Sessão de Dois Passos"
+ "message": "Verificação de dois passos"
},
"logOut": {
- "message": "Terminar Sessão"
+ "message": "Terminar sessão"
},
"about": {
- "message": "Acerca"
+ "message": "Acerca de"
},
"version": {
"message": "Versão"
@@ -175,13 +175,13 @@
"message": "Mover"
},
"addFolder": {
- "message": "Adicionar Pasta"
+ "message": "Adicionar pasta"
},
"name": {
"message": "Nome"
},
"editFolder": {
- "message": "Editar Pasta"
+ "message": "Editar pasta"
},
"deleteFolder": {
"message": "Eliminar pasta"
@@ -196,7 +196,7 @@
"message": "Ajuda e feedback"
},
"helpCenter": {
- "message": "Centrro de ajuda do Bitwarden"
+ "message": "Centro de ajuda do Bitwarden"
},
"communityForums": {
"message": "Explorar os fóruns da comunidade do Bitwarden"
@@ -208,7 +208,7 @@
"message": "Sincronizar"
},
"syncVaultNow": {
- "message": "Sincronizar cofre agora"
+ "message": "Sincronizar o cofre agora"
},
"lastSync": {
"message": "Última sincronização:"
@@ -221,10 +221,10 @@
"description": "Short for 'Password Generator'."
},
"passGenInfo": {
- "message": "Gera automaticamente palavras-passe fortes e únicas para as suas credenciais."
+ "message": "Gera automaticamente palavras-passe fortes e únicas para os seus inícios de sessão."
},
"bitWebVault": {
- "message": "Cofre Web Bitwarden"
+ "message": "Cofre web Bitwarden"
},
"importItems": {
"message": "Importar itens"
@@ -254,7 +254,7 @@
"message": "Números (0-9)"
},
"specialCharacters": {
- "message": "Caracteres Especiais (!@#$%^&*)"
+ "message": "Caracteres especiais (!@#$%^&*)"
},
"numWords": {
"message": "Número de palavras"
@@ -273,13 +273,13 @@
"message": "Números mínimos"
},
"minSpecial": {
- "message": "Especiais minímos"
+ "message": "Caracteres especiais minímos"
},
"avoidAmbChar": {
"message": "Evitar caracteres ambíguos"
},
"searchVault": {
- "message": "Pesquisar cofre"
+ "message": "Procurar no cofre"
},
"edit": {
"message": "Editar"
@@ -291,7 +291,7 @@
"message": "Não existem itens para listar."
},
"itemInformation": {
- "message": "Informação do item"
+ "message": "Informações do item"
},
"username": {
"message": "Nome de utilizador"
@@ -300,7 +300,7 @@
"message": "Palavra-passe"
},
"passphrase": {
- "message": "Frase-passe"
+ "message": "Frase de acesso"
},
"favorite": {
"message": "Favorito"
@@ -318,7 +318,7 @@
"message": "Pasta"
},
"deleteItem": {
- "message": "Apagar item"
+ "message": "Eliminar item"
},
"viewItem": {
"message": "Ver item"
@@ -327,7 +327,7 @@
"message": "Iniciar"
},
"website": {
- "message": "Website"
+ "message": "Site"
},
"toggleVisibility": {
"message": "Alternar visibilidade"
@@ -342,16 +342,16 @@
"message": "Avaliar a extensão"
},
"rateExtensionDesc": {
- "message": "Por favor considere ajudar-nos com uma boa análise!"
+ "message": "Por favor, considere ajudar-nos com uma boa avaliação!"
},
"browserNotSupportClipboard": {
- "message": "O seu navegador web não suporta cópia fácil da área de transferência. Em alternativa, copie manualmente."
+ "message": "O seu navegador web não suporta a cópia fácil da área de transferência. Em vez disso, copie manualmente."
},
"verifyIdentity": {
- "message": "Verificar Identidade"
+ "message": "Verificar identidade"
},
"yourVaultIsLocked": {
- "message": "O seu cofre está bloqueado. Verifique a sua palavra-passe mestra para continuar."
+ "message": "O seu cofre está bloqueado. Verifique a sua identidade para continuar."
},
"unlock": {
"message": "Desbloquear"
@@ -412,7 +412,7 @@
"message": "4 horas"
},
"onLocked": {
- "message": "Quando o sistema está bloqueado"
+ "message": "No bloqueio do sistema"
},
"onRestart": {
"message": "Ao reiniciar o sistema"
@@ -427,13 +427,13 @@
"message": "Ocorreu um erro"
},
"emailRequired": {
- "message": "O endereço de email é requerido."
+ "message": "É necessário o endereço de e-mail."
},
"invalidEmail": {
- "message": "Endereço de email inválido."
+ "message": "Endereço de e-mail inválido."
},
"masterPasswordRequired": {
- "message": "A palavra-passe mestra é necessária."
+ "message": "É necessária a palavra-passe mestra."
},
"confirmMasterPasswordRequired": {
"message": "É necessário reescrever a palavra-passe mestra."
@@ -452,13 +452,13 @@
"message": "A confirmação da palavra-passe mestra não corresponde."
},
"newAccountCreated": {
- "message": "A sua nova conta foi criada! Agora pode iniciar sessão."
+ "message": "A sua nova conta foi criada! Pode agora iniciar sessão."
},
"masterPassSent": {
- "message": "Enviámos-lhe um email com a dica da sua palavra-passe mestra."
+ "message": "Enviámos-lhe um e-mail com a dica da sua palavra-passe mestra."
},
"verificationCodeRequired": {
- "message": "O código de verificação é requerido."
+ "message": "É necessário o código de verificação."
},
"invalidVerificationCode": {
"message": "Código de verificação inválido"
@@ -474,7 +474,7 @@
}
},
"autofillError": {
- "message": "Não é possível auto-preencher o item selecionado nesta página. Em alternativa, copie e cole a informação."
+ "message": "Não é possível preencher automaticamente o item selecionado nesta página. Em vez disso, copie e cole as informações."
},
"loggedOut": {
"message": "Sessão terminada"
@@ -495,7 +495,7 @@
"message": "Ocorreu um erro inesperado."
},
"nameRequired": {
- "message": "O nome é requerido."
+ "message": "É necessário o nome."
},
"addedFolder": {
"message": "Pasta adicionada"
@@ -504,13 +504,13 @@
"message": "Alterar palavra-passe mestra"
},
"changeMasterPasswordConfirmation": {
- "message": "Pode alterar a sua palavra-passe mestra no cofre web bitwarden.com. Pretende visitar o website agora?"
+ "message": "Pode alterar o seu endereço de e-mail no cofre do site bitwarden.com. Deseja visitar o site agora?"
},
"twoStepLoginConfirmation": {
- "message": "O início de sessão de dois passos torna a sua conta mais segura ao requerer que verifique o seu início de sessão com outro dispositivo como uma chave de segurança, aplicação de autenticação, SMS, chamada telefónica, ou email. O início de sessão de dois passos pode ser ativado no cofre web bitwarden.com. Pretende visitar o website agora?"
+ "message": "A verificação de dois passos torna a sua conta mais segura, exigindo que verifique o seu início de sessão com outro dispositivo, como uma chave de segurança, aplicação de autenticação, SMS, chamada telefónica ou e-mail. A verificação de dois passos pode ser configurada em bitwarden.com. Pretende visitar o site agora?"
},
"editedFolder": {
- "message": "Pasta editada"
+ "message": "Pasta guardada"
},
"deleteFolderConfirmation": {
"message": "Tem a certeza de que pretende eliminar esta pasta?"
@@ -522,13 +522,13 @@
"message": "Tutorial de introdução"
},
"gettingStartedTutorialVideo": {
- "message": "Veja o nosso tutorial de introdução e saiba como tirar o máximo partido da extensão de navegador."
+ "message": "Veja o nosso tutorial de introdução para saber como tirar o máximo partido da extensão do navegador."
},
"syncingComplete": {
- "message": "Sincronização completada"
+ "message": "Sincronização concluída"
},
"syncingFailed": {
- "message": "Sincronização falhada"
+ "message": "Falha na sincronização"
},
"passwordCopied": {
"message": "Palavra-passe copiada"
@@ -553,44 +553,44 @@
"message": "Item adicionado"
},
"editedItem": {
- "message": "Item editado"
+ "message": "Item guardado"
},
"deleteItemConfirmation": {
- "message": "Tem a certeza de que pretende apagar este item?"
+ "message": "Tem a certeza de que pretende eliminar este item?"
},
"deletedItem": {
- "message": "Item enviado para o lixo"
+ "message": "Item movido para o lixo"
},
"overwritePassword": {
- "message": "Sobreescrever palavra-passe"
+ "message": "Substituir palavra-passe"
},
"overwritePasswordConfirmation": {
- "message": "Tem a certeza de que pretende sobreescrever a palavra-passe atual?"
+ "message": "Tem a certeza de que pretende substituir a palavra-passe atual?"
},
"overwriteUsername": {
- "message": "Sobrescrever nome de utilizador"
+ "message": "Substituir nome de utilizador"
},
"overwriteUsernameConfirmation": {
- "message": "Tem a certeza de que deseja sobrescrever o nome de utilizador atual?"
+ "message": "Tem a certeza de que pretende substituir o nome de utilizador atual?"
},
"searchFolder": {
- "message": "Pesquisar pasta"
+ "message": "Procurar na pasta"
},
"searchCollection": {
- "message": "Pesquisar coleção"
+ "message": "Procurar na coleção"
},
"searchType": {
- "message": "Pesquisar tipo"
+ "message": "Procurar no tipo"
},
"noneFolder": {
- "message": "Nenhuma pasta",
+ "message": "Em nenhuma pasta",
"description": "This is the folder for uncategorized items"
},
"enableAddLoginNotification": {
"message": "Ask to add login"
},
"addLoginNotificationDesc": {
- "message": "A \"notificação de adicionar credencial\" solicita-lhe automaticamente a guardar novas credenciais para o seu cofre quando inicia sessão nas mesmas pela primeira vez."
+ "message": "Pedir para adicionar um item se não o encontrar no seu cofre."
},
"showCardsCurrentTab": {
"message": "Show cards on Tab page"
@@ -609,14 +609,14 @@
"description": "Clipboard is the operating system thing where you copy/paste data to on your device."
},
"clearClipboardDesc": {
- "message": "Limpar automaticamente valores copiados da sua área de transferência.",
+ "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."
},
"notificationAddDesc": {
- "message": "Deve o Bitwarden memorizar esta palavra-passe para si?"
+ "message": "Deve o Bitwarden memorizar esta palavra-passe por si?"
},
"notificationAddSave": {
- "message": "Sim, guardar agora"
+ "message": "Guardar"
},
"enableChangedPasswordNotification": {
"message": "Ask to update existing login"
@@ -628,7 +628,7 @@
"message": "Pretende atualizar esta palavra-passe no Bitwarden?"
},
"notificationChangeSave": {
- "message": "Sim, atualizar agora"
+ "message": "Atualizar"
},
"enableContextMenuItem": {
"message": "Show context menu options"
@@ -641,13 +641,13 @@
"description": "Default URI match detection for auto-fill."
},
"defaultUriMatchDetectionDesc": {
- "message": "Escolha a maneira predefinida pela qual a deteção de correspondência de URI é manuseada para credenciais ao realizar ações como auto-preenchimento."
+ "message": "Escolha a forma predefinida como a deteção de correspondência de URI é tratada para inícios de sessão ao executar ações como o preenchimento automático."
},
"theme": {
"message": "Tema"
},
"themeDesc": {
- "message": "Altere o tema de cor da aplicação."
+ "message": "Alterar o tema de cores da aplicação."
},
"dark": {
"message": "Escuro",
@@ -658,7 +658,7 @@
"description": "Light color"
},
"solarizedDark": {
- "message": "Solarized escuro",
+ "message": "Solarized Dark",
"description": "'Solarized' is a noun and the name of a color scheme. It should not be translated."
},
"exportVault": {
@@ -672,16 +672,16 @@
"description": "WARNING (should stay in capitalized letters if the language permits)"
},
"confirmVaultExport": {
- "message": "Confirmar exportação de cofre"
+ "message": "Confirmar a exportação do cofre"
},
"exportWarningDesc": {
- "message": "Esta exportação contém os seus dados do cofre num formato desencriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais inseguros (como email). Apague-a imediatamente após a utilizar."
+ "message": "Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização."
},
"encExportKeyWarningDesc": {
- "message": "Esta exportação cifra os seus dados utilizando a chave de cifragem da sua conta. Se alguma vez mudar a chave de cifragem da sua conta, deve fazer a exportação novamente, já que não conseguirá decifrar este ficheiro de exportação."
+ "message": "Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação."
},
"encExportAccountWarningDesc": {
- "message": "As chaves de encriptação de conta são únicas para cada conta de utilizador Bitwarden, pelo que não se pode importar uma exportação encriptada para uma conta diferente."
+ "message": "As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente."
},
"exportMasterPassword": {
"message": "Introduza a sua palavra-passe mestra para exportar os dados do seu cofre."
@@ -690,13 +690,13 @@
"message": "Partilhado"
},
"learnOrg": {
- "message": "Saiba mais sobre as Organizações"
+ "message": "Saiba mais sobre as organizações"
},
"learnOrgConfirmation": {
- "message": "O Bitwarden permite-lhe partilhar os itens do seu cofre com outras pessoas ao usar uma organização. Gostaria de visitar o site bitwarden.com para saber mais?"
+ "message": "O Bitwarden permite-lhe partilhar os seus itens do cofre com outras pessoas através da utilização de uma organização. Gostaria de visitar o site bitwarden.com para saber mais?"
},
"moveToOrganization": {
- "message": "Mudança para Organização"
+ "message": "Mover para a organização"
},
"share": {
"message": "Partilhar"
@@ -715,13 +715,13 @@
}
},
"moveToOrgDesc": {
- "message": "Escolha uma organização para a qual deseja mover este item. A mudança para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário directo deste item uma vez que tenha sido movido."
+ "message": "Escolha uma organização para a qual pretende mover este item. Mover para uma organização transfere a propriedade do item para essa organização. Deixará de ser o proprietário direto deste item depois de este ter sido movido."
},
"learnMore": {
"message": "Saber mais"
},
"authenticatorKeyTotp": {
- "message": "Chave de autenticador (TOTP)"
+ "message": "Chave de autenticação (TOTP)"
},
"verificationCodeTotp": {
"message": "Código de verificação (TOTP)"
@@ -736,10 +736,10 @@
"message": "Eliminar anexo"
},
"deleteAttachmentConfirmation": {
- "message": "Tem a certeza de que deseja eliminar este anexo?"
+ "message": "Tem a certeza de que pretende eliminar este anexo?"
},
"deletedAttachment": {
- "message": "Anexo apagado"
+ "message": "Anexo eliminado"
},
"newAttachment": {
"message": "Adicionar novo anexo"
@@ -748,13 +748,13 @@
"message": "Sem anexos."
},
"attachmentSaved": {
- "message": "O anexo foi guardado."
+ "message": "Anexo guardado"
},
"file": {
"message": "Ficheiro"
},
"selectFile": {
- "message": "Selecione um ficheiro."
+ "message": "Selecionar um ficheiro"
},
"maxFileSize": {
"message": "O tamanho máximo do ficheiro é de 500 MB."
@@ -766,49 +766,49 @@
"message": "Não pode utilizar esta funcionalidade até atualizar a sua chave de encriptação."
},
"premiumMembership": {
- "message": "Adesão Premium"
+ "message": "Subscrição Premium"
},
"premiumManage": {
- "message": "Gerir adesão"
+ "message": "Gerir subscrição"
},
"premiumManageAlert": {
- "message": "Pode gerir a sua adesão premium no cofre web bitwarden.com. Pretende visitar o website agora?"
+ "message": "Pode gerir a sua subscrição no cofre web bitwarden.com. Pretende visitar o site agora?"
},
"premiumRefresh": {
- "message": "Atualizar adesão"
+ "message": "Atualizar subscrição"
},
"premiumNotCurrentMember": {
- "message": "Não é atualmente um membro premium."
+ "message": "Atualmente, não é um membro Premium."
},
"premiumSignUpAndGet": {
- "message": "Registe-se para uma adesão premium e obtenha:"
+ "message": "Subscreva uma subscrição Premium e obtenha:"
},
"ppremiumSignUpStorage": {
"message": "1 GB de armazenamento encriptado para anexos de ficheiros."
},
"ppremiumSignUpTwoStep": {
- "message": "Opções de início de sessão de dois passos adicionais como YubiKey, FIDO U2F, e Duo."
+ "message": "Opções adicionais de verificação de dois passos, como YubiKey, FIDO U2F e Duo."
},
"ppremiumSignUpReports": {
- "message": "Higiene de palavras-passe, saúde das contas, e relatórios de brechas de dados para manter o seu cofre seguro."
+ "message": "Higiene de palavras-passe, saúde da conta e relatórios de violação de dados para manter o seu cofre seguro."
},
"ppremiumSignUpTotp": {
- "message": "Gerador de códigos de verificação TOTP (2FA) para credenciais no seu cofre."
+ "message": "Gerador de código de verificação TOTP (2FA) para inícios de sessão no seu cofre."
},
"ppremiumSignUpSupport": {
"message": "Prioridade no apoio ao cliente."
},
"ppremiumSignUpFuture": {
- "message": "Todas as funcionalidades premium futuras. Mais a chegar brevemente!"
+ "message": "Todas as futuras funcionalidades Premium. Mais em breve!"
},
"premiumPurchase": {
- "message": "Comprar Premium"
+ "message": "Adquirir Premium"
},
"premiumPurchaseAlert": {
- "message": "Pode comprar adesão premium no cofre web bitwarden.com. Pretende visitar o website agora?"
+ "message": "Pode adquirir uma subscrição Premium no cofre web bitwarden.com. Pretende visitar o site agora?"
},
"premiumCurrentMember": {
- "message": "É um membro premium!"
+ "message": "É um membro Premium!"
},
"premiumCurrentMemberThanks": {
"message": "Obrigado por apoiar o Bitwarden."
@@ -823,28 +823,28 @@
}
},
"refreshComplete": {
- "message": "Atualização completada"
+ "message": "Atualização concluída"
},
"enableAutoTotpCopy": {
"message": "Copy TOTP automatically"
},
"disableAutoTotpCopyDesc": {
- "message": "Se o seu início de sessão tem uma chave de autenticador anexada ao mesmo, o código de verificação TOTP é copiado automaticamente para a sua área de transferência quando quer que auto-preencha o início de sessão."
+ "message": "Se um início de sessão tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão."
},
"enableAutoBiometricsPrompt": {
"message": "Ask for biometrics on launch"
},
"premiumRequired": {
- "message": "Premium requerido"
+ "message": "É necessária uma subscrição Premium"
},
"premiumRequiredDesc": {
- "message": "É requerida uma adesão premium para utilizar esta funcionalidade."
+ "message": "É necessária uma subscrição Premium para utilizar esta funcionalidade."
},
"enterVerificationCodeApp": {
- "message": "Introduza o código de verificação de 6 dígitos da sua aplicação de autenticador."
+ "message": "Introduza o código de verificação de 6 dígitos da sua aplicação de autenticação."
},
"enterVerificationCodeEmail": {
- "message": "Introduza o código de verificação de 6 dígitos que foi enviado por email para $EMAIL$.",
+ "message": "Introduza o código de verificação de 6 dígitos que foi enviado por e-mail para $EMAIL$.",
"placeholders": {
"email": {
"content": "$1",
@@ -853,7 +853,7 @@
}
},
"verificationCodeEmailSent": {
- "message": "Email de verificação enviado para $EMAIL$.",
+ "message": "E-mail de verificação enviado para $EMAIL$.",
"placeholders": {
"email": {
"content": "$1",
@@ -868,7 +868,7 @@
"message": "Enviar código de verificação novamente"
},
"useAnotherTwoStepMethod": {
- "message": "Utilizar outro método de início de sessão de dois passos"
+ "message": "Utilizar outro método de verificação de dois passos"
},
"insertYubiKey": {
"message": "Introduza a sua YubiKey na porta USB do seu computador, depois toque no botão da mesma."
@@ -877,7 +877,7 @@
"message": "Introduza a sua chave de segurança na porta USB do seu computador. Se tiver um botão, toque no mesmo."
},
"webAuthnNewTab": {
- "message": "Para iniciar a verificação WebAuthn 2FA. Clique no botão abaixo para abrir um novo separador e siga as instruções fornecidas no novo separador."
+ "message": "Para iniciar a verificação do WebAuthn 2FA, clique no botão abaixo para abrir um novo separador e siga as instruções fornecidas no novo separador."
},
"webAuthnNewTabOpen": {
"message": "Abrir novo separador"
@@ -889,64 +889,64 @@
"message": "Início de sessão indisponível"
},
"noTwoStepProviders": {
- "message": "Esta conta tem o início de sessão de dois passos ativado, no entanto, nenhum dos provedores de início de sessão de dois passos configurados são suportados por este navegador web."
+ "message": "Esta conta tem a verificação de dois passos configurada, no entanto, nenhum dos fornecedores da verificação de dois passos configurada é suportado por este navegador web."
},
"noTwoStepProviders2": {
- "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou adicione provedores adicionais que são melhor suportados entre navegadores web (tal como uma aplicação de autenticador)."
+ "message": "Utilize um navegador web suportado (como o Chrome) e/ou adicione fornecedores adicionais que sejam mais bem suportados nos navegadores web (como uma aplicação de autenticação)."
},
"twoStepOptions": {
- "message": "Opções de início de sessão de dois passos"
+ "message": "Opções de verificação de dois passos"
},
"recoveryCodeDesc": {
- "message": "Perdeu o acesso a todos os seus provedores de dois passos? Utilize o seu código de recuperação para desativar todos os provedores de dois passos da sua conta."
+ "message": "Perdeu o acesso a todos os seus fornecedores de verificação de dois passos? Utilize o seu código de recuperação para desativar todos os fornecedores de verificação de dois passos da sua conta."
},
"recoveryCodeTitle": {
"message": "Código de recuperação"
},
"authenticatorAppTitle": {
- "message": "Aplicação de autenticador"
+ "message": "Aplicação de autenticação"
},
"authenticatorAppDesc": {
- "message": "Utilize uma aplicação de autenticador (tal como Authy ou Google Authenticator) para gerar códigos de verificação baseados na hora.",
+ "message": "Utilize uma aplicação de autenticação (como o Authy ou o Google Authenticator) para gerar códigos de verificação baseados no tempo.",
"description": "'Authy' and 'Google Authenticator' are product names and should not be translated."
},
"yubiKeyTitle": {
"message": "Chave de segurança YubiKey OTP"
},
"yubiKeyDesc": {
- "message": "Utilize uma YubiKey para aceder à sua conta. Funciona com YubiKey 4, 4 Nano, 4C, e dispositivos NEO."
+ "message": "Utilize uma YubiKey para aceder à sua conta. Funciona com os dispositivos YubiKey 4, 4 Nano, 4C e NEO."
},
"duoDesc": {
- "message": "Verifique com Duo Security utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.",
+ "message": "Verifique com a Duo Security utilizando a aplicação Duo Mobile, SMS, chamada telefónica ou chave de segurança U2F.",
"description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated."
},
"duoOrganizationDesc": {
- "message": "Verifique com Duo Security para a sua organização utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.",
+ "message": "Verifique com a Duo Security para a sua organização utilizando a aplicação Duo Mobile, SMS, chamada telefónica, ou chave de segurança U2F.",
"description": "'Duo Security' and 'Duo Mobile' are product names and should not be translated."
},
"webAuthnTitle": {
"message": "FIDO2 WebAuthn"
},
"webAuthnDesc": {
- "message": "Utilize qualquer chave de segurança ativada pela WebAuthn para aceder à sua conta."
+ "message": "Utilize qualquer chave de segurança compatível com o WebAuthn para aceder à sua conta."
},
"emailTitle": {
- "message": "Email"
+ "message": "E-mail"
},
"emailDesc": {
- "message": "Os códigos de verificação vão ser enviados para si."
+ "message": "Os códigos de verificação ser-lhe-ão enviados por e-mail."
},
"selfHostedEnvironment": {
"message": "Ambiente auto-hospedado"
},
"selfHostedEnvironmentFooter": {
- "message": "Especifique o URL de base da sua instalação local do Bitwarden alojada nas suas premissas."
+ "message": "Especifique o URL de base da sua instalação Bitwarden hospedada no local."
},
"customEnvironment": {
"message": "Ambiente personalizado"
},
"customEnvironmentFooter": {
- "message": "Para utilizadores avançados. Pode especificar o URL de base de cada serviço independentemente."
+ "message": "Para utilizadores avançados. Pode especificar o URL de base de cada serviço de forma independente."
},
"baseUrl": {
"message": "URL do servidor"
@@ -967,13 +967,13 @@
"message": "URL do servidor de ícones"
},
"environmentSaved": {
- "message": "Os URLs de ambiente foram guardados."
+ "message": "URLs de ambiente guardados"
},
"enableAutoFillOnPageLoad": {
- "message": "Ativar auto-preenchimento no carregar da página"
+ "message": "Preencher automaticamente ao carregar a página"
},
"enableAutoFillOnPageLoadDesc": {
- "message": "Se um formulário de início de sessão foram detetado, realizar automaticamente um auto-preenchimento quando a página web carregar."
+ "message": "Se for detetado um formulário de início de sessão, o preenchimento automático é efetuado quando a página web é carregada."
},
"experimentalFeature": {
"message": "Compromised or untrusted websites can exploit auto-fill on page load."
@@ -982,31 +982,31 @@
"message": "Learn more about auto-fill"
},
"defaultAutoFillOnPageLoad": {
- "message": "Predefinição padrão de preenchimento automático para itens de login"
+ "message": "Definição de preenchimento automático predefinido para itens de início de sessão"
},
"defaultAutoFillOnPageLoadDesc": {
- "message": "Depois de activar o preenchimento automático no carregamento da página, pode activar ou desactivar a função de itens de início de sessão individuais. Esta é a configuração padrão para os itens de início de sessão que não estão configurados separadamente."
+ "message": "Pode desativar o preenchimento automático ao carregar a página para itens de início de sessão individuais a partir da vista Editar do item."
},
"itemAutoFillOnPageLoad": {
- "message": "Preenchimento automático no carregamento da página (se ativado em Opções)"
+ "message": "Preenchimento automático ao carregar a página (se configurado nas Opções)"
},
"autoFillOnPageLoadUseDefault": {
- "message": "Usar padrão"
+ "message": "Utilizar a predefinição"
},
"autoFillOnPageLoadYes": {
- "message": "Preenchimento automático na carga da página"
+ "message": "Preencher automaticamente ao carregar a página"
},
"autoFillOnPageLoadNo": {
- "message": "Não preencher automaticamente no carregamento da página"
+ "message": "Não preencher automaticamente ao carregar a página"
},
"commandOpenPopup": {
- "message": "Abrir popup do cofre"
+ "message": "Abrir o pop-up do cofre"
},
"commandOpenSidebar": {
- "message": "Abrir cofre na barra lateral"
+ "message": "Abrir o cofre na barra lateral"
},
"commandAutofillDesc": {
- "message": "Auto-preencher o último início de sessão utilizado para o website atual"
+ "message": "Preencher automaticamente o último início de sessão utilizado no site atual"
},
"commandGeneratePasswordDesc": {
"message": "Gerar e copiar uma nova palavra-passe aleatória para a área de transferência"
@@ -1015,7 +1015,7 @@
"message": "Bloquear o cofre"
},
"privateModeWarning": {
- "message": "O suporte do modo privado é experimental e alguns recursos são limitados."
+ "message": "O suporte do modo privado é experimental e algumas funcionalidades são limitadas."
},
"customFields": {
"message": "Campos personalizados"
@@ -1036,24 +1036,24 @@
"message": "Texto"
},
"cfTypeHidden": {
- "message": "Ocultado"
+ "message": "Oculto"
},
"cfTypeBoolean": {
"message": "Booleano"
},
"cfTypeLinked": {
- "message": "Ligado",
+ "message": "Associado",
"description": "This describes a field that is 'linked' (tied) to another field."
},
"linkedValue": {
- "message": "Valor vinculado",
+ "message": "Valor associado",
"description": "This describes a value that is 'linked' (tied) to another value."
},
"popup2faCloseMessage": {
- "message": "Clicar fora da janela popup para verificar o seu email pelo código de verificação irá causar com que este popup feche. Deseja abrir este popup numa nova janela para que este não se feche?"
+ "message": "Ao clicar fora da janela pop-up para verificar o código de verificação no seu e-mail fará com que este pop-up se feche. Pretende abrir esta janela pop-up numa nova janela para que não se feche?"
},
"popupU2fCloseMessage": {
- "message": "Este navegador não pode processar solicitações U2F nesta janela popup. Pretende abrir este popup numa nova janela para que inicie sessão utilizando U2F?"
+ "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": "Show website icons"
@@ -1077,10 +1077,10 @@
"message": "Marca"
},
"expirationMonth": {
- "message": "Mês de expiração"
+ "message": "Mês de validade"
},
"expirationYear": {
- "message": "Ano de expiração"
+ "message": "Ano de validade"
},
"expiration": {
"message": "Expiração"
@@ -1131,16 +1131,16 @@
"message": "Título"
},
"mr": {
- "message": "Sr"
+ "message": "Sr."
},
"mrs": {
- "message": "Sra"
+ "message": "Sra."
},
"ms": {
- "message": "Sra"
+ "message": "Sra."
},
"dr": {
- "message": "Dr"
+ "message": "Dr."
},
"mx": {
"message": "Mx"
@@ -1149,13 +1149,13 @@
"message": "Primeiro nome"
},
"middleName": {
- "message": "Nome do meio"
+ "message": "Segundo nome"
},
"lastName": {
- "message": "Último nome"
+ "message": "Apelido"
},
"fullName": {
- "message": "Nome Completo"
+ "message": "Nome completo"
},
"identityName": {
"message": "Nome de identidade"
@@ -1173,28 +1173,28 @@
"message": "Número da licença"
},
"email": {
- "message": "Email"
+ "message": "E-mail"
},
"phone": {
"message": "Telefone"
},
"address": {
- "message": "Endereço"
+ "message": "Morada"
},
"address1": {
- "message": "Endereço 1"
+ "message": "1.ª morada"
},
"address2": {
- "message": "Endereço 2"
+ "message": "2.ª morada"
},
"address3": {
- "message": "Endereço 3"
+ "message": "3.ª morada"
},
"cityTown": {
- "message": "Cidade / localidade"
+ "message": "Cidade / Localidade"
},
"stateProvince": {
- "message": "Estado / província"
+ "message": "Estado / Província"
},
"zipPostalCode": {
"message": "Código postal"
@@ -1206,10 +1206,10 @@
"message": "Tipo"
},
"typeLogin": {
- "message": "Credencial"
+ "message": "Início de sessão"
},
"typeLogins": {
- "message": "Credenciais"
+ "message": "Inícios de sessão"
},
"typeSecureNote": {
"message": "Nota segura"
@@ -1233,7 +1233,7 @@
"message": "Favoritos"
},
"popOutNewWindow": {
- "message": "Enviar para uma nova janela"
+ "message": "Abrir numa nova janela"
},
"refresh": {
"message": "Atualizar"
@@ -1245,7 +1245,7 @@
"message": "Identidades"
},
"logins": {
- "message": "Credenciais"
+ "message": "Inícios de sessão"
},
"secureNotes": {
"message": "Notas seguras"
@@ -1255,10 +1255,10 @@
"description": "To clear something out. example: To clear browser history."
},
"checkPassword": {
- "message": "Verifica se a palavra-passe foi exposta."
+ "message": "Verificar se a palavra-passe foi exposta."
},
"passwordExposed": {
- "message": "Esta palavra-passe foi exposta $VALUE$ vez(es) em brechas de dados. Deve alterá-la.",
+ "message": "Esta palavra-passe foi exposta $VALUE$ vez(es) em violações de dados. Deve alterá-la.",
"placeholders": {
"value": {
"content": "$1",
@@ -1267,14 +1267,14 @@
}
},
"passwordSafe": {
- "message": "Esta palavra-passe não foi encontrada em nenhuma brecha de dados conhecida. Esta deve ser segura de utilizar."
+ "message": "Esta palavra-passe não foi encontrada em nenhuma violação de dados conhecida. A sua utilização deve ser segura."
},
"baseDomain": {
"message": "Domínio base",
"description": "Domain name. Ex. website.com"
},
"domainName": {
- "message": "Nome do Domínio",
+ "message": "Nome do domínio",
"description": "Domain name. Ex. website.com"
},
"host": {
@@ -1334,7 +1334,7 @@
"description": "ex. Date this item was updated"
},
"dateCreated": {
- "message": "Criado",
+ "message": "Criado a",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
@@ -1342,7 +1342,7 @@
"description": "ex. Date this password was updated"
},
"neverLockWarning": {
- "message": "Tem a certeza de que pretende utilizar a opção \"Nunca\"? Definir as suas opções de bloqueio para \"Nunca\" armazena a chave de encriptação do seu cofre no seu dispositivo. Se utilizar esta opção deve assegurar-se de que mantém o seu dispositivo devidamente protegido."
+ "message": "Tem a certeza de que deseja utilizar a opção \"Nunca\"? Ao definir as opções de bloqueio para \"Nunca\" armazena a chave de encriptação do seu cofre no seu dispositivo. Se utilizar esta opção deve assegurar-se de que mantém o seu dispositivo devidamente protegido."
},
"noOrganizationsList": {
"message": "Não pertence a nenhuma organização. As organizações permitem-lhe partilhar itens em segurança com outros utilizadores."
@@ -1372,7 +1372,7 @@
"message": "Palavra-passe mestra fraca"
},
"weakMasterPasswordDesc": {
- "message": "A palavra-passe mestra que escolheu é fraca. Deve utilizar uma palavra-passe mestra forte (ou uma frase-passe) para proteger adequadamente a sua conta Bitwarden. Tem a certeza de que pretende utilizar esta palavra-passe mestra?"
+ "message": "A palavra-passe mestra que escolheu é fraca. Deve utilizar uma palavra-passe mestra forte (ou uma frase de acesso) para proteger adequadamente a sua conta Bitwarden. Tem a certeza de que pretende utilizar esta palavra-passe mestra?"
},
"pin": {
"message": "PIN",
@@ -1382,28 +1382,28 @@
"message": "Desbloquear com PIN"
},
"setYourPinCode": {
- "message": "Defina o seu código PIN para desbloquear o Bitwarden. As suas definições PIN serão redefinidas se terminar sessão completamente da aplicação."
+ "message": "Defina o seu código PIN para desbloquear o Bitwarden. As suas definições de PIN serão redefinidas se alguma vez terminar sessão completamente da aplicação."
},
"pinRequired": {
- "message": "O código PIN é requerido."
+ "message": "É necessário o código PIN."
},
"invalidPin": {
"message": "Código PIN inválido."
},
"unlockWithBiometrics": {
- "message": "Desbloquear com biométricos"
+ "message": "Desbloquear com biometria"
},
"awaitDesktop": {
- "message": "A aguardar confirmação do seu computador"
+ "message": "A aguardar confirmação da aplicação para computador"
},
"awaitDesktopDesc": {
- "message": "Por favor, confirme o uso de dados biométricos na aplicação Bitwarden Desktop para habilitar os dados biométricos do navegador."
+ "message": "Por favor, confirme a utilização da biometria na aplicação para computador Bitwarden para configurar a biometria no navegador."
},
"lockWithMasterPassOnRestart": {
- "message": "Bloquear com palavra-passe mestra quando reiniciar o navegador"
+ "message": "Bloquear com a palavra-passe mestra ao reiniciar o navegador"
},
"selectOneCollection": {
- "message": "Tem de selecionar pelo menos uma coleção."
+ "message": "Deve selecionar pelo menos uma coleção."
},
"cloneItem": {
"message": "Clonar item"
@@ -1412,7 +1412,7 @@
"message": "Clonar"
},
"passwordGeneratorPolicyInEffect": {
- "message": "Uma ou mais políticas de organização estão a afetar as suas definições do gerador."
+ "message": "Uma ou mais políticas da organização estão a afetar as suas definições do gerador."
},
"vaultTimeoutAction": {
"message": "Ação de expiração do cofre"
@@ -1426,7 +1426,7 @@
"description": "Noun: a special folder to hold deleted items"
},
"searchTrash": {
- "message": "Pesquisar lixo"
+ "message": "Procurar no lixo"
},
"permanentlyDeleteItem": {
"message": "Eliminar item permanentemente"
@@ -1447,19 +1447,19 @@
"message": "Item restaurado"
},
"vaultTimeoutLogOutConfirmation": {
- "message": "Terminar sessão irá remover todos os acessos ao seu cofre e requer autenticação online após o período de expiração. Tem a certeza de que pretende utilizar esta definição?"
+ "message": "Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?"
},
"vaultTimeoutLogOutConfirmationTitle": {
"message": "Confirmação de expiração do cofre"
},
"autoFillAndSave": {
- "message": "Auto-preencher e guardar"
+ "message": "Preencher automaticamente e guardar"
},
"autoFillSuccessAndSavedUri": {
- "message": "Item auto-preenchido e URI guardado"
+ "message": "Item preenchido automaticamente e URI guardado"
},
"autoFillSuccess": {
- "message": "Item auto-preenchido"
+ "message": "Item preenchido automaticamente "
},
"insecurePageWarning": {
"message": "Warning: This is an unsecured HTTP page, and any information you submit can potentially be seen and changed by others. This Login was originally saved on a secure (HTTPS) page."
@@ -1489,10 +1489,10 @@
"message": "New master password"
},
"confirmNewMasterPass": {
- "message": "Confirm new master password"
+ "message": "Confirmar a nova palavra-passe mestra"
},
"masterPasswordPolicyInEffect": {
- "message": "Uma ou mais políticas da organização requerem que a sua palavra-passe mestra cumpra aos seguintes requisitos:"
+ "message": "Uma ou mais políticas da organização exigem que a sua palavra-passe mestra cumpra os seguintes requisitos:"
},
"policyInEffectMinComplexity": {
"message": "Pontuação mínima de complexidade de $SCORE$",
@@ -1537,34 +1537,34 @@
"message": "Ao marcar esta caixa concorda com o seguinte:"
},
"acceptPoliciesRequired": {
- "message": "Os Termos de Serviço e a Política de Privacidade não foram reconhecidos."
+ "message": "Os Termos de utilização e a Política de privacidade não foram aceites."
},
"termsOfService": {
- "message": "Termos de serviço"
+ "message": "Termos de utilização"
},
"privacyPolicy": {
"message": "Política de privacidade"
},
"hintEqualsPassword": {
- "message": "A dica da sua senha não pode ser igual à senha."
+ "message": "A dica da sua palavra-passe não pode ser igual à sua palavra-passe."
},
"ok": {
"message": "Ok"
},
"desktopSyncVerificationTitle": {
- "message": "Verificação de sincronização do ambiente de trabalho"
+ "message": "Verificação da sincronização da aplicação para computador"
},
"desktopIntegrationVerificationText": {
- "message": "Por favor, verifique se a aplicação no computador mostra esta impressão digital: "
+ "message": "Verifique se a aplicação para computador apresenta esta impressão digital: "
},
"desktopIntegrationDisabledTitle": {
- "message": "Integração com o navegador não está ativada"
+ "message": "A integração do navegador não está configurada"
},
"desktopIntegrationDisabledDesc": {
- "message": "A integração com o navegador não está habilitada no aplicativo Bitwarden Desktop. Por favor, habilite-o nas configurações da aplicação para computador."
+ "message": "A integração do navegador não está configurada na aplicação para computador Bitwarden. Por favor, configure-a nas definições da aplicação para computador."
},
"startDesktopTitle": {
- "message": "Iniciar a aplicação Bitwarden Desktop"
+ "message": "Iniciar a aplicação para computador Bitwarden"
},
"startDesktopDesc": {
"message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used."
@@ -1633,15 +1633,15 @@
}
},
"send": {
- "message": "Envio",
+ "message": "Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"searchSends": {
- "message": "Pesquisar Envios",
+ "message": "Procurar Sends",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"addSend": {
- "message": "Adicionar Envio",
+ "message": "Adicionar Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendTypeText": {
@@ -1651,24 +1651,24 @@
"message": "Ficheiro"
},
"allSends": {
- "message": "Todos os Envios",
+ "message": "Todos os Sends",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"maxAccessCountReached": {
- "message": "Número de acessos máximo atingido",
+ "message": "Número máximo de acessos atingido",
"description": "This text will be displayed after a Send has been accessed the maximum amount of times."
},
"expired": {
"message": "Expirado"
},
"pendingDeletion": {
- "message": "Remoção pendente"
+ "message": "Eliminação pendente"
},
"passwordProtected": {
- "message": "Protegido por senha"
+ "message": "Protegido por palavra-passe"
},
"copySendLink": {
- "message": "Copiar Send link",
+ "message": "Copiar link do Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"removePassword": {
@@ -1678,40 +1678,40 @@
"message": "Eliminar"
},
"removedPassword": {
- "message": "Senha removida"
+ "message": "Palavra-passe removida"
},
"deletedSend": {
- "message": "Envio eliminado",
+ "message": "Send eliminado",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendLink": {
- "message": "Link de Envio",
+ "message": "Link do Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"disabled": {
- "message": "Desabilitado"
+ "message": "Desativado"
},
"removePasswordConfirmation": {
- "message": "Tem a certeza que pretende remover a senha?"
+ "message": "Tem a certeza de que pretende remover a palavra-passe?"
},
"deleteSend": {
- "message": "Eliminar Envio",
+ "message": "Eliminar Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"deleteSendConfirmation": {
- "message": "Tem a certeza que pretende eliminar este Envio?",
+ "message": "Tem a certeza de que pretende eliminar este Send?",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"editSend": {
- "message": "Editar Envio",
+ "message": "Editar Send",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendTypeHeader": {
- "message": "Que tipo de Envio é este?",
+ "message": "Que tipo de Send é este?",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendNameDesc": {
- "message": "Um nome amigável para descrever este Envio.",
+ "message": "Um nome simpático para descrever este Send.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"sendFileDesc": {
@@ -1721,14 +1721,14 @@
"message": "Data de eliminação"
},
"deletionDateDesc": {
- "message": "The Send will be permanently deleted on the specified date and time.",
+ "message": "O Send será permanentemente eliminado na data e hora especificadas.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"expirationDate": {
- "message": "Expiration date"
+ "message": "Data de validade"
},
"expirationDateDesc": {
- "message": "If set, access to this Send will expire on the specified date and time.",
+ "message": "Se definido, o acesso a este Send expirará na data e hora especificadas.",
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"oneDay": {
@@ -1815,7 +1815,7 @@
"message": "Antes de começar"
},
"sendFirefoxCustomDatePopoutMessage1": {
- "message": "Para usar um seletor de data no estilo de calendário",
+ "message": "Para utilizar um seletor de datas do tipo calendário,",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read '**To use a calendar style date picker ** click here to pop out your window.'"
},
"sendFirefoxCustomDatePopoutMessage2": {
@@ -1823,29 +1823,29 @@
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker **click here** to pop out your window.'"
},
"sendFirefoxCustomDatePopoutMessage3": {
- "message": "Para abrir em janela.",
+ "message": "para abrir a janela.",
"description": "This will be used as part of a larger sentence, broken up to include links. The full sentence will read 'To use a calendar style date picker click here **to pop out your window.**'"
},
"expirationDateIsInvalid": {
- "message": "A data de validade fornecida não é válida."
+ "message": "São necessárias uma data e uma hora de validade."
},
"deletionDateIsInvalid": {
"message": "A data de eliminação fornecida não é válida."
},
"expirationDateAndTimeRequired": {
- "message": "Uma data de validade e uma hora são obrigatórias."
+ "message": "São necessárias uma data e uma hora de validade."
},
"deletionDateAndTimeRequired": {
- "message": "Uma data de eliminação e uma hora são obrigatórias."
+ "message": "São necessárias uma data e uma hora de eliminação."
},
"dateParsingError": {
- "message": "Ocorreu um erro ao guardar a sua exclusão e datas de validade."
+ "message": "Ocorreu um erro ao guardar as suas datas de eliminação e validade."
},
"hideEmail": {
- "message": "Ocultar o meu endereço de correio eletrónico dos destinatários."
+ "message": "Ocultar o meu endereço de e-mail dos destinatários."
},
"sendOptionsPolicyInEffect": {
- "message": "One or more organization policies are affecting your Send options."
+ "message": "Uma ou mais políticas da organização estão a afetar as suas opções do Send."
},
"passwordPrompt": {
"message": "Master password re-prompt"
@@ -1863,25 +1863,25 @@
"message": "You must verify your email to use this feature. You can verify your email in the web vault."
},
"updatedMasterPassword": {
- "message": "Palavra-passe Mestra Atualizada"
+ "message": "Palavra-passe mestra atualizada"
},
"updateMasterPassword": {
- "message": "Atualizar Senha Mestra"
+ "message": "Atualizar palavra-passe mestra"
},
"updateMasterPasswordWarning": {
- "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour."
+ "message": "A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora."
},
"updateWeakMasterPasswordWarning": {
- "message": "Your master password does not meet one or more of your organization policies. In order to access the vault, you must update your master password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour."
+ "message": "A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Se prosseguir, sairá da sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora."
},
"resetPasswordPolicyAutoEnroll": {
- "message": "Inscrição Automática"
+ "message": "Inscrição automática"
},
"resetPasswordAutoEnrollInviteWarning": {
"message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password."
},
"selectFolder": {
- "message": "Seleccionar pasta..."
+ "message": "Selecionar pasta..."
},
"ssoCompleteRegistration": {
"message": "In order to complete logging in with SSO, please set a master password to access and protect your vault."
@@ -1938,7 +1938,7 @@
"message": "Vault export unavailable"
},
"personalVaultExportPolicyInEffect": {
- "message": "One or more organization policies prevents you from exporting your individual vault."
+ "message": "Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal."
},
"copyCustomFieldNameInvalidElement": {
"message": "Unable to identify a valid form element. Try inspecting the HTML instead."
@@ -1956,16 +1956,16 @@
}
},
"leaveOrganization": {
- "message": "Deixar a Organização"
+ "message": "Deixar a organização"
},
"removeMasterPassword": {
- "message": "Remover Senha Mestra"
+ "message": "Remover palavra-passe mestra"
},
"removedMasterPassword": {
- "message": "Senha mestra removida."
+ "message": "Palavra-passe mestra removida"
},
"leaveOrganizationConfirmation": {
- "message": "Tem a certeza de que pretende sair desta organização?"
+ "message": "Tem a certeza de que pretende deixar esta organização?"
},
"leftOrganization": {
"message": "Saiu da organização."
@@ -1977,10 +1977,10 @@
"message": "A sua sessão expirou. Por favor, volte atrás e tente iniciar sessão novamente."
},
"exportingPersonalVaultTitle": {
- "message": "A Exportar Cofre Pessoal"
+ "message": "A exportar o cofre pessoal"
},
"exportingPersonalVaultDescription": {
- "message": "Apenas os itens do cofre pessoal associado ao $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos.",
+ "message": "Apenas os itens do cofre pessoal associado a $EMAIL$ serão exportados. Os itens do cofre da organização não serão incluídos.",
"placeholders": {
"email": {
"content": "$1",
@@ -1992,7 +1992,7 @@
"message": "Erro"
},
"regenerateUsername": {
- "message": "Regerar nome de utilizador"
+ "message": "Regenerar nome de utilizador"
},
"generateUsername": {
"message": "Gerar nome de utilizador"
@@ -2017,16 +2017,16 @@
"message": "Aleatório"
},
"randomWord": {
- "message": "Palavra Aleatória"
+ "message": "Palavra aleatória"
},
"websiteName": {
- "message": "Nome do Site"
+ "message": "Nome do site"
},
"whatWouldYouLikeToGenerate": {
- "message": "O que desejaria de gerar?"
+ "message": "O que é que gostaria de gerar?"
},
"passwordType": {
- "message": "Tipo de Palavra-passe"
+ "message": "Tipo de palavra-passe"
},
"service": {
"message": "Serviço"
@@ -2042,7 +2042,7 @@
"description": "Part of a URL."
},
"apiAccessToken": {
- "message": "Token de acesso da API"
+ "message": "Token de acesso à API"
},
"apiKey": {
"message": "Chave da API"
@@ -2051,7 +2051,7 @@
"message": "Key connector error: make sure key connector is available and working correctly."
},
"premiumSubcriptionRequired": {
- "message": "Subscrição premium necessária"
+ "message": "É necessária uma subscrição Premium"
},
"organizationIsDisabled": {
"message": "Organization suspended."
@@ -2114,10 +2114,10 @@
"message": "Utilizador incorreto?"
},
"newAroundHere": {
- "message": "Novo por aqui?"
+ "message": "É novo por cá?"
},
"rememberEmail": {
- "message": "Relembrar e-mail"
+ "message": "Memorizar e-mail"
},
"loginWithDevice": {
"message": "Log in with device"
diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json
index 91fdc621fdf..53c32c686c5 100644
--- a/apps/browser/src/_locales/sl/messages.json
+++ b/apps/browser/src/_locales/sl/messages.json
@@ -11,7 +11,7 @@
"description": "Extension description"
},
"loginOrCreateNewAccount": {
- "message": "Prijavite se ali ustvarite nov račun za dostop do vašega varnega trezorja."
+ "message": "Prijavite se ali ustvarite nov račun za dostop do svojega varnega trezorja."
},
"createAccount": {
"message": "Ustvari račun"
@@ -38,10 +38,10 @@
"message": "Glavno geslo"
},
"masterPassDesc": {
- "message": "Glavno geslo je geslo, ki ga uporabljate za dostop do vašega trezorja. Zelo pomembno je, da ne pozabite vaše glavno geslo. Gesla ni mogoče obnoviti v primeru, če ga pozabite."
+ "message": "Glavno geslo je geslo, ki ga uporabljate za dostop do svojega trezorja. Zelo pomembno je, da ga ne pozabite. Če pozabite glavno geslo, ga ne bo mogoče obnoviti."
},
"masterPassHintDesc": {
- "message": "Namig glavnega gesla vam lahko pomaga, da se spomnite vašega gesla, če ga pozabite."
+ "message": "Če pozabite glavno geslo, boste prejeli ta namig, da bi se gesla laže spomnili."
},
"reTypeMasterPass": {
"message": "Ponovno vnesite glavno geslo"
@@ -678,13 +678,13 @@
"message": "Ta datoteka z izvoženimi podatki vsebuje podatke iz vašega trezorja v nešifrirani obliki. Ne shranjujte in ne pošiljajte je po nezavarovanih kanalih, kot je elektronska pošta. Po uporabi jo takoj izbrišite."
},
"encExportKeyWarningDesc": {
- "message": "Ta izvoz šifrira vaše podatke z uporabo ključa za šifriranje. Če boste kdaj zamenjali ključ za šifriranje, je potrebno, da ponovno naredite izvoz, ker ne boste mogli dešifrirati to izvoženo datoteko."
+ "message": "Ta izvoz šifrira vaše podatke z uporabo ključa za šifriranje. Če boste kdaj zamenjali ključ za šifriranje, boste morali podatke izvoziti ponovno, saj pričujočega izvoza ne boste mogli več dešifrirati."
},
"encExportAccountWarningDesc": {
"message": "Ključ za šifriranje je edinstven za vsak Bitwarden račun, zato ni mogoče da se uvozi šifrirana datoteka v drugi račun."
},
"exportMasterPassword": {
- "message": "Vnesite vaše glavno geslo za izvoz podatkov iz vašega trezorja."
+ "message": "Za izvoz podatkov iz trezorja vnesite svoje glavno geslo."
},
"shared": {
"message": "V skupni rabi"
@@ -763,7 +763,7 @@
"message": "Funkcija ni na voljo."
},
"updateKey": {
- "message": "Ne morete koristiti to funkcijo dokler ne posodobite vaš ključ za šifriranje."
+ "message": "To funkcijo lahko uporabite šele, ko posodobite svoj šifrirni ključ."
},
"premiumMembership": {
"message": "Premium članstvo"
@@ -841,7 +841,7 @@
"message": "Premium članstvo je potrebno za uporabo te funkcije."
},
"enterVerificationCodeApp": {
- "message": "Vnesite 6-mestno verifikacijsko kodo iz vaše verifikacijske aplikacije."
+ "message": "Vnesite 6-mestno verifikacijsko kodo iz svoje aplikacije za avtentikacijo."
},
"enterVerificationCodeEmail": {
"message": "Vnesite 6-mestno verifikacijsko kodo, ki vam je bila poslana na $EMAIL$.",
@@ -898,7 +898,7 @@
"message": "Možnosti dvostopenjske prijave"
},
"recoveryCodeDesc": {
- "message": "Ste izgubili dostop do vseh vaših ponudnikov dvostopenjske prijave? Uporabite svojo kodo za obnovitev in tako onemogočite dvostopenjsko prijavo v svoj račun."
+ "message": "Ste izgubili dostop do vseh ponudnikov dvostopenjske prijave? Uporabite svojo kodo za obnovitev in tako onemogočite dvostopenjsko prijavo v svoj račun."
},
"recoveryCodeTitle": {
"message": "Koda za obnovitev"
@@ -1050,7 +1050,7 @@
"description": "This describes a value that is 'linked' (tied) to another value."
},
"popup2faCloseMessage": {
- "message": "Če kliknete izven pojavnega okna, da preverite vašo epošto za vašo verifikacijsko kodo, bo to povročilo, da se je pojavno okno zapre. Želite odpreti to pojavno okno v novem oknu, tako, da se ne bo zaprlo?"
+ "message": "Če kliknete izven tega pojavnega okna, da bi preverili pošto, se to pojavno okno zaprlo. Želite odpreti to pojavno okno v novem oknu, da se ne bo zaprlo?"
},
"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?"
diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json
index 45c3c62db0e..2275865d060 100644
--- a/apps/browser/src/_locales/zh_CN/messages.json
+++ b/apps/browser/src/_locales/zh_CN/messages.json
@@ -1462,7 +1462,7 @@
"message": "项目已自动填充 "
},
"insecurePageWarning": {
- "message": "警告:这是一个不安全的 HTTP 页面,您提交的任何信息都可能被其他人看到和更改。此登录最初保存在安全 (HTTPS) 页面上。"
+ "message": "警告:这是一个不安全的 HTTP 页面,您提交的任何信息都可能被其他人看到和更改。此登录信息最初保存在安全 (HTTPS) 页面上。"
},
"insecurePageWarningFillPrompt": {
"message": "您仍然想要填充此登录信息吗?"
@@ -1471,7 +1471,7 @@
"message": "该表单由不同于您保存的登录的 URI 域名托管。选择「确定」以自动填充,或选择「取消」停止填充。"
},
"autofillIframeWarningTip": {
- "message": "要防止以后再次出现此警告,请将此站点的 URI $HOSTNAME$ 保存到您的 Bitwarden 登录项目中。",
+ "message": "要防止以后出现此警告,请将此站点的 URI $HOSTNAME$ 保存到您的 Bitwarden 登录项目中。",
"placeholders": {
"hostname": {
"content": "$1",
diff --git a/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts b/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts
index 0035eee8c42..dcf48537b37 100644
--- a/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts
+++ b/apps/browser/src/admin-console/background/service-factories/collection-service.factory.ts
@@ -4,20 +4,20 @@ import { CollectionService } from "@bitwarden/common/admin-console/services/coll
import {
cryptoServiceFactory,
CryptoServiceInitOptions,
-} from "../../../background/service_factories/crypto-service.factory";
+} from "../../../platform/background/service-factories/crypto-service.factory";
import {
CachedServices,
factory,
FactoryOptions,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
i18nServiceFactory,
I18nServiceInitOptions,
-} from "../../../background/service_factories/i18n-service.factory";
+} from "../../../platform/background/service-factories/i18n-service.factory";
import {
stateServiceFactory as stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
type CollectionServiceFactoryOptions = FactoryOptions;
diff --git a/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts b/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts
index 454b1ce9cd2..a050dc22ecc 100644
--- a/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts
+++ b/apps/browser/src/admin-console/background/service-factories/organization-service.factory.ts
@@ -4,11 +4,11 @@ import {
FactoryOptions,
CachedServices,
factory,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
import { BrowserOrganizationService } from "../../services/browser-organization.service";
type OrganizationServiceFactoryOptions = FactoryOptions;
diff --git a/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts b/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts
index 4bb19639c88..89f4a667f8d 100644
--- a/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts
+++ b/apps/browser/src/admin-console/background/service-factories/policy-service.factory.ts
@@ -4,11 +4,11 @@ import {
CachedServices,
factory,
FactoryOptions,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
stateServiceFactory as stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
import { BrowserPolicyService } from "../../services/browser-policy.service";
import {
diff --git a/apps/browser/src/admin-console/services/browser-organization.service.ts b/apps/browser/src/admin-console/services/browser-organization.service.ts
index 3b0ae245a64..6294756cdf7 100644
--- a/apps/browser/src/admin-console/services/browser-organization.service.ts
+++ b/apps/browser/src/admin-console/services/browser-organization.service.ts
@@ -3,7 +3,7 @@ import { BehaviorSubject } from "rxjs";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service";
-import { browserSession, sessionSync } from "../../decorators/session-sync-observable";
+import { browserSession, sessionSync } from "../../platform/decorators/session-sync-observable";
@browserSession
export class BrowserOrganizationService extends OrganizationService {
diff --git a/apps/browser/src/admin-console/services/browser-policy.service.ts b/apps/browser/src/admin-console/services/browser-policy.service.ts
index e51c8dc5978..74aa0f546af 100644
--- a/apps/browser/src/admin-console/services/browser-policy.service.ts
+++ b/apps/browser/src/admin-console/services/browser-policy.service.ts
@@ -1,13 +1,13 @@
import { BehaviorSubject, filter, map, Observable, switchMap, tap } from "rxjs";
import { Jsonify } from "type-fest";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
-import { browserSession, sessionSync } from "../../decorators/session-sync-observable";
+import { browserSession, sessionSync } from "../../platform/decorators/session-sync-observable";
@browserSession
export class BrowserPolicyService extends PolicyService {
diff --git a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts
index 251ceee0aa0..eefbf8e27fb 100644
--- a/apps/browser/src/auth/background/service-factories/auth-service.factory.ts
+++ b/apps/browser/src/auth/background/service-factories/auth-service.factory.ts
@@ -5,52 +5,52 @@ import {
policyServiceFactory,
PolicyServiceInitOptions,
} from "../../../admin-console/background/service-factories/policy-service.factory";
+import {
+ passwordGenerationServiceFactory,
+ PasswordGenerationServiceInitOptions,
+} from "../../../background/service-factories/password-generation-service.factory";
import {
apiServiceFactory,
ApiServiceInitOptions,
-} from "../../../background/service_factories/api-service.factory";
-import { appIdServiceFactory } from "../../../background/service_factories/app-id-service.factory";
+} from "../../../platform/background/service-factories/api-service.factory";
+import { appIdServiceFactory } from "../../../platform/background/service-factories/app-id-service.factory";
import {
- cryptoServiceFactory,
CryptoServiceInitOptions,
-} from "../../../background/service_factories/crypto-service.factory";
+ cryptoServiceFactory,
+} from "../../../platform/background/service-factories/crypto-service.factory";
import {
- encryptServiceFactory,
EncryptServiceInitOptions,
-} from "../../../background/service_factories/encrypt-service.factory";
+ encryptServiceFactory,
+} from "../../../platform/background/service-factories/encrypt-service.factory";
import {
environmentServiceFactory,
EnvironmentServiceInitOptions,
-} from "../../../background/service_factories/environment-service.factory";
+} from "../../../platform/background/service-factories/environment-service.factory";
import {
CachedServices,
factory,
FactoryOptions,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
i18nServiceFactory,
I18nServiceInitOptions,
-} from "../../../background/service_factories/i18n-service.factory";
+} from "../../../platform/background/service-factories/i18n-service.factory";
import {
logServiceFactory,
LogServiceInitOptions,
-} from "../../../background/service_factories/log-service.factory";
+} from "../../../platform/background/service-factories/log-service.factory";
import {
messagingServiceFactory,
MessagingServiceInitOptions,
-} from "../../../background/service_factories/messaging-service.factory";
-import {
- passwordGenerationServiceFactory,
- PasswordGenerationServiceInitOptions,
-} from "../../../background/service_factories/password-generation-service.factory";
+} from "../../../platform/background/service-factories/messaging-service.factory";
import {
platformUtilsServiceFactory,
PlatformUtilsServiceInitOptions,
-} from "../../../background/service_factories/platform-utils-service.factory";
+} from "../../../platform/background/service-factories/platform-utils-service.factory";
import {
stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
import {
keyConnectorServiceFactory,
diff --git a/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts b/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts
index 0689398f9c4..25eb85e5568 100644
--- a/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts
+++ b/apps/browser/src/auth/background/service-factories/key-connector-service.factory.ts
@@ -8,28 +8,28 @@ import {
import {
apiServiceFactory,
ApiServiceInitOptions,
-} from "../../../background/service_factories/api-service.factory";
+} from "../../../platform/background/service-factories/api-service.factory";
import {
- cryptoFunctionServiceFactory,
CryptoFunctionServiceInitOptions,
-} from "../../../background/service_factories/crypto-function-service.factory";
+ cryptoFunctionServiceFactory,
+} from "../../../platform/background/service-factories/crypto-function-service.factory";
import {
CryptoServiceInitOptions,
cryptoServiceFactory,
-} from "../../../background/service_factories/crypto-service.factory";
+} from "../../../platform/background/service-factories/crypto-service.factory";
import {
FactoryOptions,
CachedServices,
factory,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
logServiceFactory,
LogServiceInitOptions,
-} from "../../../background/service_factories/log-service.factory";
+} from "../../../platform/background/service-factories/log-service.factory";
import {
stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
import { TokenServiceInitOptions, tokenServiceFactory } from "./token-service.factory";
diff --git a/apps/browser/src/auth/background/service-factories/token-service.factory.ts b/apps/browser/src/auth/background/service-factories/token-service.factory.ts
index 00f09cbde11..389f8d1541a 100644
--- a/apps/browser/src/auth/background/service-factories/token-service.factory.ts
+++ b/apps/browser/src/auth/background/service-factories/token-service.factory.ts
@@ -5,11 +5,11 @@ import {
FactoryOptions,
CachedServices,
factory,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
stateServiceFactory,
StateServiceInitOptions,
-} from "../../../background/service_factories/state-service.factory";
+} from "../../../platform/background/service-factories/state-service.factory";
type TokenServiceFactoryOptions = FactoryOptions;
diff --git a/apps/browser/src/auth/background/service-factories/totp-service.factory.ts b/apps/browser/src/auth/background/service-factories/totp-service.factory.ts
index c6533bd0b4b..48331576cd3 100644
--- a/apps/browser/src/auth/background/service-factories/totp-service.factory.ts
+++ b/apps/browser/src/auth/background/service-factories/totp-service.factory.ts
@@ -4,16 +4,16 @@ import { TotpService } from "@bitwarden/common/services/totp.service";
import {
CryptoFunctionServiceInitOptions,
cryptoFunctionServiceFactory,
-} from "../../../background/service_factories/crypto-function-service.factory";
+} from "../../../platform/background/service-factories/crypto-function-service.factory";
import {
FactoryOptions,
CachedServices,
factory,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
LogServiceInitOptions,
logServiceFactory,
-} from "../../../background/service_factories/log-service.factory";
+} from "../../../platform/background/service-factories/log-service.factory";
type TotpServiceOptions = FactoryOptions;
diff --git a/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts b/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts
index 8763a96d04e..040a5edfb4a 100644
--- a/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts
+++ b/apps/browser/src/auth/background/service-factories/two-factor-service.factory.ts
@@ -5,15 +5,15 @@ import {
FactoryOptions,
CachedServices,
factory,
-} from "../../../background/service_factories/factory-options";
+} from "../../../platform/background/service-factories/factory-options";
import {
I18nServiceInitOptions,
i18nServiceFactory,
-} from "../../../background/service_factories/i18n-service.factory";
+} from "../../../platform/background/service-factories/i18n-service.factory";
import {
PlatformUtilsServiceInitOptions,
platformUtilsServiceFactory,
-} from "../../../background/service_factories/platform-utils-service.factory";
+} from "../../../platform/background/service-factories/platform-utils-service.factory";
type TwoFactorServiceFactoryOptions = FactoryOptions;
diff --git a/apps/browser/src/auth/popup/environment.component.ts b/apps/browser/src/auth/popup/environment.component.ts
index 5ad42a600c7..c70b5f597c1 100644
--- a/apps/browser/src/auth/popup/environment.component.ts
+++ b/apps/browser/src/auth/popup/environment.component.ts
@@ -3,10 +3,10 @@ import { Router } from "@angular/router";
import { EnvironmentComponent as BaseEnvironmentComponent } from "@bitwarden/angular/components/environment.component";
import { ModalService } from "@bitwarden/angular/services/modal.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
-import { BrowserEnvironmentService } from "../../services/browser-environment.service";
+import { BrowserEnvironmentService } from "../../platform/services/browser-environment.service";
@Component({
selector: "app-environment",
diff --git a/apps/browser/src/auth/popup/hint.component.ts b/apps/browser/src/auth/popup/hint.component.ts
index a0477bb27a0..a743dc7da24 100644
--- a/apps/browser/src/auth/popup/hint.component.ts
+++ b/apps/browser/src/auth/popup/hint.component.ts
@@ -3,10 +3,10 @@ import { ActivatedRoute, Router } from "@angular/router";
import { HintComponent as BaseHintComponent } from "@bitwarden/angular/auth/components/hint.component";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { LoginService } from "@bitwarden/common/auth/abstractions/login.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
@Component({
selector: "app-hint",
diff --git a/apps/browser/src/auth/popup/home.component.ts b/apps/browser/src/auth/popup/home.component.ts
index 361218c6e4b..5dd3bdd641a 100644
--- a/apps/browser/src/auth/popup/home.component.ts
+++ b/apps/browser/src/auth/popup/home.component.ts
@@ -4,11 +4,11 @@ import { Router } from "@angular/router";
import { Subject, takeUntil } from "rxjs";
import { EnvironmentSelectorComponent } from "@bitwarden/angular/auth/components/environment-selector.component";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { LoginService } from "@bitwarden/common/auth/abstractions/login.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
@Component({
selector: "app-home",
diff --git a/apps/browser/src/auth/popup/lock.component.ts b/apps/browser/src/auth/popup/lock.component.ts
index ffcc6efa2cf..d95ff79fc8f 100644
--- a/apps/browser/src/auth/popup/lock.component.ts
+++ b/apps/browser/src/auth/popup/lock.component.ts
@@ -4,13 +4,6 @@ import { Router } from "@angular/router";
import { LockComponent as BaseLockComponent } from "@bitwarden/angular/auth/components/lock.component";
import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service";
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service";
import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction";
@@ -18,6 +11,13 @@ import { InternalPolicyService } from "@bitwarden/common/admin-console/abstracti
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { KeyConnectorService } from "@bitwarden/common/auth/abstractions/key-connector.service";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
+import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
import { BiometricErrors, BiometricErrorTypes } from "../../models/biometricErrors";
diff --git a/apps/browser/src/auth/popup/login-with-device.component.ts b/apps/browser/src/auth/popup/login-with-device.component.ts
index dae6fd2d4da..cf0e57b5ee5 100644
--- a/apps/browser/src/auth/popup/login-with-device.component.ts
+++ b/apps/browser/src/auth/popup/login-with-device.component.ts
@@ -4,17 +4,17 @@ import { Router } from "@angular/router";
import { LoginWithDeviceComponent as BaseLoginWithDeviceComponent } from "@bitwarden/angular/auth/components/login-with-device.component";
import { AnonymousHubService } from "@bitwarden/common/abstractions/anonymousHub.service";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { AppIdService } from "@bitwarden/common/abstractions/appId.service";
-import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
-import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
-import { ValidationService } from "@bitwarden/common/abstractions/validation.service";
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { LoginService } from "@bitwarden/common/auth/abstractions/login.service";
+import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service";
+import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service";
+import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
+import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
diff --git a/apps/browser/src/auth/popup/login.component.ts b/apps/browser/src/auth/popup/login.component.ts
index 0652070a4da..496de2c54b5 100644
--- a/apps/browser/src/auth/popup/login.component.ts
+++ b/apps/browser/src/auth/popup/login.component.ts
@@ -3,22 +3,22 @@ import { FormBuilder } from "@angular/forms";
import { ActivatedRoute, Router } from "@angular/router";
import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/auth/components/login.component";
-import { AppIdService } from "@bitwarden/common/abstractions/appId.service";
-import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { DevicesApiServiceAbstraction } from "@bitwarden/common/abstractions/devices/devices-api.service.abstraction";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { LoginService } from "@bitwarden/common/auth/abstractions/login.service";
-import { Utils } from "@bitwarden/common/misc/utils";
+import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service";
+import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
+import { Utils } from "@bitwarden/common/platform/misc/utils";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
-import { flagEnabled } from "../../flags";
+import { flagEnabled } from "../../platform/flags";
@Component({
selector: "app-login",
diff --git a/apps/browser/src/auth/popup/register.component.ts b/apps/browser/src/auth/popup/register.component.ts
index f7a80b62938..b061e1faf6a 100644
--- a/apps/browser/src/auth/popup/register.component.ts
+++ b/apps/browser/src/auth/popup/register.component.ts
@@ -6,14 +6,14 @@ import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/c
import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { AuditService } from "@bitwarden/common/abstractions/audit.service";
-import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { FormValidationErrorsService } from "@bitwarden/common/abstractions/formValidationErrors.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
+import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { FormValidationErrorsService } from "@bitwarden/common/platform/abstractions/form-validation-errors.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
@Component({
diff --git a/apps/browser/src/auth/popup/set-password.component.ts b/apps/browser/src/auth/popup/set-password.component.ts
index 35af812714a..83ec3572737 100644
--- a/apps/browser/src/auth/popup/set-password.component.ts
+++ b/apps/browser/src/auth/popup/set-password.component.ts
@@ -4,15 +4,15 @@ import { ActivatedRoute, Router } from "@angular/router";
import { SetPasswordComponent as BaseSetPasswordComponent } from "@bitwarden/angular/components/set-password.component";
import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
import { OrganizationUserService } from "@bitwarden/common/abstractions/organization-user/organization-user.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction";
import { PolicyApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/policy/policy-api.service.abstraction";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
+import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
diff --git a/apps/browser/src/auth/popup/sso.component.ts b/apps/browser/src/auth/popup/sso.component.ts
index 3892704ca47..2214e91687a 100644
--- a/apps/browser/src/auth/popup/sso.component.ts
+++ b/apps/browser/src/auth/popup/sso.component.ts
@@ -3,19 +3,19 @@ import { ActivatedRoute, Router } from "@angular/router";
import { SsoComponent as BaseSsoComponent } from "@bitwarden/angular/auth/components/sso.component";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
-import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
-import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service";
-import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
-import { LogService } from "@bitwarden/common/abstractions/log.service";
-import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
-import { StateService } from "@bitwarden/common/abstractions/state.service";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service";
import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service";
import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status";
+import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service";
+import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
+import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { StateService } from "@bitwarden/common/platform/abstractions/state.service";
import { PasswordGenerationServiceAbstraction } from "@bitwarden/common/tools/generator/password";
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction";
-import { BrowserApi } from "../../browser/browserApi";
+import { BrowserApi } from "../../platform/browser/browser-api";
@Component({
selector: "app-sso",
diff --git a/apps/browser/src/auth/popup/two-factor-options.component.html b/apps/browser/src/auth/popup/two-factor-options.component.html
index 3fc510bb27c..f25944aba65 100644
--- a/apps/browser/src/auth/popup/two-factor-options.component.html
+++ b/apps/browser/src/auth/popup/two-factor-options.component.html
@@ -1,6 +1,6 @@