From bd4453cce5f1b20a488d2a3bb0428a921f69d104 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:49:15 -0500 Subject: [PATCH 01/10] [deps] DevOps: Update gh minor (#8179) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/brew-bump-cli.yml | 2 +- .github/workflows/build-browser.yml | 2 +- .github/workflows/build-cli.yml | 2 +- .github/workflows/build-desktop.yml | 36 +++++++++++----------- .github/workflows/build-web.yml | 4 +-- .github/workflows/chromatic.yml | 4 +-- .github/workflows/deploy-web.yml | 4 +-- .github/workflows/release-browser.yml | 4 +-- .github/workflows/release-cli.yml | 4 +-- .github/workflows/release-desktop-beta.yml | 30 +++++++++--------- .github/workflows/release-desktop.yml | 4 +-- .github/workflows/release-web.yml | 4 +-- .github/workflows/test.yml | 2 +- 13 files changed, 51 insertions(+), 51 deletions(-) diff --git a/.github/workflows/brew-bump-cli.yml b/.github/workflows/brew-bump-cli.yml index b1eb1708cb..33c6b7c368 100644 --- a/.github/workflows/brew-bump-cli.yml +++ b/.github/workflows/brew-bump-cli.yml @@ -29,7 +29,7 @@ jobs: secrets: "brew-bump-workflow-pat" - name: Update Homebrew formula - uses: dawidd6/action-homebrew-bump-formula@75ed025ff3ad1d617862838b342b06d613a0ddf3 # v3.10.1 + uses: dawidd6/action-homebrew-bump-formula@baf2b60c51fc1f8453c884b0c61052668a71bd1d # v3.11.0 with: # Required, custom GitHub access token with the 'public_repo' and 'workflow' scopes token: ${{ steps.retrieve-secrets.outputs.brew-bump-workflow-pat }} diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml index 75bce90bb2..585a888ae1 100644 --- a/.github/workflows/build-browser.yml +++ b/.github/workflows/build-browser.yml @@ -371,7 +371,7 @@ jobs: secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@198daeb2d30636c4608d6a6bb96c009dbefc02a2 # v1.18.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index 87c34da588..2c3ea3982a 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -297,7 +297,7 @@ jobs: echo "BW Package Version: $_PACKAGE_VERSION" - name: Get bw linux cli - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: bw-linux-${{ env._PACKAGE_VERSION }}.zip path: apps/cli/dist/snap diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 2823e7732c..354fd4edda 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -167,7 +167,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: | @@ -296,7 +296,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -476,14 +476,14 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -576,7 +576,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -637,14 +637,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -737,7 +737,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -753,7 +753,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -843,14 +843,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -943,7 +943,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -959,7 +959,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -1036,14 +1036,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -1136,7 +1136,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 id: cache with: path: apps/desktop/desktop_native/*.node @@ -1152,7 +1152,7 @@ jobs: run: npm run build - name: Download Browser artifact - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: ${{ github.workspace }}/browser-build-artifacts @@ -1211,7 +1211,7 @@ jobs: secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@198daeb2d30636c4608d6a6bb96c009dbefc02a2 # v1.18.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 0a1ab23651..abd2538773 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -194,7 +194,7 @@ jobs: secrets: "github-pat-bitwarden-devops-bot-repo-scope" - name: Download ${{ matrix.artifact_name }} artifact - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: web-${{ env._VERSION }}-${{ matrix.artifact_name }}.zip path: apps/web @@ -270,7 +270,7 @@ jobs: secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@198daeb2d30636c4608d6a6bb96c009dbefc02a2 # v1.18.0 + uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d # v1.19.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 41aaf55826..ab08d509b3 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -33,7 +33,7 @@ jobs: - name: Cache npm id: npm-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: "~/.npm" key: ${{ runner.os }}-npm-chromatic-${{ hashFiles('**/package-lock.json') }} @@ -46,7 +46,7 @@ jobs: run: npm run build-storybook:ci - name: Publish to Chromatic - uses: chromaui/action@76bda3648003815314bd50adaa553ee612a7f36c # v10.9.2 + uses: chromaui/action@c9067691aca4a28d6fbb40d9eea6e144369fbcae # v10.9.5 with: token: ${{ secrets.GITHUB_TOKEN }} projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} diff --git a/.github/workflows/deploy-web.yml b/.github/workflows/deploy-web.yml index aacef42b82..626c431f7b 100644 --- a/.github/workflows/deploy-web.yml +++ b/.github/workflows/deploy-web.yml @@ -309,7 +309,7 @@ jobs: - name: Update deployment status to Success if: success() - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: ${{ env._ENVIRONMENT_URL }} @@ -318,7 +318,7 @@ jobs: - name: Update deployment status to Failure if: failure() - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: ${{ env._ENVIRONMENT_URL }} diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml index dc4d5b34d7..c260f19581 100644 --- a/.github/workflows/release-browser.yml +++ b/.github/workflows/release-browser.yml @@ -155,7 +155,7 @@ jobs: - name: Update deployment status to Success if: ${{ success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -163,7 +163,7 @@ jobs: - name: Update deployment status to Failure if: ${{ failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 4c46ffa6b7..add0c539e9 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -118,7 +118,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -126,7 +126,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index d595a49d75..20bffb956e 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -424,14 +424,14 @@ jobs: - name: Cache Build id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Cache Safari id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -555,14 +555,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -659,7 +659,7 @@ jobs: - name: Download artifact from hotfix-rc if: github.ref == 'refs/heads/hotfix-rc' - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -668,7 +668,7 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -677,7 +677,7 @@ jobs: - name: Download artifacts from main if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc' }} - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -765,14 +765,14 @@ jobs: - name: Get Build Cache id: build-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/desktop/build key: ${{ runner.os }}-${{ github.run_id }}-build - name: Setup Safari Cache id: safari-cache - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache@ab5e6d0c87105b4c9c2047343972218f562e4319 # v4.0.1 with: path: apps/browser/dist/Safari key: ${{ runner.os }}-${{ github.run_id }}-safari-extension @@ -864,7 +864,7 @@ jobs: - name: Download artifact from hotfix-rc if: github.ref == 'refs/heads/hotfix-rc' - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -873,7 +873,7 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -882,7 +882,7 @@ jobs: - name: Download artifact from main if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc' }} - uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d # v3.0.0 + uses: dawidd6/action-download-artifact@71072fbb1229e1317f1a8de6b04206afb461bd67 # v3.1.2 with: workflow: build-browser.yml workflow_conclusion: success @@ -953,7 +953,7 @@ jobs: cf-prod-account" - name: Download all artifacts - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: path: apps/desktop/artifacts @@ -992,7 +992,7 @@ jobs: - name: Update deployment status to Success if: ${{ success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -1000,7 +1000,7 @@ jobs: - name: Update deployment status to Failure if: ${{ failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index ad6883bfc9..cf857d7177 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -231,7 +231,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'success' @@ -239,7 +239,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' state: 'failure' diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 42acd62420..3e07f7fc98 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -268,7 +268,7 @@ jobs: - name: Update deployment status to Success if: ${{ github.event.inputs.release_type != 'Dry Run' && success() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: http://vault.bitwarden.com @@ -277,7 +277,7 @@ jobs: - name: Update deployment status to Failure if: ${{ github.event.inputs.release_type != 'Dry Run' && failure() }} - uses: chrnorm/deployment-status@2afb7d27101260f4a764219439564d954d10b5b0 # v2.0.1 + uses: chrnorm/deployment-status@9a72af4586197112e0491ea843682b5dc280d806 # v2.0.3 with: token: '${{ secrets.GITHUB_TOKEN }}' environment-url: http://vault.bitwarden.com diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3dd6c8da1..3c650d8a62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -63,7 +63,7 @@ jobs: fail-on-error: true - name: Upload to codecov.io - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # v4.0.1 + uses: codecov/codecov-action@54bcd8715eee62d40e33596ef5e8f0f48dbbccab # v4.1.0 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From 356a15535cdae4aa162c46b95dff02a9bac5bc56 Mon Sep 17 00:00:00 2001 From: Jason Ng Date: Wed, 6 Mar 2024 13:49:43 -0500 Subject: [PATCH 02/10] PM-6643 Onboarding Import Data Text Update (#8228) change text for import data field in onboarding vault --- .../vault-onboarding/vault-onboarding.component.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/web/src/app/vault/individual-vault/vault-onboarding/vault-onboarding.component.html b/apps/web/src/app/vault/individual-vault/vault-onboarding/vault-onboarding.component.html index ae6ff2c36b..491bdc8e36 100644 --- a/apps/web/src/app/vault/individual-vault/vault-onboarding/vault-onboarding.component.html +++ b/apps/web/src/app/vault/individual-vault/vault-onboarding/vault-onboarding.component.html @@ -27,12 +27,9 @@ - + {{ "onboardingImportDataDetailsPartTwoNoOrgs" | i18n }} - - {{ "onboardingImportDataDetailsPartTwoWithOrgs" | i18n }} -

From c52456cbb6dbee5c48fc9bec7e6c197bf68b4eba Mon Sep 17 00:00:00 2001 From: Jonathan Prusik Date: Wed, 6 Mar 2024 16:07:46 -0500 Subject: [PATCH 03/10] [AC-2248][PM-5352] Bugfix - Fix non-working policy state in autofill settings service (#8156) * fix broken policy state in autofill settings service * cleanup and re-org * move toast display tracking value and update to autofill settings state --- .../background/notification.background.ts | 2 +- .../background/overlay.background.spec.ts | 6 +- .../autofill/background/overlay.background.ts | 9 +- .../context-menu-clicked-handler.spec.ts | 17 ++- .../browser/context-menu-clicked-handler.ts | 28 ++--- .../browser/main-context-menu-handler.spec.ts | 2 +- .../browser/main-context-menu-handler.ts | 32 +++--- .../autofill/content/autofill-init.spec.ts | 3 +- .../autofill-overlay-iframe.service.spec.ts | 2 +- .../autofill-overlay-iframe.service.ts | 2 +- .../pages/button/autofill-overlay-button.ts | 2 +- .../pages/list/autofill-overlay-list.ts | 2 +- .../shared/autofill-overlay-page-element.ts | 3 +- .../popup/settings/autofill.component.ts | 6 +- .../autofill-overlay-content.service.spec.ts | 8 +- .../autofill-overlay-content.service.ts | 8 +- .../services/autofill.service.spec.ts | 2 +- .../src/autofill/services/autofill.service.ts | 2 +- .../insert-autofill-content.service.spec.ts | 3 +- .../insert-autofill-content.service.ts | 3 +- .../autofill/utils/autofill-overlay.enum.ts | 17 +-- .../src/background/runtime.background.ts | 2 +- .../src/popup/settings/options.component.ts | 2 +- .../components/vault/current-tab.component.ts | 39 ++++--- apps/browser/tsconfig.json | 6 +- .../common/src/autofill/constants/index.ts | 9 +- .../services/autofill-settings.service.ts | 102 +++++++----------- libs/common/src/autofill/types/index.ts | 7 ++ ...ve-autofill-settings-to-state-providers.ts | 10 +- ...ard-to-autofill-settings-state-provider.ts | 13 ++- 30 files changed, 175 insertions(+), 174 deletions(-) rename apps/browser/src/autofill/constants.ts => libs/common/src/autofill/constants/index.ts (93%) create mode 100644 libs/common/src/autofill/types/index.ts diff --git a/apps/browser/src/autofill/background/notification.background.ts b/apps/browser/src/autofill/background/notification.background.ts index 6b5f1a8297..44decc01a9 100644 --- a/apps/browser/src/autofill/background/notification.background.ts +++ b/apps/browser/src/autofill/background/notification.background.ts @@ -4,6 +4,7 @@ import { PolicyService } from "@bitwarden/common/admin-console/abstractions/poli import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { NOTIFICATION_BAR_LIFESPAN_MS } from "@bitwarden/common/autofill/constants"; import { UserNotificationSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/user-notification-settings.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; @@ -19,7 +20,6 @@ import { openUnlockPopout } from "../../auth/popup/utils/auth-popout-window"; import { BrowserApi } from "../../platform/browser/browser-api"; import { BrowserStateService } from "../../platform/services/abstractions/browser-state.service"; import { openAddEditVaultItemPopout } from "../../vault/popup/utils/vault-popout-window"; -import { NOTIFICATION_BAR_LIFESPAN_MS } from "../constants"; import { NotificationQueueMessageType } from "../enums/notification-queue-message-type.enum"; import { AutofillService } from "../services/abstractions/autofill.service"; diff --git a/apps/browser/src/autofill/background/overlay.background.spec.ts b/apps/browser/src/autofill/background/overlay.background.spec.ts index 2820ed6cd1..c19505118b 100644 --- a/apps/browser/src/autofill/background/overlay.background.spec.ts +++ b/apps/browser/src/autofill/background/overlay.background.spec.ts @@ -2,6 +2,10 @@ import { mock, mockReset } from "jest-mock-extended"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { AuthService } from "@bitwarden/common/auth/services/auth.service"; +import { + SHOW_AUTOFILL_BUTTON, + AutofillOverlayVisibility, +} from "@bitwarden/common/autofill/constants"; import { AutofillSettingsService } from "@bitwarden/common/autofill/services/autofill-settings.service"; import { ThemeType } from "@bitwarden/common/platform/enums"; import { EnvironmentService } from "@bitwarden/common/platform/services/environment.service"; @@ -15,7 +19,6 @@ import { CipherService } from "@bitwarden/common/vault/services/cipher.service"; import { BrowserApi } from "../../platform/browser/browser-api"; import BrowserPlatformUtilsService from "../../platform/services/browser-platform-utils.service"; import { BrowserStateService } from "../../platform/services/browser-state.service"; -import { SHOW_AUTOFILL_BUTTON } from "../constants"; import { AutofillService } from "../services/abstractions/autofill.service"; import { createAutofillPageDetailsMock, @@ -28,7 +31,6 @@ import { flushPromises, sendExtensionRuntimeMessage, sendPortMessage } from "../ import { AutofillOverlayElement, AutofillOverlayPort, - AutofillOverlayVisibility, RedirectFocusDirection, } from "../utils/autofill-overlay.enum"; diff --git a/apps/browser/src/autofill/background/overlay.background.ts b/apps/browser/src/autofill/background/overlay.background.ts index 583e22fbe8..49d27391cf 100644 --- a/apps/browser/src/autofill/background/overlay.background.ts +++ b/apps/browser/src/autofill/background/overlay.background.ts @@ -3,7 +3,9 @@ import { firstValueFrom } from "rxjs"; import { SettingsService } from "@bitwarden/common/abstractions/settings.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { SHOW_AUTOFILL_BUTTON } from "@bitwarden/common/autofill/constants"; import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; +import { InlineMenuVisibilitySetting } from "@bitwarden/common/autofill/types"; 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"; @@ -22,13 +24,8 @@ import { openViewVaultItemPopout, openAddEditVaultItemPopout, } from "../../vault/popup/utils/vault-popout-window"; -import { SHOW_AUTOFILL_BUTTON } from "../constants"; import { AutofillService, PageDetail } from "../services/abstractions/autofill.service"; -import { - InlineMenuVisibilitySetting, - AutofillOverlayElement, - AutofillOverlayPort, -} from "../utils/autofill-overlay.enum"; +import { AutofillOverlayElement, AutofillOverlayPort } from "../utils/autofill-overlay.enum"; import { LockedVaultPendingNotificationsData } from "./abstractions/notification.background"; import { diff --git a/apps/browser/src/autofill/browser/context-menu-clicked-handler.spec.ts b/apps/browser/src/autofill/browser/context-menu-clicked-handler.spec.ts index f2312a0d66..e54f37489b 100644 --- a/apps/browser/src/autofill/browser/context-menu-clicked-handler.spec.ts +++ b/apps/browser/src/autofill/browser/context-menu-clicked-handler.spec.ts @@ -3,14 +3,6 @@ import { mock, MockProxy } from "jest-mock-extended"; import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; -import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; -import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; -import { TotpService } from "@bitwarden/common/vault/abstractions/totp.service"; -import { CipherType } from "@bitwarden/common/vault/enums"; -import { CipherRepromptType } from "@bitwarden/common/vault/enums/cipher-reprompt-type"; -import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; -import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; - import { AUTOFILL_ID, COPY_PASSWORD_ID, @@ -18,7 +10,14 @@ import { COPY_VERIFICATION_CODE_ID, GENERATE_PASSWORD_ID, NOOP_COMMAND_SUFFIX, -} from "../constants"; +} from "@bitwarden/common/autofill/constants"; +import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; +import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; +import { TotpService } from "@bitwarden/common/vault/abstractions/totp.service"; +import { CipherType } from "@bitwarden/common/vault/enums"; +import { CipherRepromptType } from "@bitwarden/common/vault/enums/cipher-reprompt-type"; +import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; +import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { CopyToClipboardAction, diff --git a/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts b/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts index 21ff91c02d..760b833044 100644 --- a/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts +++ b/apps/browser/src/autofill/browser/context-menu-clicked-handler.ts @@ -2,6 +2,20 @@ import { EventCollectionService } from "@bitwarden/common/abstractions/event/eve import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { + AUTOFILL_CARD_ID, + AUTOFILL_ID, + AUTOFILL_IDENTITY_ID, + COPY_IDENTIFIER_ID, + COPY_PASSWORD_ID, + COPY_USERNAME_ID, + COPY_VERIFICATION_CODE_ID, + CREATE_CARD_ID, + CREATE_IDENTITY_ID, + CREATE_LOGIN_ID, + GENERATE_PASSWORD_ID, + NOOP_COMMAND_SUFFIX, +} from "@bitwarden/common/autofill/constants"; import { EventType } from "@bitwarden/common/enums"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { StateFactory } from "@bitwarden/common/platform/factories/state-factory"; @@ -38,20 +52,6 @@ import { LockedVaultPendingNotificationsData } from "../background/abstractions/ import { autofillServiceFactory } from "../background/service_factories/autofill-service.factory"; import { copyToClipboard, GeneratePasswordToClipboardCommand } from "../clipboard"; import { AutofillTabCommand } from "../commands/autofill-tab-command"; -import { - AUTOFILL_CARD_ID, - AUTOFILL_ID, - AUTOFILL_IDENTITY_ID, - COPY_IDENTIFIER_ID, - COPY_PASSWORD_ID, - COPY_USERNAME_ID, - COPY_VERIFICATION_CODE_ID, - CREATE_CARD_ID, - CREATE_IDENTITY_ID, - CREATE_LOGIN_ID, - GENERATE_PASSWORD_ID, - NOOP_COMMAND_SUFFIX, -} from "../constants"; import { AutofillCipherTypeId } from "../types"; export type CopyToClipboardOptions = { text: string; tab: chrome.tabs.Tab }; diff --git a/apps/browser/src/autofill/browser/main-context-menu-handler.spec.ts b/apps/browser/src/autofill/browser/main-context-menu-handler.spec.ts index 9e115749e8..f2b17d2f08 100644 --- a/apps/browser/src/autofill/browser/main-context-menu-handler.spec.ts +++ b/apps/browser/src/autofill/browser/main-context-menu-handler.spec.ts @@ -1,5 +1,6 @@ import { mock, MockProxy } from "jest-mock-extended"; +import { NOOP_COMMAND_SUFFIX } from "@bitwarden/common/autofill/constants"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { CipherType } from "@bitwarden/common/vault/enums"; @@ -7,7 +8,6 @@ import { Cipher } from "@bitwarden/common/vault/models/domain/cipher"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { BrowserStateService } from "../../platform/services/abstractions/browser-state.service"; -import { NOOP_COMMAND_SUFFIX } from "../constants"; import { MainContextMenuHandler } from "./main-context-menu-handler"; diff --git a/apps/browser/src/autofill/browser/main-context-menu-handler.ts b/apps/browser/src/autofill/browser/main-context-menu-handler.ts index 0051c69154..19154fbfb8 100644 --- a/apps/browser/src/autofill/browser/main-context-menu-handler.ts +++ b/apps/browser/src/autofill/browser/main-context-menu-handler.ts @@ -1,3 +1,19 @@ +import { + AUTOFILL_CARD_ID, + AUTOFILL_ID, + AUTOFILL_IDENTITY_ID, + COPY_IDENTIFIER_ID, + COPY_PASSWORD_ID, + COPY_USERNAME_ID, + COPY_VERIFICATION_CODE_ID, + CREATE_CARD_ID, + CREATE_IDENTITY_ID, + CREATE_LOGIN_ID, + GENERATE_PASSWORD_ID, + NOOP_COMMAND_SUFFIX, + ROOT_ID, + SEPARATOR_ID, +} from "@bitwarden/common/autofill/constants"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { StateFactory } from "@bitwarden/common/platform/factories/state-factory"; @@ -21,22 +37,6 @@ import { StateServiceInitOptions, } from "../../platform/background/service-factories/state-service.factory"; import { BrowserStateService } from "../../platform/services/abstractions/browser-state.service"; -import { - AUTOFILL_CARD_ID, - AUTOFILL_ID, - AUTOFILL_IDENTITY_ID, - COPY_IDENTIFIER_ID, - COPY_PASSWORD_ID, - COPY_USERNAME_ID, - COPY_VERIFICATION_CODE_ID, - CREATE_CARD_ID, - CREATE_IDENTITY_ID, - CREATE_LOGIN_ID, - GENERATE_PASSWORD_ID, - NOOP_COMMAND_SUFFIX, - ROOT_ID, - SEPARATOR_ID, -} from "../constants"; import { InitContextMenuItems } from "./abstractions/main-context-menu-handler"; diff --git a/apps/browser/src/autofill/content/autofill-init.spec.ts b/apps/browser/src/autofill/content/autofill-init.spec.ts index 65854c463e..8912a8c0ba 100644 --- a/apps/browser/src/autofill/content/autofill-init.spec.ts +++ b/apps/browser/src/autofill/content/autofill-init.spec.ts @@ -1,12 +1,13 @@ import { mock } from "jest-mock-extended"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import AutofillPageDetails from "../models/autofill-page-details"; import AutofillScript from "../models/autofill-script"; import AutofillOverlayContentService from "../services/autofill-overlay-content.service"; import { flushPromises, sendExtensionRuntimeMessage } from "../spec/testing-utils"; -import { AutofillOverlayVisibility, RedirectFocusDirection } from "../utils/autofill-overlay.enum"; +import { RedirectFocusDirection } from "../utils/autofill-overlay.enum"; import { AutofillExtensionMessage } from "./abstractions/autofill-init"; import AutofillInit from "./autofill-init"; diff --git a/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.spec.ts b/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.spec.ts index 5ab7988157..a7c11ea472 100644 --- a/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.spec.ts +++ b/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.spec.ts @@ -1,8 +1,8 @@ import { mock } from "jest-mock-extended"; +import { EVENTS } from "@bitwarden/common/autofill/constants"; import { ThemeType } from "@bitwarden/common/platform/enums"; -import { EVENTS } from "../../constants"; import { createPortSpyMock } from "../../spec/autofill-mocks"; import { flushPromises, diff --git a/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.ts b/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.ts index 4512070ff7..0ec7db131c 100644 --- a/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.ts +++ b/apps/browser/src/autofill/overlay/iframe-content/autofill-overlay-iframe.service.ts @@ -1,6 +1,6 @@ +import { EVENTS } from "@bitwarden/common/autofill/constants"; import { ThemeType } from "@bitwarden/common/platform/enums"; -import { EVENTS } from "../../constants"; import { setElementStyles } from "../../utils"; import { BackgroundPortMessageHandlers, diff --git a/apps/browser/src/autofill/overlay/pages/button/autofill-overlay-button.ts b/apps/browser/src/autofill/overlay/pages/button/autofill-overlay-button.ts index 12c4f2540f..0d68b37e2f 100644 --- a/apps/browser/src/autofill/overlay/pages/button/autofill-overlay-button.ts +++ b/apps/browser/src/autofill/overlay/pages/button/autofill-overlay-button.ts @@ -1,8 +1,8 @@ import "@webcomponents/custom-elements"; import "lit/polyfill-support.js"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EVENTS } from "@bitwarden/common/autofill/constants"; -import { EVENTS } from "../../../constants"; import { buildSvgDomElement } from "../../../utils"; import { logoIcon, logoLockedIcon } from "../../../utils/svg-icons"; import { diff --git a/apps/browser/src/autofill/overlay/pages/list/autofill-overlay-list.ts b/apps/browser/src/autofill/overlay/pages/list/autofill-overlay-list.ts index 6feb31533e..305a230e5c 100644 --- a/apps/browser/src/autofill/overlay/pages/list/autofill-overlay-list.ts +++ b/apps/browser/src/autofill/overlay/pages/list/autofill-overlay-list.ts @@ -1,9 +1,9 @@ import "@webcomponents/custom-elements"; import "lit/polyfill-support.js"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EVENTS } from "@bitwarden/common/autofill/constants"; import { OverlayCipherData } from "../../../background/abstractions/overlay.background"; -import { EVENTS } from "../../../constants"; import { buildSvgDomElement } from "../../../utils"; import { globeIcon, lockIcon, plusIcon, viewCipherIcon } from "../../../utils/svg-icons"; import { diff --git a/apps/browser/src/autofill/overlay/pages/shared/autofill-overlay-page-element.ts b/apps/browser/src/autofill/overlay/pages/shared/autofill-overlay-page-element.ts index d556e5d52a..34f115f401 100644 --- a/apps/browser/src/autofill/overlay/pages/shared/autofill-overlay-page-element.ts +++ b/apps/browser/src/autofill/overlay/pages/shared/autofill-overlay-page-element.ts @@ -1,4 +1,5 @@ -import { EVENTS } from "../../../constants"; +import { EVENTS } from "@bitwarden/common/autofill/constants"; + import { RedirectFocusDirection } from "../../../utils/autofill-overlay.enum"; import { AutofillOverlayPageElementWindowMessage, diff --git a/apps/browser/src/autofill/popup/settings/autofill.component.ts b/apps/browser/src/autofill/popup/settings/autofill.component.ts index 9e951e280d..857442d309 100644 --- a/apps/browser/src/autofill/popup/settings/autofill.component.ts +++ b/apps/browser/src/autofill/popup/settings/autofill.component.ts @@ -2,7 +2,9 @@ import { Component, OnInit } from "@angular/core"; import { firstValueFrom } from "rxjs"; import { SettingsService } from "@bitwarden/common/abstractions/settings.service"; +import { AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; +import { InlineMenuVisibilitySetting } from "@bitwarden/common/autofill/types"; 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"; @@ -12,10 +14,6 @@ import { DialogService } from "@bitwarden/components"; import { BrowserApi } from "../../../platform/browser/browser-api"; import { enableAccountSwitching } from "../../../platform/flags"; import { AutofillService } from "../../services/abstractions/autofill.service"; -import { - AutofillOverlayVisibility, - InlineMenuVisibilitySetting, -} from "../../utils/autofill-overlay.enum"; @Component({ selector: "app-autofill", diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts index e2bc787d3b..4b3641208b 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts @@ -1,17 +1,13 @@ import { mock } from "jest-mock-extended"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EVENTS, AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; -import { EVENTS } from "../constants"; import AutofillField from "../models/autofill-field"; import { createAutofillFieldMock } from "../spec/autofill-mocks"; import { flushPromises } from "../spec/testing-utils"; import { ElementWithOpId, FormFieldElement } from "../types"; -import { - AutofillOverlayElement, - AutofillOverlayVisibility, - RedirectFocusDirection, -} from "../utils/autofill-overlay.enum"; +import { AutofillOverlayElement, RedirectFocusDirection } from "../utils/autofill-overlay.enum"; import { AutoFillConstants } from "./autofill-constants"; import AutofillOverlayContentService from "./autofill-overlay-content.service"; diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts index 21baf9a3cd..efbc9732b6 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts @@ -3,9 +3,9 @@ import "lit/polyfill-support.js"; import { FocusableElement, tabbable } from "tabbable"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; +import { EVENTS, AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import { FocusedFieldData } from "../background/abstractions/overlay.background"; -import { EVENTS } from "../constants"; import AutofillField from "../models/autofill-field"; import AutofillOverlayButtonIframe from "../overlay/iframe-content/autofill-overlay-button-iframe"; import AutofillOverlayListIframe from "../overlay/iframe-content/autofill-overlay-list-iframe"; @@ -16,11 +16,7 @@ import { sendExtensionMessage, setElementStyles, } from "../utils"; -import { - AutofillOverlayElement, - RedirectFocusDirection, - AutofillOverlayVisibility, -} from "../utils/autofill-overlay.enum"; +import { AutofillOverlayElement, RedirectFocusDirection } from "../utils/autofill-overlay.enum"; import { AutofillOverlayContentService as AutofillOverlayContentServiceInterface, diff --git a/apps/browser/src/autofill/services/autofill.service.spec.ts b/apps/browser/src/autofill/services/autofill.service.spec.ts index 055e92a31c..4be338da8e 100644 --- a/apps/browser/src/autofill/services/autofill.service.spec.ts +++ b/apps/browser/src/autofill/services/autofill.service.spec.ts @@ -1,6 +1,7 @@ import { mock, mockReset } from "jest-mock-extended"; import { UserVerificationService } from "@bitwarden/common/auth/services/user-verification/user-verification.service"; +import { AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import { AutofillSettingsService } from "@bitwarden/common/autofill/services/autofill-settings.service"; import { EventType } from "@bitwarden/common/enums"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; @@ -37,7 +38,6 @@ import { createGenerateFillScriptOptionsMock, } from "../spec/autofill-mocks"; import { triggerTestFailure } from "../spec/testing-utils"; -import { AutofillOverlayVisibility } from "../utils/autofill-overlay.enum"; import { AutoFillOptions, diff --git a/apps/browser/src/autofill/services/autofill.service.ts b/apps/browser/src/autofill/services/autofill.service.ts index 80d8c4f77f..4357a9cb6c 100644 --- a/apps/browser/src/autofill/services/autofill.service.ts +++ b/apps/browser/src/autofill/services/autofill.service.ts @@ -4,6 +4,7 @@ import { EventCollectionService } from "@bitwarden/common/abstractions/event/eve import { SettingsService } from "@bitwarden/common/abstractions/settings.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; +import { InlineMenuVisibilitySetting } from "@bitwarden/common/autofill/types"; import { EventType } from "@bitwarden/common/enums"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; @@ -20,7 +21,6 @@ import { AutofillPort } from "../enums/autofill-port.enums"; import AutofillField from "../models/autofill-field"; import AutofillPageDetails from "../models/autofill-page-details"; import AutofillScript from "../models/autofill-script"; -import { InlineMenuVisibilitySetting } from "../utils/autofill-overlay.enum"; import { AutoFillOptions, diff --git a/apps/browser/src/autofill/services/insert-autofill-content.service.spec.ts b/apps/browser/src/autofill/services/insert-autofill-content.service.spec.ts index b137d2cd7c..c63d25c364 100644 --- a/apps/browser/src/autofill/services/insert-autofill-content.service.spec.ts +++ b/apps/browser/src/autofill/services/insert-autofill-content.service.spec.ts @@ -1,4 +1,5 @@ -import { EVENTS } from "../constants"; +import { EVENTS } from "@bitwarden/common/autofill/constants"; + import AutofillScript, { FillScript, FillScriptActions } from "../models/autofill-script"; import { FillableFormFieldElement, FormElementWithAttribute, FormFieldElement } from "../types"; diff --git a/apps/browser/src/autofill/services/insert-autofill-content.service.ts b/apps/browser/src/autofill/services/insert-autofill-content.service.ts index 32cf76f1a3..c5b763d77d 100644 --- a/apps/browser/src/autofill/services/insert-autofill-content.service.ts +++ b/apps/browser/src/autofill/services/insert-autofill-content.service.ts @@ -1,4 +1,5 @@ -import { EVENTS, TYPE_CHECK } from "../constants"; +import { EVENTS, TYPE_CHECK } from "@bitwarden/common/autofill/constants"; + import AutofillScript, { AutofillInsertActions, FillScript } from "../models/autofill-script"; import { FormFieldElement } from "../types"; import { diff --git a/apps/browser/src/autofill/utils/autofill-overlay.enum.ts b/apps/browser/src/autofill/utils/autofill-overlay.enum.ts index 92723f01f9..486d68f754 100644 --- a/apps/browser/src/autofill/utils/autofill-overlay.enum.ts +++ b/apps/browser/src/autofill/utils/autofill-overlay.enum.ts @@ -14,19 +14,4 @@ const RedirectFocusDirection = { Next: "next", } as const; -const AutofillOverlayVisibility = { - Off: 0, - OnButtonClick: 1, - OnFieldFocus: 2, -} as const; - -type InlineMenuVisibilitySetting = - (typeof AutofillOverlayVisibility)[keyof typeof AutofillOverlayVisibility]; - -export { - AutofillOverlayElement, - AutofillOverlayPort, - RedirectFocusDirection, - AutofillOverlayVisibility, - InlineMenuVisibilitySetting, -}; +export { AutofillOverlayElement, AutofillOverlayPort, RedirectFocusDirection }; diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts index fd735966fb..88d0e3f90a 100644 --- a/apps/browser/src/background/runtime.background.ts +++ b/apps/browser/src/background/runtime.background.ts @@ -1,4 +1,5 @@ import { NotificationsService } from "@bitwarden/common/abstractions/notifications.service"; +import { AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; import { ConfigServiceAbstraction } from "@bitwarden/common/platform/abstractions/config/config.service.abstraction"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -15,7 +16,6 @@ import { } from "../auth/popup/utils/auth-popout-window"; import { LockedVaultPendingNotificationsData } from "../autofill/background/abstractions/notification.background"; import { AutofillService } from "../autofill/services/abstractions/autofill.service"; -import { AutofillOverlayVisibility } from "../autofill/utils/autofill-overlay.enum"; import { BrowserApi } from "../platform/browser/browser-api"; import { BrowserStateService } from "../platform/services/abstractions/browser-state.service"; import { BrowserEnvironmentService } from "../platform/services/browser-environment.service"; diff --git a/apps/browser/src/popup/settings/options.component.ts b/apps/browser/src/popup/settings/options.component.ts index d798714b5f..ac416a3493 100644 --- a/apps/browser/src/popup/settings/options.component.ts +++ b/apps/browser/src/popup/settings/options.component.ts @@ -6,6 +6,7 @@ import { SettingsService } from "@bitwarden/common/abstractions/settings.service import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; import { BadgeSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/badge-settings.service"; import { UserNotificationSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/user-notification-settings.service"; +import { ClearClipboardDelaySetting } from "@bitwarden/common/autofill/types"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; @@ -13,7 +14,6 @@ import { ThemeType } from "@bitwarden/common/platform/enums"; import { VaultSettingsService } from "@bitwarden/common/vault/abstractions/vault-settings/vault-settings.service"; import { UriMatchType } from "@bitwarden/common/vault/enums"; -import { ClearClipboardDelaySetting } from "../../../../../apps/browser/src/autofill/constants"; import { enableAccountSwitching } from "../../platform/flags"; @Component({ diff --git a/apps/browser/src/vault/popup/components/vault/current-tab.component.ts b/apps/browser/src/vault/popup/components/vault/current-tab.component.ts index 5bf770a218..d1fcb5d439 100644 --- a/apps/browser/src/vault/popup/components/vault/current-tab.component.ts +++ b/apps/browser/src/vault/popup/components/vault/current-tab.component.ts @@ -5,6 +5,7 @@ import { debounceTime, takeUntil } from "rxjs/operators"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; +import { AutofillOverlayVisibility } from "@bitwarden/common/autofill/constants"; import { AutofillSettingsServiceAbstraction } from "@bitwarden/common/autofill/services/autofill-settings.service"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; @@ -19,7 +20,6 @@ import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; import { PasswordRepromptService } from "@bitwarden/vault"; import { AutofillService } from "../../../../autofill/services/abstractions/autofill.service"; -import { AutofillOverlayVisibility } from "../../../../autofill/utils/autofill-overlay.enum"; import { BrowserApi } from "../../../../platform/browser/browser-api"; import BrowserPopupUtils from "../../../../platform/popup/browser-popup-utils"; import { VaultFilterService } from "../../../services/vault-filter.service"; @@ -123,15 +123,32 @@ export class CurrentTabComponent implements OnInit, OnDestroy { .pipe(debounceTime(500), takeUntil(this.destroy$)) .subscribe(() => this.searchVault()); - // activate autofill on page load if policy is set - if (await this.getActivateAutofillOnPageLoadFromPolicy()) { + const autofillOnPageLoadOrgPolicy = await firstValueFrom( + this.autofillSettingsService.activateAutofillOnPageLoadFromPolicy$, + ); + const autofillOnPageLoadPolicyToastHasDisplayed = await firstValueFrom( + this.autofillSettingsService.autofillOnPageLoadPolicyToastHasDisplayed$, + ); + + // If the org "autofill on page load" policy is set, set the user setting to match it + // @TODO override user setting instead of overwriting + if (autofillOnPageLoadOrgPolicy === true) { await this.autofillSettingsService.setAutofillOnPageLoad(true); - await this.autofillSettingsService.setActivateAutofillOnPageLoadFromPolicy(false); - this.platformUtilsService.showToast( - "info", - null, - this.i18nService.t("autofillPageLoadPolicyActivated"), - ); + + if (!autofillOnPageLoadPolicyToastHasDisplayed) { + this.platformUtilsService.showToast( + "info", + null, + this.i18nService.t("autofillPageLoadPolicyActivated"), + ); + + await this.autofillSettingsService.setAutofillOnPageLoadPolicyToastHasDisplayed(true); + } + } + + // If the org policy is ever disabled after being enabled, reset the toast notification + if (!autofillOnPageLoadOrgPolicy && autofillOnPageLoadPolicyToastHasDisplayed) { + await this.autofillSettingsService.setAutofillOnPageLoadPolicyToastHasDisplayed(false); } } @@ -303,10 +320,6 @@ export class CurrentTabComponent implements OnInit, OnDestroy { this.router.navigate(["autofill"]); } - private async getActivateAutofillOnPageLoadFromPolicy(): Promise { - return await firstValueFrom(this.autofillSettingsService.activateAutofillOnPageLoadFromPolicy$); - } - async dismissCallout() { await this.autofillSettingsService.setAutofillOnPageLoadCalloutIsDismissed(true); this.showHowToAutofill = false; diff --git a/apps/browser/tsconfig.json b/apps/browser/tsconfig.json index 442e153ef2..a4176be0b0 100644 --- a/apps/browser/tsconfig.json +++ b/apps/browser/tsconfig.json @@ -31,5 +31,9 @@ "strictTemplates": true, "preserveWhitespaces": true }, - "include": ["src", "../../libs/common/src/platform/services/**/*.worker.ts"] + "include": [ + "src", + "../../libs/common/src/platform/services/**/*.worker.ts", + "../../libs/common/src/autofill/constants" + ] } diff --git a/apps/browser/src/autofill/constants.ts b/libs/common/src/autofill/constants/index.ts similarity index 93% rename from apps/browser/src/autofill/constants.ts rename to libs/common/src/autofill/constants/index.ts index da4bae0183..6d5af41a17 100644 --- a/apps/browser/src/autofill/constants.ts +++ b/libs/common/src/autofill/constants/index.ts @@ -32,9 +32,6 @@ export const ClearClipboardDelay = { FiveMinutes: 300, } as const; -export type ClearClipboardDelaySetting = - (typeof ClearClipboardDelay)[keyof typeof ClearClipboardDelay]; - /* Context Menu item Ids */ export const AUTOFILL_CARD_ID = "autofill-card"; export const AUTOFILL_ID = "autofill"; @@ -53,3 +50,9 @@ export const ROOT_ID = "root"; export const SEPARATOR_ID = "separator"; export const NOTIFICATION_BAR_LIFESPAN_MS = 150000; // 150 seconds + +export const AutofillOverlayVisibility = { + Off: 0, + OnButtonClick: 1, + OnFieldFocus: 2, +} as const; diff --git a/libs/common/src/autofill/services/autofill-settings.service.ts b/libs/common/src/autofill/services/autofill-settings.service.ts index 7311617957..7a06eed6fa 100644 --- a/libs/common/src/autofill/services/autofill-settings.service.ts +++ b/libs/common/src/autofill/services/autofill-settings.service.ts @@ -1,16 +1,7 @@ -import { filter, switchMap, tap, firstValueFrom, map, Observable } from "rxjs"; +import { map, Observable } from "rxjs"; -import { - ClearClipboardDelaySetting, - ClearClipboardDelay, -} from "../../../../../apps/browser/src/autofill/constants"; -import { - AutofillOverlayVisibility, - InlineMenuVisibilitySetting, -} from "../../../../../apps/browser/src/autofill/utils/autofill-overlay.enum"; import { PolicyService } from "../../admin-console/abstractions/policy/policy.service.abstraction"; -import { PolicyType } from "../../admin-console/enums/index"; -import { Policy } from "../../admin-console/models/domain/policy"; +import { PolicyType } from "../../admin-console/enums"; import { AUTOFILL_SETTINGS_DISK, AUTOFILL_SETTINGS_DISK_LOCAL, @@ -19,6 +10,8 @@ import { KeyDefinition, StateProvider, } from "../../platform/state"; +import { ClearClipboardDelay, AutofillOverlayVisibility } from "../constants"; +import { ClearClipboardDelaySetting, InlineMenuVisibilitySetting } from "../types"; const AUTOFILL_ON_PAGE_LOAD = new KeyDefinition(AUTOFILL_SETTINGS_DISK, "autofillOnPageLoad", { deserializer: (value: boolean) => value ?? false, @@ -32,10 +25,6 @@ const AUTOFILL_ON_PAGE_LOAD_DEFAULT = new KeyDefinition( }, ); -const AUTO_COPY_TOTP = new KeyDefinition(AUTOFILL_SETTINGS_DISK, "autoCopyTotp", { - deserializer: (value: boolean) => value ?? false, -}); - const AUTOFILL_ON_PAGE_LOAD_CALLOUT_DISMISSED = new KeyDefinition( AUTOFILL_SETTINGS_DISK, "autofillOnPageLoadCalloutIsDismissed", @@ -44,14 +33,18 @@ const AUTOFILL_ON_PAGE_LOAD_CALLOUT_DISMISSED = new KeyDefinition( }, ); -const ACTIVATE_AUTOFILL_ON_PAGE_LOAD_FROM_POLICY = new KeyDefinition( - AUTOFILL_SETTINGS_DISK_LOCAL, - "activateAutofillOnPageLoadFromPolicy", +const AUTOFILL_ON_PAGE_LOAD_POLICY_TOAST_HAS_DISPLAYED = new KeyDefinition( + AUTOFILL_SETTINGS_DISK, + "autofillOnPageLoadPolicyToastHasDisplayed", { deserializer: (value: boolean) => value ?? false, }, ); +const AUTO_COPY_TOTP = new KeyDefinition(AUTOFILL_SETTINGS_DISK, "autoCopyTotp", { + deserializer: (value: boolean) => value ?? false, +}); + const INLINE_MENU_VISIBILITY = new KeyDefinition( AUTOFILL_SETTINGS_DISK_LOCAL, "inlineMenuVisibility", @@ -73,17 +66,17 @@ export abstract class AutofillSettingsServiceAbstraction { setAutofillOnPageLoad: (newValue: boolean) => Promise; autofillOnPageLoadDefault$: Observable; setAutofillOnPageLoadDefault: (newValue: boolean) => Promise; - autoCopyTotp$: Observable; - setAutoCopyTotp: (newValue: boolean) => Promise; autofillOnPageLoadCalloutIsDismissed$: Observable; setAutofillOnPageLoadCalloutIsDismissed: (newValue: boolean) => Promise; activateAutofillOnPageLoadFromPolicy$: Observable; - setActivateAutofillOnPageLoadFromPolicy: (newValue: boolean) => Promise; + setAutofillOnPageLoadPolicyToastHasDisplayed: (newValue: boolean) => Promise; + autofillOnPageLoadPolicyToastHasDisplayed$: Observable; + autoCopyTotp$: Observable; + setAutoCopyTotp: (newValue: boolean) => Promise; inlineMenuVisibility$: Observable; setInlineMenuVisibility: (newValue: InlineMenuVisibilitySetting) => Promise; clearClipboardDelay$: Observable; setClearClipboardDelay: (newValue: ClearClipboardDelaySetting) => Promise; - handleActivateAutofillPolicy: (policies: Observable) => Observable; } export class AutofillSettingsService implements AutofillSettingsServiceAbstraction { @@ -93,15 +86,17 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti private autofillOnPageLoadDefaultState: ActiveUserState; readonly autofillOnPageLoadDefault$: Observable; - private autoCopyTotpState: ActiveUserState; - readonly autoCopyTotp$: Observable; - private autofillOnPageLoadCalloutIsDismissedState: ActiveUserState; readonly autofillOnPageLoadCalloutIsDismissed$: Observable; - private activateAutofillOnPageLoadFromPolicyState: ActiveUserState; readonly activateAutofillOnPageLoadFromPolicy$: Observable; + private autofillOnPageLoadPolicyToastHasDisplayedState: ActiveUserState; + readonly autofillOnPageLoadPolicyToastHasDisplayed$: Observable; + + private autoCopyTotpState: ActiveUserState; + readonly autoCopyTotp$: Observable; + private inlineMenuVisibilityState: GlobalState; readonly inlineMenuVisibility$: Observable; @@ -110,7 +105,7 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti constructor( private stateProvider: StateProvider, - policyService: PolicyService, + private policyService: PolicyService, ) { this.autofillOnPageLoadState = this.stateProvider.getActive(AUTOFILL_ON_PAGE_LOAD); this.autofillOnPageLoad$ = this.autofillOnPageLoadState.state$.pipe(map((x) => x ?? false)); @@ -122,20 +117,25 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti map((x) => x ?? true), ); - this.autoCopyTotpState = this.stateProvider.getActive(AUTO_COPY_TOTP); - this.autoCopyTotp$ = this.autoCopyTotpState.state$.pipe(map((x) => x ?? false)); - this.autofillOnPageLoadCalloutIsDismissedState = this.stateProvider.getActive( AUTOFILL_ON_PAGE_LOAD_CALLOUT_DISMISSED, ); this.autofillOnPageLoadCalloutIsDismissed$ = this.autofillOnPageLoadCalloutIsDismissedState.state$.pipe(map((x) => x ?? false)); - this.activateAutofillOnPageLoadFromPolicyState = this.stateProvider.getActive( - ACTIVATE_AUTOFILL_ON_PAGE_LOAD_FROM_POLICY, + this.activateAutofillOnPageLoadFromPolicy$ = this.policyService.policyAppliesToActiveUser$( + PolicyType.ActivateAutofill, ); - this.activateAutofillOnPageLoadFromPolicy$ = - this.activateAutofillOnPageLoadFromPolicyState.state$.pipe(map((x) => x ?? false)); + + this.autofillOnPageLoadPolicyToastHasDisplayedState = this.stateProvider.getActive( + AUTOFILL_ON_PAGE_LOAD_POLICY_TOAST_HAS_DISPLAYED, + ); + this.autofillOnPageLoadPolicyToastHasDisplayed$ = this.autofillOnPageLoadState.state$.pipe( + map((x) => x ?? false), + ); + + this.autoCopyTotpState = this.stateProvider.getActive(AUTO_COPY_TOTP); + this.autoCopyTotp$ = this.autoCopyTotpState.state$.pipe(map((x) => x ?? false)); this.inlineMenuVisibilityState = this.stateProvider.getGlobal(INLINE_MENU_VISIBILITY); this.inlineMenuVisibility$ = this.inlineMenuVisibilityState.state$.pipe( @@ -146,8 +146,6 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti this.clearClipboardDelay$ = this.clearClipboardDelayState.state$.pipe( map((x) => x ?? ClearClipboardDelay.Never), ); - - policyService.policies$.pipe(this.handleActivateAutofillPolicy.bind(this)).subscribe(); } async setAutofillOnPageLoad(newValue: boolean): Promise { @@ -158,16 +156,16 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti await this.autofillOnPageLoadDefaultState.update(() => newValue); } - async setAutoCopyTotp(newValue: boolean): Promise { - await this.autoCopyTotpState.update(() => newValue); - } - async setAutofillOnPageLoadCalloutIsDismissed(newValue: boolean): Promise { await this.autofillOnPageLoadCalloutIsDismissedState.update(() => newValue); } - async setActivateAutofillOnPageLoadFromPolicy(newValue: boolean): Promise { - await this.activateAutofillOnPageLoadFromPolicyState.update(() => newValue); + async setAutofillOnPageLoadPolicyToastHasDisplayed(newValue: boolean): Promise { + await this.autofillOnPageLoadPolicyToastHasDisplayedState.update(() => newValue); + } + + async setAutoCopyTotp(newValue: boolean): Promise { + await this.autoCopyTotpState.update(() => newValue); } async setInlineMenuVisibility(newValue: InlineMenuVisibilitySetting): Promise { @@ -177,24 +175,4 @@ export class AutofillSettingsService implements AutofillSettingsServiceAbstracti async setClearClipboardDelay(newValue: ClearClipboardDelaySetting): Promise { await this.clearClipboardDelayState.update(() => newValue); } - - /** - * If the ActivateAutofill policy is enabled, save a flag indicating if we need to - * enable Autofill on page load. - */ - handleActivateAutofillPolicy(policies$: Observable): Observable { - return policies$.pipe( - map((policies) => policies.find((p) => p.type == PolicyType.ActivateAutofill && p.enabled)), - filter((p) => p != null), - switchMap(async (_) => [ - await firstValueFrom(this.activateAutofillOnPageLoadFromPolicy$), - await firstValueFrom(this.autofillOnPageLoad$), - ]), - tap(([activated, autofillEnabled]) => { - if (activated === undefined) { - void this.setActivateAutofillOnPageLoadFromPolicy(!autofillEnabled); - } - }), - ); - } } diff --git a/libs/common/src/autofill/types/index.ts b/libs/common/src/autofill/types/index.ts new file mode 100644 index 0000000000..be5d98f4e0 --- /dev/null +++ b/libs/common/src/autofill/types/index.ts @@ -0,0 +1,7 @@ +import { ClearClipboardDelay, AutofillOverlayVisibility } from "../constants"; + +export type ClearClipboardDelaySetting = + (typeof ClearClipboardDelay)[keyof typeof ClearClipboardDelay]; + +export type InlineMenuVisibilitySetting = + (typeof AutofillOverlayVisibility)[keyof typeof AutofillOverlayVisibility]; diff --git a/libs/common/src/state-migrations/migrations/18-move-autofill-settings-to-state-providers.ts b/libs/common/src/state-migrations/migrations/18-move-autofill-settings-to-state-providers.ts index bbd09ae83d..b70e89f9c0 100644 --- a/libs/common/src/state-migrations/migrations/18-move-autofill-settings-to-state-providers.ts +++ b/libs/common/src/state-migrations/migrations/18-move-autofill-settings-to-state-providers.ts @@ -1,7 +1,15 @@ -import { InlineMenuVisibilitySetting } from "../../../../../apps/browser/src/autofill/utils/autofill-overlay.enum"; import { StateDefinitionLike, MigrationHelper } from "../migration-helper"; import { Migrator } from "../migrator"; +const AutofillOverlayVisibility = { + Off: 0, + OnButtonClick: 1, + OnFieldFocus: 2, +} as const; + +type InlineMenuVisibilitySetting = + (typeof AutofillOverlayVisibility)[keyof typeof AutofillOverlayVisibility]; + type ExpectedAccountState = { settings?: { autoFillOnPageLoadDefault?: boolean; diff --git a/libs/common/src/state-migrations/migrations/25-move-clear-clipboard-to-autofill-settings-state-provider.ts b/libs/common/src/state-migrations/migrations/25-move-clear-clipboard-to-autofill-settings-state-provider.ts index fde7ea9037..31c7bc25c7 100644 --- a/libs/common/src/state-migrations/migrations/25-move-clear-clipboard-to-autofill-settings-state-provider.ts +++ b/libs/common/src/state-migrations/migrations/25-move-clear-clipboard-to-autofill-settings-state-provider.ts @@ -1,7 +1,18 @@ -import { ClearClipboardDelaySetting } from "../../../../../apps/browser/src/autofill/constants"; import { StateDefinitionLike, MigrationHelper } from "../migration-helper"; import { Migrator } from "../migrator"; +const ClearClipboardDelay = { + Never: null as null, + TenSeconds: 10, + TwentySeconds: 20, + ThirtySeconds: 30, + OneMinute: 60, + TwoMinutes: 120, + FiveMinutes: 300, +} as const; + +type ClearClipboardDelaySetting = (typeof ClearClipboardDelay)[keyof typeof ClearClipboardDelay]; + type ExpectedAccountState = { settings?: { clearClipboard?: ClearClipboardDelaySetting; From 1259890f1713953b0bfe7ceaaac8c18a345abbf4 Mon Sep 17 00:00:00 2001 From: Joseph Flinn <58369717+joseph-flinn@users.noreply.github.com> Date: Wed, 6 Mar 2024 20:07:54 -0800 Subject: [PATCH 04/10] Update Deploy Web Inputs (#8236) * Switch from bool to string comparison * Switching to a simpler boolean logic for file deletion --- .github/workflows/deploy-web.yml | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/.github/workflows/deploy-web.yml b/.github/workflows/deploy-web.yml index 626c431f7b..2d784652a5 100644 --- a/.github/workflows/deploy-web.yml +++ b/.github/workflows/deploy-web.yml @@ -19,14 +19,14 @@ on: description: "Branch or Tag name to deploy (examples: 'main', 'feature/sm', 'web-v2023.12.0')" type: string default: main - invert-default-sync-delete-destination-files-value: - description: "Invert the default sync-delete-destination-files value" + force-delete-destination: + description: "Delete remote files that are not found locally" type: boolean default: false debug: description: "Debug mode" type: boolean - default: false + default: true workflow_call: inputs: @@ -38,8 +38,8 @@ on: description: "Branch or Tag name to deploy (examples: 'main', 'feature/sm', 'web-v2023.12.0')" type: string default: main - invert-default-sync-delete-destination-files-value: - description: "Invert the default sync-delete-destination-files value" + force-delete-destination: + description: "Delete remote files that are not found locally" type: boolean default: false debug: @@ -71,14 +71,6 @@ jobs: echo "configuring the Web deploy for ${{ inputs.environment }}" echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT - # Invert the default value for sync-delete-destination-files - if [ ${{ inputs.invert-default-sync-delete-destination-files-value }} ]; then - echo "sync-delete-destination-files=true" >> $GITHUB_OUTPUT - else - # This is the default value for USQA, EUQA, USPROD, and EUPROD - echo "sync-delete-destination-files=false" >> $GITHUB_OUTPUT - fi - case ${{ inputs.environment }} in "USQA") echo "azure-login-creds=AZURE_KV_US_QA_SERVICE_PRINCIPAL" >> $GITHUB_OUTPUT @@ -114,13 +106,6 @@ jobs: echo "environment-artifact=web-*-cloud-usdev.zip" >> $GITHUB_OUTPUT echo "environment-name=Web Vault - US Development Cloud" >> $GITHUB_OUTPUT echo "environment-url=http://vault.$ENV_NAME_LOWER.bitwarden.pw" >> $GITHUB_OUTPUT - - if [ ${{ inputs.invert-default-sync-delete-destination-files-value }} ]; then - echo "sync-delete-destination-files=false" >> $GITHUB_OUTPUT - else - # This is the default value for USDEV - echo "sync-delete-destination-files=true" >> $GITHUB_OUTPUT - fi ;; esac # Set the sync utility to use for deployment to the environment (az-sync or azcopy) @@ -285,7 +270,7 @@ jobs: --source "./build" \ --container '$web' \ --connection-string "${{ steps.retrieve-secrets-az-sync.outputs.sa-bitwarden-web-vault-dev-key-temp }}" \ - --delete-destination=${{ needs.setup.outputs.sync-delete-destination-files }} + --delete-destination=${{ inputs.force-delete-destination }} - name: Sync to Azure Storage Account using azcopy if: ${{ needs.setup.outputs.sync-utility == 'azcopy' }} @@ -297,7 +282,7 @@ jobs: AZCOPY_TENANT_ID: ${{ steps.retrieve-secrets-azcopy.outputs.sp-bitwarden-web-vault-tenant }} run: | azcopy sync ./build 'https://${{ steps.retrieve-secrets-azcopy.outputs.sa-bitwarden-web-vault-name }}.blob.core.windows.net/$web/' \ - --delete-destination=${{ needs.setup.outputs.sync-delete-destination-files }} --compare-hash="MD5" + --delete-destination=${{ inputs.force-delete-destination }} --compare-hash="MD5" - name: Debug sync logs if: ${{ inputs.debug }} From a01b473b57c8c082763d4c37b9a0e30c9df2b45e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:18:00 +0100 Subject: [PATCH 05/10] [deps] Platform: Update Rust crate windows to v0.54.0 (#8195) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- apps/desktop/desktop_native/Cargo.lock | 70 +++++++++++++++----------- apps/desktop/desktop_native/Cargo.toml | 2 +- 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/apps/desktop/desktop_native/Cargo.lock b/apps/desktop/desktop_native/Cargo.lock index c69f03c23c..8905ddabf8 100644 --- a/apps/desktop/desktop_native/Cargo.lock +++ b/apps/desktop/desktop_native/Cargo.lock @@ -1607,21 +1607,31 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-targets 0.52.0", + "windows-result", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-result" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64" +dependencies = [ + "windows-targets 0.52.4", ] [[package]] @@ -1639,7 +1649,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.4", ] [[package]] @@ -1659,17 +1669,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -1680,9 +1690,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" @@ -1692,9 +1702,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" @@ -1704,9 +1714,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" @@ -1716,9 +1726,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" @@ -1728,9 +1738,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" @@ -1740,9 +1750,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" @@ -1752,9 +1762,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winnow" diff --git a/apps/desktop/desktop_native/Cargo.toml b/apps/desktop/desktop_native/Cargo.toml index a0b5eb5560..5bb0b0831b 100644 --- a/apps/desktop/desktop_native/Cargo.toml +++ b/apps/desktop/desktop_native/Cargo.toml @@ -33,7 +33,7 @@ napi-build = "=2.0.1" [target.'cfg(windows)'.dependencies] widestring = "=1.0.2" -windows = { version = "=0.52.0", features = [ +windows = { version = "=0.54.0", features = [ "Foundation", "Security_Credentials_UI", "Security_Cryptography", From fe850c9fe55c3b320b01af0010761e1c7c1e84ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:28:03 +0100 Subject: [PATCH 06/10] [deps] Platform: Update @types/chrome to v0.0.262 (#8181) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2e201684d..bfcf61973b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,7 +94,7 @@ "@storybook/jest": "0.2.3", "@storybook/testing-library": "0.2.2", "@types/argon2-browser": "1.18.1", - "@types/chrome": "0.0.243", + "@types/chrome": "0.0.262", "@types/duo_web_sdk": "2.7.1", "@types/firefox-webext-browser": "111.0.1", "@types/inquirer": "8.2.10", @@ -10867,9 +10867,9 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.243", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.243.tgz", - "integrity": "sha512-4PHv0kxxxpZFHWPBiJJ9TWH8kbx0567j1b2djnhpJjpiSGNI7UKkz7dSEECBtQ0B3N5nQTMwSB/5IopkWGAbEA==", + "version": "0.0.262", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.262.tgz", + "integrity": "sha512-TOoj3dqSYE13PD2fRuMQ6X6pggEvL9rRk/yOYOyWE6sfqRWxsJm4VoVm+wr9pkr4Sht/M5t7FFL4vXato8d1gA==", "dev": true, "dependencies": { "@types/filesystem": "*", diff --git a/package.json b/package.json index ea1f7d318f..854aff73bb 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@storybook/jest": "0.2.3", "@storybook/testing-library": "0.2.2", "@types/argon2-browser": "1.18.1", - "@types/chrome": "0.0.243", + "@types/chrome": "0.0.262", "@types/duo_web_sdk": "2.7.1", "@types/firefox-webext-browser": "111.0.1", "@types/inquirer": "8.2.10", From f3a2127f9ad3b20ea7e4954527c5a0aa447ad155 Mon Sep 17 00:00:00 2001 From: Bitwarden DevOps <106330231+bitwarden-devops-bot@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:13:20 +0100 Subject: [PATCH 07/10] Bumped desktop version to 2024.2.2 (#8241) --- apps/desktop/package.json | 2 +- apps/desktop/src/package-lock.json | 4 ++-- apps/desktop/src/package.json | 2 +- package-lock.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index abc4263faf..ad26e17699 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@bitwarden/desktop", "description": "A secure and free password manager for all of your devices.", - "version": "2024.2.1", + "version": "2024.2.2", "keywords": [ "bitwarden", "password", diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json index 24c14467a5..663ed211cd 100644 --- a/apps/desktop/src/package-lock.json +++ b/apps/desktop/src/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitwarden/desktop", - "version": "2024.2.1", + "version": "2024.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bitwarden/desktop", - "version": "2024.2.1", + "version": "2024.2.2", "license": "GPL-3.0", "dependencies": { "@bitwarden/desktop-native": "file:../desktop_native" diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json index 082e79935e..68d1fbe112 100644 --- a/apps/desktop/src/package.json +++ b/apps/desktop/src/package.json @@ -2,7 +2,7 @@ "name": "@bitwarden/desktop", "productName": "Bitwarden", "description": "A secure and free password manager for all of your devices.", - "version": "2024.2.1", + "version": "2024.2.2", "author": "Bitwarden Inc. (https://bitwarden.com)", "homepage": "https://bitwarden.com", "license": "GPL-3.0", diff --git a/package-lock.json b/package-lock.json index bfcf61973b..3bf0136e7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -234,7 +234,7 @@ }, "apps/desktop": { "name": "@bitwarden/desktop", - "version": "2024.2.1", + "version": "2024.2.2", "hasInstallScript": true, "license": "GPL-3.0" }, From 67c1791032e38361619dd743e11845010d9ce122 Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Thu, 7 Mar 2024 09:20:28 -0500 Subject: [PATCH 08/10] [AC-2102] [AC-2263] [AC-2264] Consolidated Secrets Manager Trial Updates (#8202) * AC-2102: Point 'Get Started' button to SM * AC-2263/AC-2264: Update SM trial content based on org type * Fix copy misses --- .../secrets-manager-content.component.html | 21 ++++------ .../secrets-manager-content.component.ts | 41 +++++++++++++++++++ ...-manager-trial-free-stepper.component.html | 4 +- ...ts-manager-trial-free-stepper.component.ts | 8 +++- ...-manager-trial-paid-stepper.component.html | 4 +- 5 files changed, 60 insertions(+), 18 deletions(-) diff --git a/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.html b/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.html index 5624618511..569ff91f62 100644 --- a/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.html +++ b/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.html @@ -1,33 +1,30 @@

{{ header }}

- Secure your business with a simpler, faster way to secure and manage secrets + {{ headline }}

    -
  • Unlimited secrets, users, and projects
  • -
  • Simple and transparent pricing
  • -
  • End-to-end encryption
  • +
  • + {{ primaryPoint }} +
-

Limited time offer

+

{{ calloutHeadline }}

    -
  • - Sign up today and receive a complimentary 12-month subscription to Bitwarden Password - Manager +
  • + {{ callout }}
  • -
  • Experience complete security across your organization
  • -
  • Secure all your sensitive credentials, from passwords to machine secrets
diff --git a/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.ts b/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.ts index d190623ae2..20e6c2f849 100644 --- a/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.ts +++ b/apps/web/src/app/auth/trial-initiation/content/secrets-manager-content.component.ts @@ -8,6 +8,38 @@ import { Subject, takeUntil } from "rxjs"; }) export class SecretsManagerContentComponent implements OnInit, OnDestroy { header: string; + headline = + "A simpler, faster way to secure and automate secrets across code and infrastructure deployments"; + primaryPoints: string[]; + calloutHeadline: string; + callouts: string[]; + + private paidPrimaryPoints = [ + "Unlimited secrets, users, and projects", + "Simple and transparent pricing", + "Zero-knowledge, end-to-end encryption", + ]; + + private paidCalloutHeadline = "Limited time offer"; + + private paidCallouts = [ + "Sign up today and receive a complimentary 12-month subscription to Bitwarden Password Manager", + "Experience complete security across your organization", + "Secure all your sensitive credentials, from user applications to machine secrets", + ]; + + private freePrimaryPoints = [ + "Unlimited secrets", + "Simple and transparent pricing", + "Zero-knowledge, end-to-end encryption", + ]; + + private freeCalloutHeadline = "Go beyond developer security!"; + + private freeCallouts = [ + "Your Bitwarden account will also grant complimentary access to Bitwarden Password Manager", + "Extend end-to-end encryption to your personal passwords, addresses, credit cards and notes", + ]; private destroy$ = new Subject(); @@ -23,13 +55,22 @@ export class SecretsManagerContentComponent implements OnInit, OnDestroy { switch (queryParameters.org) { case "enterprise": this.header = "Secrets Manager for Enterprise"; + this.primaryPoints = this.paidPrimaryPoints; + this.calloutHeadline = this.paidCalloutHeadline; + this.callouts = this.paidCallouts; break; case "free": this.header = "Bitwarden Secrets Manager"; + this.primaryPoints = this.freePrimaryPoints; + this.calloutHeadline = this.freeCalloutHeadline; + this.callouts = this.freeCallouts; break; case "teams": case "teamsStarter": this.header = "Secrets Manager for Teams"; + this.primaryPoints = this.paidPrimaryPoints; + this.calloutHeadline = this.paidCalloutHeadline; + this.callouts = this.paidCallouts; break; } }); diff --git a/apps/web/src/app/auth/trial-initiation/secrets-manager/secrets-manager-trial-free-stepper.component.html b/apps/web/src/app/auth/trial-initiation/secrets-manager/secrets-manager-trial-free-stepper.component.html index ed2ed90bab..0b6e44d4eb 100644 --- a/apps/web/src/app/auth/trial-initiation/secrets-manager/secrets-manager-trial-free-stepper.component.html +++ b/apps/web/src/app/auth/trial-initiation/secrets-manager/secrets-manager-trial-free-stepper.component.html @@ -41,14 +41,14 @@
-