diff --git a/.github/workflows/build-beta.yml b/.github/workflows/build-beta.yml index ed416fa59..7d43f786d 100644 --- a/.github/workflows/build-beta.yml +++ b/.github/workflows/build-beta.yml @@ -24,7 +24,7 @@ jobs: hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: submodules: 'true' @@ -80,7 +80,7 @@ jobs: echo "GitHub event: $GITHUB_EVENT" - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: fetch-depth: 0 ref: ${{ inputs.ref }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcfa0dd1c..879cae375 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Set up CLOC run: | @@ -40,7 +40,7 @@ jobs: hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: submodules: 'true' @@ -109,7 +109,7 @@ jobs: echo "GitHub event: $GITHUB_EVENT" - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: fetch-depth: 0 @@ -335,7 +335,7 @@ jobs: echo "GitHub event: $GITHUB_EVENT" - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Login to Azure - CI Subscription uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -470,7 +470,7 @@ jobs: echo "GitHub event: $GITHUB_EVENT" - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: submodules: 'true' @@ -718,7 +718,7 @@ jobs: _CROWDIN_PROJECT_ID: "269690" steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Login to Azure - CI Subscription uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -733,7 +733,7 @@ jobs: secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@8c663f791efc0498270241e9923a8853c99a3a8e # v1.20.3 + uses: crowdin/github-action@30849777a3cba6ee9a09e24e195272b8287a0a5b # v1.20.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} diff --git a/.github/workflows/cleanup-rc-branch.yml b/.github/workflows/cleanup-rc-branch.yml index 81e661f04..9fdd9e182 100644 --- a/.github/workflows/cleanup-rc-branch.yml +++ b/.github/workflows/cleanup-rc-branch.yml @@ -24,7 +24,7 @@ jobs: secrets: "github-pat-bitwarden-devops-bot-repo-scope" - name: Checkout main - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: ref: main token: ${{ steps.retrieve-bot-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index 638276c75..9b1a5ab5f 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -15,7 +15,7 @@ jobs: _CROWDIN_PROJECT_ID: "269690" steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Login to Azure - CI Subscription uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 @@ -30,7 +30,7 @@ jobs: secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase" - name: Download translations - uses: crowdin/github-action@8c663f791efc0498270241e9923a8853c99a3a8e # v1.20.3 + uses: crowdin/github-action@30849777a3cba6ee9a09e24e195272b8287a0a5b # v1.20.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 89af6fd62..9f79b726f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: fi - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Check Release Version id: version @@ -65,7 +65,6 @@ jobs: description: 'Deployment ${{ steps.version.outputs.version }} from branch ${{ steps.branch.outputs.branch-name }}' task: release - - name: Download all artifacts if: ${{ inputs.release_type != 'Dry Run' }} uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 @@ -126,7 +125,7 @@ jobs: if: inputs.fdroid_publish steps: - name: Checkout repo - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - name: Download F-Droid .apk artifact if: ${{ inputs.release_type != 'Dry Run' }} @@ -152,9 +151,7 @@ jobs: node-version: '16.x' - name: Set up F-Droid server - run: | - sudo apt-get -qq update - sudo apt-get -qqy install --no-install-recommends fdroidserver wget + run: pip install git+https://gitlab.com/fdroid/fdroidserver.git - name: Set up Git credentials env: @@ -167,9 +164,10 @@ jobs: - name: Print environment run: | - node --version - npm --version - git --version + echo "Node Version: $(node --version)" + echo "NPM Version: $(npm --version)" + echo "Git Version: $(git --version)" + echo "F-Droid Server Version: $(fdroid --version)" echo "GitHub ref: $GITHUB_REF" echo "GitHub event: $GITHUB_EVENT" @@ -194,27 +192,30 @@ jobs: env: FDROID_STORE_KEYSTORE_PASSWORD: ${{ secrets.FDROID_STORE_KEYSTORE_PASSWORD }} run: | - cd $GITHUB_WORKSPACE + # Create required directories. mkdir dist - cp CNAME ./dist - cd store - chmod 600 fdroid/config.py fdroid/keystore.jks - mkdir -p temp/fdroid + mkdir -p store/temp/fdroid + mkdir -p store/fdroid/repo + + # Configure F-Droid server. + cp CNAME dist/ + chmod 600 store/fdroid/config.yml store/fdroid/keystore.jks TEMP_DIR="$GITHUB_WORKSPACE/store/temp/fdroid" - cd fdroid - echo "keypass=\"$FDROID_STORE_KEYSTORE_PASSWORD\"" >>config.py - echo "keystorepass=\"$FDROID_STORE_KEYSTORE_PASSWORD\"" >>config.py - echo "local_copy_dir=\"$TEMP_DIR\"" >>config.py - mkdir -p repo - mv $GITHUB_WORKSPACE/com.x8bit.bitwarden-fdroid.apk ./repo/ + echo "keypass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml + echo "keystorepass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml + echo "local_copy_dir: $TEMP_DIR" >> store/fdroid/config.yml + mv $GITHUB_WORKSPACE/com.x8bit.bitwarden-fdroid.apk store/fdroid/repo/ + + # Run update and deploy. + cd store/fdroid fdroid update - fdroid server update - cd .. - rm -rf temp/fdroid/archive - mv -v temp/fdroid ../dist - cd fdroid - cp index.html btn.png qr.png ../../dist/fdroid - cd $GITHUB_WORKSPACE + fdroid deploy + cd ../.. + + # Move files for distribution. + rm -rf store/temp/fdroid/archive + mv -v store/temp/fdroid dist + cp store/fdroid/index.html store/fdroid/btn.png store/fdroid/qr.png dist/fdroid - name: Deploy to gh-pages if: ${{ inputs.release_type != 'Dry Run' }} diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index fef591ae6..88d3a0192 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -12,6 +12,10 @@ on: description: "Cut RC branch?" default: true type: boolean + enable_slack_notification: + description: "Enable Slack notifications for upcoming release?" + default: false + type: boolean jobs: bump_version: @@ -26,8 +30,16 @@ jobs: with: version: ${{ inputs.version_number_override }} + - name: Slack Notification Check + run: | + if [[ "${{ inputs.enable_slack_notification }}" == true ]]; then + echo "Slack notifications enabled." + else + echo "Slack notifications disabled." + fi + - name: Checkout Branch - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: ref: main @@ -257,6 +269,14 @@ jobs: PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} run: gh pr merge $PR_NUMBER --squash --auto --delete-branch + - name: Report upcoming release version to Slack + if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' && inputs.enable_slack_notification == true }} + uses: bitwarden/gh-actions/report-upcoming-release-version@main + with: + version: ${{ steps.set-final-version-output.outputs.version }} + project: ${{ github.repository }} + AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} + cut_rc: name: Cut RC branch if: ${{ inputs.cut_rc_branch == true }} @@ -264,7 +284,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout Branch - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: ref: main diff --git a/src/App/Platforms/Android/AndroidManifest.xml b/src/App/Platforms/Android/AndroidManifest.xml index fc8985c38..6a8386e02 100644 --- a/src/App/Platforms/Android/AndroidManifest.xml +++ b/src/App/Platforms/Android/AndroidManifest.xml @@ -1,5 +1,5 @@  - + diff --git a/src/App/Platforms/iOS/Info.plist b/src/App/Platforms/iOS/Info.plist index da05e74f0..40e575b6f 100644 --- a/src/App/Platforms/iOS/Info.plist +++ b/src/App/Platforms/iOS/Info.plist @@ -11,7 +11,7 @@ CFBundleIdentifier com.8bit.bitwarden CFBundleShortVersionString - 2024.5.1 + 2024.5.2 CFBundleVersion 1 CFBundleIconName diff --git a/src/Core/Pages/Accounts/LoginPage.xaml.cs b/src/Core/Pages/Accounts/LoginPage.xaml.cs index 17a41cbaf..182cd2bbd 100644 --- a/src/Core/Pages/Accounts/LoginPage.xaml.cs +++ b/src/Core/Pages/Accounts/LoginPage.xaml.cs @@ -25,6 +25,7 @@ namespace Bit.App.Pages _broadcasterService = ServiceContainer.Resolve(); _vm = BindingContext as LoginPageViewModel; _vm.Page = this; + _vm.FromIosExtension = _appOptions?.IosExtension ?? false; _vm.StartTwoFactorAction = () => MainThread.BeginInvokeOnMainThread(async () => await StartTwoFactorAsync()); _vm.LogInSuccessAction = () => MainThread.BeginInvokeOnMainThread(async () => await LogInSuccessAsync()); _vm.LogInWithDeviceAction = () => StartLoginWithDeviceAsync().FireAndForget(); diff --git a/src/Core/Pages/Accounts/LoginPasswordlessRequestPage.xaml.cs b/src/Core/Pages/Accounts/LoginPasswordlessRequestPage.xaml.cs index f1f67ccdb..c1492e761 100644 --- a/src/Core/Pages/Accounts/LoginPasswordlessRequestPage.xaml.cs +++ b/src/Core/Pages/Accounts/LoginPasswordlessRequestPage.xaml.cs @@ -19,6 +19,7 @@ namespace Bit.App.Pages _vm.Email = email; _vm.AuthRequestType = authRequestType; _vm.AuthingWithSso = authingWithSso; + _vm.FromIosExtension = _appOptions?.IosExtension ?? false; _vm.StartTwoFactorAction = () => MainThread.BeginInvokeOnMainThread(async () => await StartTwoFactorAsync()); _vm.LogInSuccessAction = () => MainThread.BeginInvokeOnMainThread(async () => await LogInSuccessAsync()); _vm.UpdateTempPasswordAction = () => MainThread.BeginInvokeOnMainThread(async () => await UpdateTempPasswordAsync()); diff --git a/src/Core/Pages/Accounts/RegisterPage.xaml.cs b/src/Core/Pages/Accounts/RegisterPage.xaml.cs index d1b273031..6e88fa84b 100644 --- a/src/Core/Pages/Accounts/RegisterPage.xaml.cs +++ b/src/Core/Pages/Accounts/RegisterPage.xaml.cs @@ -1,4 +1,6 @@ -namespace Bit.App.Pages +using Bit.App.Models; + +namespace Bit.App.Pages { public partial class RegisterPage : BaseContentPage { @@ -6,11 +8,12 @@ private bool _inputFocused; - public RegisterPage(HomePage homePage) + public RegisterPage(HomePage homePage, AppOptions appOptions = null) { InitializeComponent(); _vm = BindingContext as RegisterPageViewModel; _vm.Page = this; + _vm.FromIosExtension = appOptions?.IosExtension ?? false; _vm.RegistrationSuccess = () => MainThread.BeginInvokeOnMainThread(async () => await RegistrationSuccessAsync(homePage)); _vm.CloseAction = async () => { diff --git a/src/Core/Pages/Accounts/TwoFactorPage.xaml.cs b/src/Core/Pages/Accounts/TwoFactorPage.xaml.cs index 342eefd79..b6b53e8ea 100644 --- a/src/Core/Pages/Accounts/TwoFactorPage.xaml.cs +++ b/src/Core/Pages/Accounts/TwoFactorPage.xaml.cs @@ -28,6 +28,7 @@ namespace Bit.App.Pages _vm = BindingContext as TwoFactorPageViewModel; _vm.Page = this; _vm.AuthingWithSso = authingWithSso ?? false; + _vm.FromIosExtension = _appOptions?.IosExtension ?? false; _vm.StartSetPasswordAction = () => MainThread.BeginInvokeOnMainThread(async () => await StartSetPasswordAsync()); _vm.TwoFactorAuthSuccessAction = () => diff --git a/src/Core/Pages/Accounts/TwoFactorPageViewModel.cs b/src/Core/Pages/Accounts/TwoFactorPageViewModel.cs index 4f1ec58e4..f3bad034c 100644 --- a/src/Core/Pages/Accounts/TwoFactorPageViewModel.cs +++ b/src/Core/Pages/Accounts/TwoFactorPageViewModel.cs @@ -11,6 +11,13 @@ using Bit.Core.Models.Request; using Bit.Core.Resources.Localization; using Bit.Core.Utilities; using Newtonsoft.Json; +using Bit.Core.Services; + +#if IOS +using WebAuthenticator = Bit.Core.Utilities.MAUI.WebAuthenticator; +using WebAuthenticatorResult = Bit.Core.Utilities.MAUI.WebAuthenticatorResult; +using WebAuthenticatorOptions = Bit.Core.Utilities.MAUI.WebAuthenticatorOptions; +#endif namespace Bit.App.Pages { @@ -136,6 +143,7 @@ namespace Bit.App.Pages nameof(ShowTryAgain), }); } + public ICommand SubmitCommand { get; } public ICommand MoreCommand { get; } public ICommand AuthenticateWithDuoFramelessCommand { get; } @@ -261,7 +269,11 @@ namespace Bit.App.Pages authResult = await WebAuthenticator.AuthenticateAsync(new WebAuthenticatorOptions { Url = new Uri(url), - CallbackUrl = new Uri(Constants.DuoCallback) + CallbackUrl = new Uri(Constants.DuoCallback), +#if IOS + ShouldUseSharedApplicationKeyWindow = FromIosExtension +#endif + }); } catch (TaskCanceledException) @@ -348,6 +360,9 @@ namespace Bit.App.Pages Url = new Uri(url), CallbackUrl = new Uri(callbackUri), PrefersEphemeralWebBrowserSession = true, +#if IOS + ShouldUseSharedApplicationKeyWindow = FromIosExtension +#endif }; authResult = await WebAuthenticator.AuthenticateAsync(options); } diff --git a/src/Core/Pages/CaptchaProtectedViewModel.cs b/src/Core/Pages/CaptchaProtectedViewModel.cs index 28935bd20..c44391cb5 100644 --- a/src/Core/Pages/CaptchaProtectedViewModel.cs +++ b/src/Core/Pages/CaptchaProtectedViewModel.cs @@ -6,6 +6,12 @@ using Bit.App.Utilities; using Bit.Core.Abstractions; using Microsoft.Maui.Authentication; +#if IOS +using WebAuthenticator = Bit.Core.Utilities.MAUI.WebAuthenticator; +using WebAuthenticatorResult = Bit.Core.Utilities.MAUI.WebAuthenticatorResult; +using WebAuthenticatorOptions = Bit.Core.Utilities.MAUI.WebAuthenticatorOptions; +#endif + namespace Bit.App.Pages { public abstract class CaptchaProtectedViewModel : BaseViewModel @@ -16,6 +22,8 @@ namespace Bit.App.Pages protected abstract IPlatformUtilsService platformUtilsService { get; } protected string _captchaToken = null; + public bool FromIosExtension { get; set; } + protected async Task HandleCaptchaAsync(string captchaSiteKey, bool needsCaptcha, Func onSuccess) { if (!needsCaptcha) @@ -61,6 +69,9 @@ namespace Bit.App.Pages Url = new Uri(url), CallbackUrl = new Uri(callbackUri), PrefersEphemeralWebBrowserSession = false, +#if IOS + ShouldUseSharedApplicationKeyWindow = FromIosExtension +#endif }; authResult = await WebAuthenticator.AuthenticateAsync(options); } diff --git a/src/Core/Resources/Localization/AppResources.cs.resx b/src/Core/Resources/Localization/AppResources.cs.resx index ae130d361..c8e4069fd 100644 --- a/src/Core/Resources/Localization/AppResources.cs.resx +++ b/src/Core/Resources/Localization/AppResources.cs.resx @@ -502,7 +502,7 @@ Pro spuštění rozšíření klepněte na ikonu Bitwardenu v menu. - Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu "Další“ v dolní části menu. + Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu "Další" v dolní části menu. Oblíbené diff --git a/src/Core/Resources/Localization/AppResources.de.resx b/src/Core/Resources/Localization/AppResources.de.resx index 130cc2959..6fd673c90 100644 --- a/src/Core/Resources/Localization/AppResources.de.resx +++ b/src/Core/Resources/Localization/AppResources.de.resx @@ -3001,6 +3001,6 @@ Möchtest du zu diesem Konto wechseln? Der Passkey-Vorgang ist fehlgeschlagen, da die App nicht in den Asset-Links gefunden wurde - Der Passwort-Vorgang ist fehlgeschlagen, da die App nicht verifiziert werden konnte + Der Passkey-Vorgang ist fehlgeschlagen, da die App nicht verifiziert werden konnte diff --git a/src/Core/Resources/Localization/AppResources.es.resx b/src/Core/Resources/Localization/AppResources.es.resx index 8d9dad9b8..ddc8bb8ba 100644 --- a/src/Core/Resources/Localization/AppResources.es.resx +++ b/src/Core/Resources/Localization/AppResources.es.resx @@ -422,7 +422,7 @@ Servicio de autocompletado - Set Bitwarden as your passkey provider in device settings. + Establece Bitwarden como tu proveedor de claves de acceso en los ajustes del dispositivo. Evitar caracteres ambiguos @@ -1195,7 +1195,7 @@ El escaneo se realizará automáticamente. Windows Hello - We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings > System > Passwords & accounts > Passwords, passkeys and data services. + No hemos podido abrir automáticamente el menú de ajustes del proveedor de credenciales de Android. Puedes navegar al menú de ajustes del proveedor de credenciales de Android manualmente desde Ajustes > Sistema > Contraseñas y cuentas > Contraseñas, claves de acceso y servicios de datos. No hemos podido abrir automáticamente las opciones de autorellenado de Android. Puedes ir al menú de opciones de autorellenado manualmente desde Ajustes de Android > Sistema > Idiomas y entradas > Avanzado > Servicio autocompletar. @@ -1822,7 +1822,7 @@ El escaneo se realizará automáticamente. Bitwarden necesita atención - Activar "Sobrescribir" en "Servicios de Auto-llenado" desde la configuración de Bitwarden - Passkey management + Gestión de claves de acceso Servicios de Autollenado @@ -1867,19 +1867,19 @@ El escaneo se realizará automáticamente. Una política de organización está afectando sus opciones de propiedad. - Envío + Send 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Todos los Envíos + Todos los Sends 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Envíos + Sends 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Un nombre amigable para describir este Envío. + Un nombre amigable para describir este Send. 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. @@ -1972,15 +1972,15 @@ El escaneo se realizará automáticamente. La contraseña ha sido eliminada. - Notas privadas sobre este Envío. + Notas privadas sobre este Send. 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Desactivar este Envío para que nadie pueda acceder a él. + Desactivar este Send para que nadie pueda acceder a él 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - No hay Envíos en tu cuenta. + No hay Sends en tu cuenta. 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. @@ -1994,35 +1994,35 @@ El escaneo se realizará automáticamente. Compartir enlace - Enviar enlace + Enlace Send 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Buscar Envíos + Buscar Sends 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Editar Envío + Editar Send 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Añadir Envío + Nuevo Send 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - ¿Seguro que quieres eliminar este Envío? + ¿Seguro que quieres eliminar este Send? 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - El Envío se ha eliminado. + Send eliminado 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Envío actualizado. + Send guardado 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. - Nuevo Envío creado. + Send creado 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. @@ -2044,7 +2044,7 @@ El escaneo se realizará automáticamente. Personalizado - Compartir este Envío al guardarlo. + Compartir este Send al guardarlo 'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated. @@ -2203,7 +2203,7 @@ El escaneo se realizará automáticamente. Enviando - Copiar enlace Enviar al guardar + Copiar enlace del Send al guardar Enviando código... @@ -2810,7 +2810,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura {0} horas - Use Bitwarden to save new passkeys and log in with passkeys stored in your vault. + Usa Bitwarden para guardar nuevas claves de acceso e iniciar sesión con las claves de acceso almacenadas en tu caja fuerte. El Framework de Autofill de Android se utiliza para ayudar a rellenar información de inicio de sesión en otras aplicaciones en tu dispositivo. @@ -2841,7 +2841,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura ¿Continuar a la App Store? - Continue to device Settings? + ¿Continuar a los ajustes del dispositivo? Haz tu cuenta más segura al configurar el inicio de sesión en dos pasos en la aplicación web de Bitwarden. @@ -2894,25 +2894,25 @@ seleccione Agregar TOTP para almacenar la clave de forma segura Configura una opción de desbloqueo para cambiar tu acción de tiempo de espera de tu caja fuerte. - Choose a login to save this passkey to + Escoge un inicio de sesión para guardar esta clave de acceso - Save passkey as new login + Guardar clave de acceso como un nuevo inicio de sesión - Save passkey + Guardar clave de acceso - Passkeys for {0} + Claves de acceso para {0} - Passwords for {0} + Contraseñas para {0} - Overwrite passkey? + ¿Sobreescribir clave de acceso? - This item already contains a passkey. Are you sure you want to overwrite the current passkey? + Este elemento ya contiene una clave de acceso. ¿Estás seguro de que quieres sobreescribir la clave de acceso actual? Se requiere el inicio de sesión en dos pasos Duo para su cuenta. @@ -2924,86 +2924,86 @@ seleccione Agregar TOTP para almacenar la clave de forma segura Iniciar Duo - Verification required by {0} + Verificación requerida por {0} - Verification required for this action. Set up an unlock method in Bitwarden to continue. + Verificación requerida para esta acción. Establece un método de desbloqueo en Bitwarden para continuar. - Error creating passkey + Error creando clave de acceso - Error reading passkey + Error leyendo clave de acceso - There was a problem creating a passkey for {0}. Try again later. + Hubo un problema creando la clave de acceso para {0}. Inténtalo de nuevo más tarde. The parameter is the RpId - There was a problem reading your passkey for {0}. Try again later. + Hubo un problema leyendo la clave de acceso para {0}. Inténtalo de nuevo más tarde. The parameter is the RpId - Verifying identity... + Verificando identidad... - Passwords + Contraseñas - Unknown account + Cuenta desconocida - Set up auto-fill + Establecer autocompletar - Get instant access to your passwords and passkeys! + ¡Consigue acceso instantáneo a tus contraseñas y claves de acceso! - To set up password auto-fill and passkey management, set Bitwarden as your preferred provider in the iOS Settings. + Para configurar el autocompletado y la administración de claves de acceso, establezca Bitwarden como su proveedor preferido en los ajustes de iOS. - 1. Go to your device's Settings > Passwords > Password Options + 1. Ve a los Ajustes de tu dispositivo > Contraseñas > Opciones de Contraseña - 2. Turn on AutoFill + 2. Habilita el autocompletado - 3. Select "Bitwarden" to use for passwords and passkeys + 3. Selecciona "Bitwarden" para usar contraseñas y claves de acceso - Your passkey will be saved to your Bitwarden vault + Tu clave de acceso se guardará en tu caja fuerte de Bitwarden - Your passkey will be saved to your Bitwarden vault for {0} + Tu clave de acceso se guardará en tu caja fuerte de Bitwarden para {0} - Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible. + Los elementos de organización sin asignar ya no están visibles en la vista Todas las cajas fuertes y solo se puede acceder a ellos a través de la consola de administrador. Asigne estos elementos a una colección desde la Consola de Administrador para hacerlos visibles. - On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible. + El 16 de mayo de 2024, los elementos de organización no asignados ya no serán visibles en la vista Todas las cajas fuertes y solo serán accesibles a través de la Consola de Administrador. Asigna estos objetos a una colección desde la Consola de Administrador para hacerlos visibles. - Remind me later + Recuérdamelo más tarde - Notice + Aviso - Passkeys not supported for this app + Claves de acceso no soportadas para esta aplicación - Passkey operation failed because browser is not privileged + Falló la operación de la clave de acceso porque el navegador no tiene privilegios - Passkey operation failed because browser signature does not match + Falló la operación de la clave de acceso porque la firma del navegador no coincide - Passkey operation failed because of missing asset links + Falló la operación de la clave de acceso porque faltan enlaces de recursos - Passkey operation failed because app not found in asset links + Falló la operación de la clave de acceso porque la aplicación no encontró los enlaces de recursos - Passkey operation failed because app could not be verified + Falló la operación de la clave de acceso porque la aplicación no pudo ser verificada diff --git a/src/Core/Resources/Localization/AppResources.fi.resx b/src/Core/Resources/Localization/AppResources.fi.resx index e5308169a..b705e95be 100644 --- a/src/Core/Resources/Localization/AppResources.fi.resx +++ b/src/Core/Resources/Localization/AppResources.fi.resx @@ -2397,7 +2397,7 @@ turvallisesti valitsemalla "Lisää TOTP" Catch-all-sähköposti - Sähköpostialias välitykseen + Sähköpostialias ohjaukseen Satunnainen sana @@ -2991,7 +2991,7 @@ Haluatko vaihtaa tähän tiliin? Suojausavaimia ei tueta tässä sovelluksessa - Suojausavaintoiminto epäonnistui, koska selainta ei ole korotettu + Suojausavaintoiminto epäonnistui, koska selainta ei ole hyväksytty Suojausavaintoiminto epäonnistui, koska selaimen allekirjoitus ei täsmää @@ -3003,6 +3003,6 @@ Haluatko vaihtaa tähän tiliin? Suojausavaintoiminto epäonnistui, koska sovellusta ei löytynyt asset-liitoksista - Suojausavaintoiminto epäonnistui, koska sovellusta ei voitu vahvistaa + Suojausavaintoiminto epäonnistui, koska sovellusta ei voitu varmentaa diff --git a/src/Core/Resources/Localization/AppResources.fr.resx b/src/Core/Resources/Localization/AppResources.fr.resx index c378e009e..f40cc31cf 100644 --- a/src/Core/Resources/Localization/AppResources.fr.resx +++ b/src/Core/Resources/Localization/AppResources.fr.resx @@ -2905,7 +2905,7 @@ Voulez-vous basculer vers ce compte ? Clés d'accès pour {0} - Passwords for {0} + Mots de passe pour {0} Overwrite passkey? @@ -2946,7 +2946,7 @@ Voulez-vous basculer vers ce compte ? Verifying identity... - Passwords + Mots de passe Unknown account diff --git a/src/Core/Resources/Localization/AppResources.lv.resx b/src/Core/Resources/Localization/AppResources.lv.resx index 30d12f8c2..1e89cb7d2 100644 --- a/src/Core/Resources/Localization/AppResources.lv.resx +++ b/src/Core/Resources/Localization/AppResources.lv.resx @@ -2853,7 +2853,7 @@ Vai pārslēgties uz šo kontu? The parameter is an URL, like vault.bitwarden.com. - Par to, kā izmantot Bitwarden, vairāk var uzzināt palīdzības centrā. + Vairāk par to, kā izmantot Bitwarden, var uzzināt palīdzības centrā. Meklējamais nav atrodams? Ir iespēja sazināties ar Bitwarden atbalstu bitwarden.com. @@ -2865,7 +2865,7 @@ Vai pārslēgties uz šo kontu? Vairāk sava Bitwarden konta iespēju var izpētīt tīmekļa vietnē. - Bitwarden nodrošina iespēju kopīgot savas glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vairāk var uzzināt bitwarden.com tīmekļvietnē. + Bitwarden nodrošina iespēju kopīgot savas glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vairāk var uzzināt tīmekļvietnē bitwarden.com. Var palīdzēt citiem noskaidrot, vai Bitwarden tiem der. To var izdarīt lietotņu veikalā, atstājot vērtējumu. diff --git a/src/Core/Resources/Localization/AppResources.pt-BR.resx b/src/Core/Resources/Localization/AppResources.pt-BR.resx index f73354445..0f54c7045 100644 --- a/src/Core/Resources/Localization/AppResources.pt-BR.resx +++ b/src/Core/Resources/Localization/AppResources.pt-BR.resx @@ -1195,7 +1195,7 @@ A leitura será feita automaticamente. Windows Hello - We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings > System > Passwords & accounts > Passwords, passkeys and data services. + Não foi possível abrir automaticamente o menu de configurações do provedor de credenciais do Android para você. Você pode navegar para o menu de configurações do provedor de credenciais manualmente a partir de Configurações do Android > Sistema > Senhas e Contas > Senhas chaves e serviços de dados. Não foi possível abrir automaticamente o menu de configurações de autopreenchimento do Android para você. Você pode navegar para o menu de configurações de autopreenchimento manualmente a partir de Configurações do Android > Sistema > Idiomas e Entrada > Avançado > Serviço de autopreenchimento. diff --git a/src/Core/Resources/Localization/AppResources.pt-PT.resx b/src/Core/Resources/Localization/AppResources.pt-PT.resx index 6b846d22a..06cb74319 100644 --- a/src/Core/Resources/Localization/AppResources.pt-PT.resx +++ b/src/Core/Resources/Localization/AppResources.pt-PT.resx @@ -136,7 +136,7 @@ Alert title when something goes wrong. - Retroceder + Voltar Navigate back to the previous screen. diff --git a/src/Core/Resources/Localization/AppResources.sv.resx b/src/Core/Resources/Localization/AppResources.sv.resx index b0fdcdc32..d672e5b03 100644 --- a/src/Core/Resources/Localization/AppResources.sv.resx +++ b/src/Core/Resources/Localization/AppResources.sv.resx @@ -422,7 +422,7 @@ Hjälpmedelsservice för automatisk ifyllnad - Set Bitwarden as your passkey provider in device settings. + Ange Bitwarden som din lösenordsleverantör i enhetsinställningarna. Undvik tvetydiga tecken @@ -1196,7 +1196,7 @@ Skanningen sker automatiskt. Windows Hello - We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings > System > Passwords & accounts > Passwords, passkeys and data services. + Det gick inte att automatiskt öppna menyn för Android-autentiseringsleverantörsinställningar för dig. Du kan navigera till menyn autentiseringsleverantörsinställningar manuellt från Android Inställningar > System > Lösenord och konton > Lösenord, Nyckelord och datatjänster. Det gick inte att automatiskt öppna inställningsmenyn för Android automatisk ifyllnad. Du kan navigera till menyn manuellt från Android inställningar > System > Språk och inmatning > Avancerat > Tjänsten autofyll. @@ -1824,7 +1824,7 @@ Skanningen sker automatiskt. Bitwarden behöver din uppmärksamhet - Aktivera "Överlappning" under "Tjänster för automatisk ifyllnad" i Bitwardens inställningar - Passkey management + Passkey hantering Tjänster för automatisk ifyllnad diff --git a/src/Core/Resources/Localization/AppResources.tr.resx b/src/Core/Resources/Localization/AppResources.tr.resx index d829c331c..be89aca48 100644 --- a/src/Core/Resources/Localization/AppResources.tr.resx +++ b/src/Core/Resources/Localization/AppResources.tr.resx @@ -422,7 +422,7 @@ Otomatik doldurma hizmeti - Set Bitwarden as your passkey provider in device settings. + Cihaz ayarlarınızdan Bitwarden'ı geçiş anahtarı sağlayıcınız olarak ayarlayın. Okurken karışabilecek karakterleri kullanma @@ -2891,7 +2891,7 @@ Bu hesaba geçmek ister misiniz? Kasa zaman aşımı eyleminizi değiştirmek için bir kilit açma yöntemi ayarlayın. - Choose a login to save this passkey to + Bu geçiş anahtarının kaydedileceği hesabı seçin Geçiş anahtarını yeni hesap olarak kaydet diff --git a/src/Core/Resources/Localization/AppResources.zh-Hans.resx b/src/Core/Resources/Localization/AppResources.zh-Hans.resx index 707986caa..34906d47e 100644 --- a/src/Core/Resources/Localization/AppResources.zh-Hans.resx +++ b/src/Core/Resources/Localization/AppResources.zh-Hans.resx @@ -422,7 +422,7 @@ 自动填充服务 - 在设备设置中将 Bitwarden 设置为您的通行密钥提供程序。 + 在设备的设置中将 Bitwarden 设置为您的通行密钥提供程序。 避免易混淆的字符 @@ -1195,7 +1195,7 @@ Windows Hello - 我们无法为您自动打开 Android 凭据提供者设置菜单。您可以通过“Android 设置 > 系统 > 密码和账户 > 密码、通行密钥和数据服务”手动定位到凭据提供者设置菜单。 + 我们无法为您自动打开 Android 凭据提供程序设置菜单。您可以通过 Android 设置 > 系统 > 密码和账户 > 密码、通行密钥和数据服务手动定位到凭据提供程序设置菜单。 我们无法为您自动打开 Android 自动填充设置菜单。您可以通过 Android 设置 > 系统 > 语言和输入 > 高级 > 自动填充服务,来手动导航到自动填充设置。 @@ -2820,7 +2820,7 @@ 附加选项 - 前往网页 App 吗? + 前往网页应用吗? 前往 {0} 吗? @@ -2852,7 +2852,7 @@ The parameter is an URL, like vault.bitwarden.com. - 在帮助中心了解更多如何使用 Bitwarden 的信息。 + 访问帮助中心了解更多如何使用 Bitwarden 的信息。 找不到您想要的吗?请在 bitwarden.com 上联系 Bitwarden 支持。 @@ -2864,7 +2864,7 @@ 在网页应用上探索您的 Bitwarden 账户的更多功能。 - Bitwarden 允许您使用组织与他人共享您的密码库项目。访问 bitwarden.com 网站以了解更多。 + Bitwarden 允许您使用组织与他人共享您的密码库项目。访问 bitwarden.com 网站了解更多信息。 帮助别人了解 Bitwarden 是否适合他们。立即访问 App Store 并留下评分。 @@ -2938,7 +2938,7 @@ The parameter is the RpId - 读取 {0} 的通行密钥时。请稍后再试。 + 读取 {0} 的通行密钥时出错。请稍后再试。 The parameter is the RpId diff --git a/src/iOS.Autofill/CredentialProviderViewController.cs b/src/iOS.Autofill/CredentialProviderViewController.cs index 501b508d0..3fc93f0e2 100644 --- a/src/iOS.Autofill/CredentialProviderViewController.cs +++ b/src/iOS.Autofill/CredentialProviderViewController.cs @@ -617,8 +617,9 @@ namespace Bit.iOS.Autofill private void LaunchRegisterFlow() { - var registerPage = new RegisterPage(null); - var app = new App.App(new AppOptions { IosExtension = true }); + var appOptions = new AppOptions { IosExtension = true }; + var registerPage = new RegisterPage(null, appOptions); + var app = new App.App(appOptions); ThemeManager.SetTheme(app.Resources); ThemeManager.ApplyResourcesTo(registerPage); if (registerPage.BindingContext is RegisterPageViewModel vm) @@ -696,8 +697,9 @@ namespace Bit.iOS.Autofill private void LaunchTwoFactorFlow(bool authingWithSso) { - var twoFactorPage = new TwoFactorPage(authingWithSso); - var app = new App.App(new AppOptions { IosExtension = true }); + var appOptions = new AppOptions { IosExtension = true }; + var twoFactorPage = new TwoFactorPage(authingWithSso, appOptions); + var app = new App.App(appOptions); ThemeManager.SetTheme(app.Resources); ThemeManager.ApplyResourcesTo(twoFactorPage); if (twoFactorPage.BindingContext is TwoFactorPageViewModel vm) diff --git a/src/iOS.Autofill/Info.plist b/src/iOS.Autofill/Info.plist index 7f43e7578..aae3333a5 100644 --- a/src/iOS.Autofill/Info.plist +++ b/src/iOS.Autofill/Info.plist @@ -11,7 +11,7 @@ CFBundleIdentifier com.8bit.bitwarden.autofill CFBundleShortVersionString - 2024.5.1 + 2024.5.2 CFBundleVersion 1 CFBundleLocalizations diff --git a/src/iOS.Extension/Info.plist b/src/iOS.Extension/Info.plist index 961c6b9a0..cb6f74038 100644 --- a/src/iOS.Extension/Info.plist +++ b/src/iOS.Extension/Info.plist @@ -11,7 +11,7 @@ CFBundleIdentifier com.8bit.bitwarden.find-login-action-extension CFBundleShortVersionString - 2024.5.1 + 2024.5.2 CFBundleLocalizations en diff --git a/src/iOS.ShareExtension/Info.plist b/src/iOS.ShareExtension/Info.plist index 394ca19b3..3e3871250 100644 --- a/src/iOS.ShareExtension/Info.plist +++ b/src/iOS.ShareExtension/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2024.5.1 + 2024.5.2 CFBundleVersion 1 MinimumOSVersion diff --git a/store/fdroid/config.py b/store/fdroid/config.py deleted file mode 100644 index db8222a4f..000000000 --- a/store/fdroid/config.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python3 - -repo_url = "https://mobileapp.bitwarden.com/fdroid/repo" -repo_name = "Bitwarden F-Droid Repo" -repo_icon = "fdroid-icon.png" -repo_description = """ -F-Droid repo for Bitwarden. -""" - -archive_older = 2 -archive_url = "https://does.not.exist" -archive_name = "Bitwarden Archive Repo" -archive_icon = "fdroid-icon.png" -archive_description = """ -F-Droid archive repo for Bitwarden. -""" - -repo_keyalias = "bitwarden-Virtual-Machine" -keystore = "keystore.jks" -keydname = "CN=bitwarden-Virtual-Machine, OU=F-Droid" diff --git a/store/fdroid/config.yml b/store/fdroid/config.yml new file mode 100644 index 000000000..d0267aba3 --- /dev/null +++ b/store/fdroid/config.yml @@ -0,0 +1,18 @@ +--- + +repo_url: https://mobileapp.bitwarden.com/fdroid/repo +repo_name: Bitwarden F-Droid Repo +repo_icon: fdroid-icon.png +repo_description: >- + F-Droid repo for Bitwarden. + +archive_older: 2 +archive_url: https://does.not.exist/archive +archive_name: Bitwarden Archive Repo +archive_icon: fdroid-icon.png +archive_description: >- + F-Droid archive repo for Bitwarden. + +repo_keyalias: bitwarden-Virtual-Machine +keystore: keystore.jks +keydname: CN=bitwarden-Virtual-Machine, OU=F-Droid