From 25d32e4508fe90364b111dce2a4e918111df88f0 Mon Sep 17 00:00:00 2001 From: Brendan Early Date: Mon, 29 Jul 2024 14:28:15 -0500 Subject: [PATCH 1/5] Make firefox min version 126 (#1245) In Firefox 125 and earlier, captureVisibleTab required ``. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab --- manifests/manifest-firefox.json | 112 +++++++++++++++----------------- 1 file changed, 51 insertions(+), 61 deletions(-) diff --git a/manifests/manifest-firefox.json b/manifests/manifest-firefox.json index 7f4a32ca..3a147bec 100644 --- a/manifests/manifest-firefox.json +++ b/manifests/manifest-firefox.json @@ -1,66 +1,56 @@ { - "manifest_version": 3, - "name": "__MSG_extName__", - "short_name": "__MSG_extShortName__", - "version": "7.0.0", - "default_locale": "en", - "description": "__MSG_extDesc__", - "browser_specific_settings": { - "gecko": { - "id": "authenticator@mymindstorm", - "strict_min_version": "109.0" - } - }, - "icons": { - "16": "images/icon16.png", - "48": "images/icon48.png", - "128": "images/icon128.png" - }, - "action": { - "default_icon": { - "19": "images/icon19.png", - "38": "images/icon38.png" - }, - "default_title": "__MSG_extShortName__", - "default_popup": "view/popup.html" - }, - "background": { - "scripts": [ - "dist/background.js" - ] - }, - "commands": { - "_execute_browser_action": {}, - "scan-qr": { - "description": "Scan a QR code" - }, - "autofill": { - "description": "Autofill the matched code" - } + "manifest_version": 3, + "name": "__MSG_extName__", + "short_name": "__MSG_extShortName__", + "version": "7.0.0", + "default_locale": "en", + "description": "__MSG_extDesc__", + "browser_specific_settings": { + "gecko": { + "id": "authenticator@mymindstorm", + "strict_min_version": "126.0" + } + }, + "icons": { + "16": "images/icon16.png", + "48": "images/icon48.png", + "128": "images/icon128.png" + }, + "action": { + "default_icon": { + "19": "images/icon19.png", + "38": "images/icon38.png" }, - "options_ui": { - "page": "view/options.html", - "open_in_tab": false + "default_title": "__MSG_extShortName__", + "default_popup": "view/popup.html" + }, + "background": { + "scripts": ["dist/background.js"] + }, + "commands": { + "_execute_browser_action": {}, + "scan-qr": { + "description": "Scan a QR code" }, - "permissions": [ - "activeTab", - "storage", - "identity", - "alarms", - "scripting" - ], - "optional_permissions": [ - "clipboardWrite" - ], - "host_permissions": [ - "https://www.google.com/", - "https://*.dropboxapi.com/*", - "https://www.googleapis.com/*", - "https://accounts.google.com/o/oauth2/revoke", - "https://graph.microsoft.com/me/*", - "https://login.microsoftonline.com/common/oauth2/v2.0/token" - ], - "content_security_policy": { - "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; font-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; connect-src https://www.google.com/ https://*.dropboxapi.com https://www.googleapis.com/ https://accounts.google.com/o/oauth2/revoke https://login.microsoftonline.com/common/oauth2/v2.0/token https://graph.microsoft.com/; default-src 'none'" + "autofill": { + "description": "Autofill the matched code" } + }, + "options_ui": { + "page": "view/options.html", + "open_in_tab": false + }, + "permissions": ["activeTab", "storage", "identity", "alarms", "scripting"], + "optional_permissions": ["clipboardWrite"], + "host_permissions": [ + "https://www.google.com/", + "https://*.dropboxapi.com/*", + "https://www.googleapis.com/*", + "https://accounts.google.com/o/oauth2/revoke", + "https://graph.microsoft.com/me/*", + "https://login.microsoftonline.com/common/oauth2/v2.0/token" + ], + "content_security_policy": { + "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; font-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; connect-src https://www.google.com/ https://*.dropboxapi.com https://www.googleapis.com/ https://accounts.google.com/o/oauth2/revoke https://login.microsoftonline.com/common/oauth2/v2.0/token https://graph.microsoft.com/; default-src 'none'" + } } From ac8f1584b6e84256ea8c13111cfa6c5c61ded90a Mon Sep 17 00:00:00 2001 From: Brendan Early Date: Mon, 29 Jul 2024 14:30:59 -0500 Subject: [PATCH 2/5] Set autolock to a default of 30 minutes (#1243) --- src/store/Menu.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/Menu.ts b/src/store/Menu.ts index bfe6749c..24cc55a5 100644 --- a/src/store/Menu.ts +++ b/src/store/Menu.ts @@ -14,7 +14,7 @@ export class Menu implements Module { smartFilter: UserSettings.items.smartFilter !== false, enableContextMenu: UserSettings.items.enableContextMenu === true, theme: UserSettings.items.theme || (isSafari ? "flat" : "normal"), - autolock: Number(UserSettings.items.autolock) || 0, + autolock: Number(UserSettings.items.autolock) || 30, backupDisabled: await ManagedStorage.get("disableBackup", false), exportDisabled: await ManagedStorage.get("disableExport", false), enforcePassword: await ManagedStorage.get("enforcePassword", false), From b7fa684c12d2c3cb573a126c9b45407468e8184e Mon Sep 17 00:00:00 2001 From: Brendan Early Date: Mon, 29 Jul 2024 14:32:24 -0500 Subject: [PATCH 3/5] Disable smart filter by default (#1242) * turn auto filter off by default and use type guards in UserSettings * Warn users when enabling smart filter --- _locales/en/messages.json | 1033 +++++++++++----------- src/components/Popup/PreferencesPage.vue | 4 + src/models/settings.ts | 84 +- src/store/Accounts.ts | 2 +- src/store/Menu.ts | 2 +- 5 files changed, 571 insertions(+), 554 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 5fb85b08..ff4e2fdc 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1,518 +1,521 @@ { - "extName": { - "message": "Authenticator", - "description": "Extension Name." - }, - "extShortName": { - "message": "Authenticator", - "description": "Extension Short Name." - }, - "extDesc": { - "message": "Authenticator generates two-factor authentication codes in your browser.", - "description": "Extension Description." - }, - "added": { - "message": " has been added.", - "description": "Added Account." - }, - "errorqr": { - "message": "Unrecognized QR code.", - "description": "QR Error." - }, - "errorsecret": { - "message": "Invalid account secret", - "description": "Secret Error." - }, - "add_code": { - "message": "Add account", - "description": "Add account." - }, - "add_qr": { - "message": "Scan QR Code", - "description": "Scan QR Code." - }, - "add_secret": { - "message": "Manual Entry", - "description": "Manual Entry." - }, - "migration_fail": { - "message": "Import failed. If you are migrating data from Google Authenticator, please re-export your data from Google Authenticator and try again.", - "description": "Import migration data failed." - }, - "migration_partly_fail": { - "message": "Some account data was not imported successfully.", - "description": "Some migration data is broken." - }, - "close": { - "message": "Close", - "description": "Close." - }, - "ok": { - "message": "Ok", - "description": "OK." - }, - "yes": { - "message": "Yes", - "description": "Yes." - }, - "no": { - "message": "No", - "description": "No." - }, - "account": { - "message": "Account", - "description": "Account." - }, - "accountName": { - "message": "Username", - "description": "Account Name." - }, - "issuer": { - "message": "Issuer", - "description": "Issuer." - }, - "secret": { - "message": "Secret", - "description": "Secret." - }, - "updateSuccess": { - "message": "Success.", - "description": "Update Success." - }, - "updateFailure": { - "message": "Failure.", - "description": "Update Failure." - }, - "about": { - "message": "About", - "description": "About." - }, - "settings": { - "message": "Settings", - "description": "Settings." - }, - "security": { - "message": "Security", - "description": "Security." - }, - "current_phrase": { - "message": "Current Password", - "description": "Current Passphrase." - }, - "new_phrase": { - "message": "New Password", - "description": "New Passphrase." - }, - "phrase": { - "message": "Password", - "description": "Passphrase." - }, - "confirm_phrase": { - "message": "Confirm Password", - "description": "Confirm Passphrase." - }, - "confirm_delete": { - "message": "Are you sure you want to delete this account? This action cannot be undone.", - "description": "Remove entry confirmation" - }, - "confirm_delete_all": { - "message": "I understand that all of my data will be irrecoverably deleted.", - "description": "Message that user is required to acknowledge before clearing all data." - }, - "delete_all": { - "message": "Reset Authenticator" - }, - "delete_all_warning": { - "message": "This will delete all of your data and completely reset Authenticator. You will not be able to recover any deleted data! You should consider saving a backup before resetting Authenticator." - }, - "security_warning": { - "message": "This password will be used to encrypt your accounts. No one can help you if you forget the password.", - "description": "Passphrase Warning." - }, - "update": { - "message": "Update", - "description": "Update." - }, - "phrase_incorrect": { - "message": "You cannot add a new account until all accounts are decrypted. Please enter the correct password before continuing.", - "description": "Passphrase Incorrect." - }, - "phrase_incorrect_export": { - "message": "Accounts that were not able to be decrypted will not be included in this backup.", - "description": "Skip Unable-decripted Data." - }, - "phrase_not_match": { - "message": "Password does not match.", - "description": "Passphrase Not Match." - }, - "encrypted": { - "message": "Encrypted", - "description": "Encrypted." - }, - "copied": { - "message": "Copied", - "description": "Copied." - }, - "feedback": { - "message": "Feedback", - "description": "Feedback." - }, - "translate": { - "message": "Translate", - "description": "Translate." - }, - "source": { - "message": "Source Code", - "description": "Source Code." - }, - "passphrase_info": { - "message": "Enter password to decrypt account data.", - "description": "Passphrase Info" - }, - "sync_clock": { - "message": "Sync Clock with Google", - "description": "Sync Clock" - }, - "remember_phrase": { - "message": "Remember Password", - "description": "Remember Passphrase" - }, - "clock_too_far_off": { - "message": "Caution! Your local clock is too far off, please fix it before continuing.", - "description": "Local Time is Too Far Off" - }, - "remind_backup": { - "message": "Do you have a backup for your accounts? Don't wait until it's too late!", - "description": "Remind Backup" - }, - "capture_failed": { - "message": "Capture failed, please reload the page and try again.", - "description": "Capture Failed" - }, - "capture_local_file_failed": { - "message": "Are you trying to scan QR code from a local file? Use Import QR Image Backup instead.", - "description": "Import QR image backup instead of scan local image" - }, - "based_on_time": { - "message": "Time Based", - "description": "Time Based" - }, - "based_on_counter": { - "message": "Counter Based", - "description": "Counter Based" - }, - "resize_popup_page": { - "message": "Preferences", - "description": "Popup Page Settings" - }, - "scale": { - "message": "Scale", - "description": "Scale" - }, - "export_info": { - "message": "Warning: all backups are unencrypted. Want to add an account to another app? Hover over the top right part of any account and hit the hidden button.", - "description": "Export menu info text" - }, - "download_backup": { - "message": "Download Backup File", - "description": "Download backup file." - }, - "import_backup": { - "message": "Import Backup", - "description": "Import backup." - }, - "import_backup_file": { - "message": "Import Backup File", - "description": "Import backup file." - }, - "import_backup_qr": { - "message": "Import QR Image Backup", - "description": "Import qr image backup." - }, - "import_qr_images": { - "message": "Import QR Images", - "description": "Import qr images. Shown as add account method." - }, - "import_backup_code": { - "message": "Import Text Backup", - "description": "Import backup code." - }, - "import_otp_urls": { - "message": "Import OTP URLs", - "description": "Import OTP URLs. Shown as add account method." - }, - "import_backup_qr_partly_failed": { - "message": "Import successful, but some QR codes could not be recognized.", - "description": "Import successful, but some QR image cannot be recognized." - }, - "import_backup_qr_in_batches": { - "message": "You can select multiple files to import backup in batches.", - "description": "You can select multiple image files to import backup in batches." - }, - "show_all_entries": { - "message": "Show all entries", - "description": "Show all entries." - }, - "dropbox_risk": { - "message": "Warning: backups are unencrypted. Use at your own risk.", - "description": "Backup risk warning." - }, - "import_error_password": { - "message": "You must provide correct password to import backups.", - "description": "Error password warning when import backups." - }, - "local_passphrase_warning": { - "message": "Your password is stored locally, please change it in the security menu immediately.", - "description": "localStorage password warning." - }, - "remove": { - "message": "Remove", - "description": "Remove password." - }, - "download_enc_backup": { - "message": "Download Password-Protected Backup", - "description": "Download Encrypted Backup" - }, - "search": { - "message": "Search", - "description": "Search" - }, - "popout": { - "message": "Popup mode", - "description": "Make window turn into persistent popup" - }, - "lock": { - "message": "Lock", - "description": "Lock accounts" - }, - "edit": { - "message": "Edit", - "description": "Edit" - }, - "manual_dropbox": { - "message": "Manual Backup", - "description": "Manual backup" - }, - "use_autofill": { - "message": "Use Autofill", - "description": "Use Autofill" - }, - "use_high_contrast": { - "message": "Use High Contrast", - "description": "Use High Contrast" - }, - "theme": { - "message": "Theme", - "description": "Theme" - }, - "theme_light": { - "message": "Light", - "description": "Light theme" - }, - "theme_dark": { - "message": "Dark", - "description": "Dark theme" - }, - "theme_simple": { - "message": "Simple", - "description": "Simple theme" - }, - "theme_compact": { - "message": "Compact", - "description": "Compact theme" - }, - "theme_high_contrast": { - "message": "High Contrast", - "description": "High Contrast theme" - }, - "theme_flat": { - "message": "Flat", - "description": "Flat theme" - }, - "storage_sync_info": { - "message": "Automatically backup your data to 3rd party storage services.", - "description": "3rd party backup info" - }, - "browser_sync": { - "message": "Browser Sync", - "description": "Storage location" - }, - "sign_in": { - "message": "Sign in", - "description": "Sign in to 3rd party storage services" - }, - "sign_in_business": { - "message": "Sign in (Business)", - "description": "Sign in to 3rd party storage services" - }, - "onedrive_business_perms": { - "message": "Why do business accounts require more permissions?" - }, - "log_out": { - "message": "Logout", - "description": "Sign out of 3rd party storage services" - }, - "token_revoked": { - "message": "There was an issue connecting to your $SERVICE$ account, please sign in again.", - "description": "Error authenticating to backup service. $SERVICE$ will be replaced with a proper noun (E.g.: 'Google Drive' or 'Dropbox')", - "placeholders": { - "service": { - "content": "$1", - "example": "Google Drive" - } - } - }, - "otp_unsupported_warn": { - "message": "You have one or more Steam or Blizzard accounts. Unencrypted backups will not use standardized backup format.", - "description": "Warning if using account that is not supported by standard backup format." - }, - "otp_backup_inform": { - "message": "You can import backups from some other applications.", - "description": "Info text on import page" - }, - "otp_backup_learn": { - "message": "Learn more", - "description": "learn more link on import page. Placed after otp_backup_inform" - }, - "loading": { - "message": "Loading..." - }, - "autolock": { - "message": "Lock after" - }, - "minutes": { - "message": "minutes" - }, - "advanced": { - "message": "Advanced" - }, - "period": { - "message": "Period" - }, - "type": { - "message": "Type" - }, - "invalid": { - "message": "Invalid" - }, - "digits": { - "message": "Digits" - }, - "algorithm": { - "message": "Algorithm" - }, - "smart_filter": { - "message": "Smart Filter" - }, - "backup": { - "message": "Backup" - }, - "backup_file_info": { - "message": "Backup your data to a file." - }, - "password_policy_default_hint": { - "message": "Your password does not meet your organization's security requirements. Contact your administrator for more information." - }, - "advisor": { - "message": "Advisor" - }, - "advisor_insight_password_not_set": { - "message": "Set a password to protect your data." - }, - "advisor_insight_auto_lock_not_set": { - "message": "Enable auto-lock to protect your data." - }, - "advisor_insight_browser_sync_not_enabled": { - "message": "Browser sync is disabled. Enabling it allows accounts to be synced across browsers." - }, - "advisor_insight_auto_fill_not_enabled": { - "message": "Autofill can be enabled to automatically fill codes into websites." - }, - "advisor_insight_smart_filter_not_enabled": { - "message": "Enabling smart filter allows for quick access to accounts." - }, - "show_all_insights": { - "message": "Show all insights." - }, - "no_insight_available": { - "message": "No insights found, everything looks good!" - }, - "danger": { - "message": "Danger" - }, - "warning": { - "message": "Warning" - }, - "info": { - "message": "Info" - }, - "dismiss": { - "message": "Dismiss" - }, - "learn_more": { - "message": "Learn more" - }, - "enable_context_menu": { - "message": "Add to context menu" - }, - "no_entires": { - "message": "No accounts to display. Add your first account now." - }, - "permissions": { - "message": "Permissions" - }, - "permission_revoke": { - "message": "Revoke" - }, - "permission_show_required_permissions": { - "message": "Show non-revocable permissions" - }, - "permission_required": { - "message": "This is a required permission and cannot be revoked." - }, - "permission_active_tab": { - "message": "Access to the current tab to scan QR codes." - }, - "permission_storage": { - "message": "Access to browser storage to store account data." - }, - "permission_identity": { - "message": "Allows sign in to 3rd party storage services." - }, - "permission_alarms": { - "message": "Allows auto-lock to work." - }, - "permission_scripting": { - "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." - }, - "permission_clipboard_write": { - "message": "Grants write-only access to the clipboard to copy codes to clipboard when you click on the account." - }, - "permission_context_menus": { - "message": "Adds Authenticator to context menu." - }, - "permission_sync_clock": { - "message": "Allows clock sync with Google." - }, - "permission_dropbox": { - "message": "Allows backup to Dropbox." - }, - "permission_dropbox_cannot_revoke": { - "message": "You must disable Dropbox backup first." - }, - "permission_drive": { - "message": "Allows backup to Google Drive." - }, - "permission_drive_cannot_revoke": { - "message": "You must disable Google Drive backup first." - }, - "permission_onedrive": { - "message": "Allows backup to OneDrive." - }, - "permission_onedrive_cannot_revoke": { - "message": "You must disable OneDrive backup first." - }, - "permission_unknown_permission": { - "message": "Unknown permission. If see this message, please send a bug report." + "extName": { + "message": "Authenticator", + "description": "Extension Name." + }, + "extShortName": { + "message": "Authenticator", + "description": "Extension Short Name." + }, + "extDesc": { + "message": "Authenticator generates two-factor authentication codes in your browser.", + "description": "Extension Description." + }, + "added": { + "message": " has been added.", + "description": "Added Account." + }, + "errorqr": { + "message": "Unrecognized QR code.", + "description": "QR Error." + }, + "errorsecret": { + "message": "Invalid account secret", + "description": "Secret Error." + }, + "add_code": { + "message": "Add account", + "description": "Add account." + }, + "add_qr": { + "message": "Scan QR Code", + "description": "Scan QR Code." + }, + "add_secret": { + "message": "Manual Entry", + "description": "Manual Entry." + }, + "migration_fail": { + "message": "Import failed. If you are migrating data from Google Authenticator, please re-export your data from Google Authenticator and try again.", + "description": "Import migration data failed." + }, + "migration_partly_fail": { + "message": "Some account data was not imported successfully.", + "description": "Some migration data is broken." + }, + "close": { + "message": "Close", + "description": "Close." + }, + "ok": { + "message": "Ok", + "description": "OK." + }, + "yes": { + "message": "Yes", + "description": "Yes." + }, + "no": { + "message": "No", + "description": "No." + }, + "account": { + "message": "Account", + "description": "Account." + }, + "accountName": { + "message": "Username", + "description": "Account Name." + }, + "issuer": { + "message": "Issuer", + "description": "Issuer." + }, + "secret": { + "message": "Secret", + "description": "Secret." + }, + "updateSuccess": { + "message": "Success.", + "description": "Update Success." + }, + "updateFailure": { + "message": "Failure.", + "description": "Update Failure." + }, + "about": { + "message": "About", + "description": "About." + }, + "settings": { + "message": "Settings", + "description": "Settings." + }, + "security": { + "message": "Security", + "description": "Security." + }, + "current_phrase": { + "message": "Current Password", + "description": "Current Passphrase." + }, + "new_phrase": { + "message": "New Password", + "description": "New Passphrase." + }, + "phrase": { + "message": "Password", + "description": "Passphrase." + }, + "confirm_phrase": { + "message": "Confirm Password", + "description": "Confirm Passphrase." + }, + "confirm_delete": { + "message": "Are you sure you want to delete this account? This action cannot be undone.", + "description": "Remove entry confirmation" + }, + "confirm_delete_all": { + "message": "I understand that all of my data will be irrecoverably deleted.", + "description": "Message that user is required to acknowledge before clearing all data." + }, + "delete_all": { + "message": "Reset Authenticator" + }, + "delete_all_warning": { + "message": "This will delete all of your data and completely reset Authenticator. You will not be able to recover any deleted data! You should consider saving a backup before resetting Authenticator." + }, + "security_warning": { + "message": "This password will be used to encrypt your accounts. No one can help you if you forget the password.", + "description": "Passphrase Warning." + }, + "update": { + "message": "Update", + "description": "Update." + }, + "phrase_incorrect": { + "message": "You cannot add a new account until all accounts are decrypted. Please enter the correct password before continuing.", + "description": "Passphrase Incorrect." + }, + "phrase_incorrect_export": { + "message": "Accounts that were not able to be decrypted will not be included in this backup.", + "description": "Skip Unable-decripted Data." + }, + "phrase_not_match": { + "message": "Password does not match.", + "description": "Passphrase Not Match." + }, + "encrypted": { + "message": "Encrypted", + "description": "Encrypted." + }, + "copied": { + "message": "Copied", + "description": "Copied." + }, + "feedback": { + "message": "Feedback", + "description": "Feedback." + }, + "translate": { + "message": "Translate", + "description": "Translate." + }, + "source": { + "message": "Source Code", + "description": "Source Code." + }, + "passphrase_info": { + "message": "Enter password to decrypt account data.", + "description": "Passphrase Info" + }, + "sync_clock": { + "message": "Sync Clock with Google", + "description": "Sync Clock" + }, + "remember_phrase": { + "message": "Remember Password", + "description": "Remember Passphrase" + }, + "clock_too_far_off": { + "message": "Caution! Your local clock is too far off, please fix it before continuing.", + "description": "Local Time is Too Far Off" + }, + "remind_backup": { + "message": "Do you have a backup for your accounts? Don't wait until it's too late!", + "description": "Remind Backup" + }, + "capture_failed": { + "message": "Capture failed, please reload the page and try again.", + "description": "Capture Failed" + }, + "capture_local_file_failed": { + "message": "Are you trying to scan QR code from a local file? Use Import QR Image Backup instead.", + "description": "Import QR image backup instead of scan local image" + }, + "based_on_time": { + "message": "Time Based", + "description": "Time Based" + }, + "based_on_counter": { + "message": "Counter Based", + "description": "Counter Based" + }, + "resize_popup_page": { + "message": "Preferences", + "description": "Popup Page Settings" + }, + "scale": { + "message": "Scale", + "description": "Scale" + }, + "export_info": { + "message": "Warning: all backups are unencrypted. Want to add an account to another app? Hover over the top right part of any account and hit the hidden button.", + "description": "Export menu info text" + }, + "download_backup": { + "message": "Download Backup File", + "description": "Download backup file." + }, + "import_backup": { + "message": "Import Backup", + "description": "Import backup." + }, + "import_backup_file": { + "message": "Import Backup File", + "description": "Import backup file." + }, + "import_backup_qr": { + "message": "Import QR Image Backup", + "description": "Import qr image backup." + }, + "import_qr_images": { + "message": "Import QR Images", + "description": "Import qr images. Shown as add account method." + }, + "import_backup_code": { + "message": "Import Text Backup", + "description": "Import backup code." + }, + "import_otp_urls": { + "message": "Import OTP URLs", + "description": "Import OTP URLs. Shown as add account method." + }, + "import_backup_qr_partly_failed": { + "message": "Import successful, but some QR codes could not be recognized.", + "description": "Import successful, but some QR image cannot be recognized." + }, + "import_backup_qr_in_batches": { + "message": "You can select multiple files to import backup in batches.", + "description": "You can select multiple image files to import backup in batches." + }, + "show_all_entries": { + "message": "Show all entries", + "description": "Show all entries." + }, + "dropbox_risk": { + "message": "Warning: backups are unencrypted. Use at your own risk.", + "description": "Backup risk warning." + }, + "import_error_password": { + "message": "You must provide correct password to import backups.", + "description": "Error password warning when import backups." + }, + "local_passphrase_warning": { + "message": "Your password is stored locally, please change it in the security menu immediately.", + "description": "localStorage password warning." + }, + "remove": { + "message": "Remove", + "description": "Remove password." + }, + "download_enc_backup": { + "message": "Download Password-Protected Backup", + "description": "Download Encrypted Backup" + }, + "search": { + "message": "Search", + "description": "Search" + }, + "popout": { + "message": "Popup mode", + "description": "Make window turn into persistent popup" + }, + "lock": { + "message": "Lock", + "description": "Lock accounts" + }, + "edit": { + "message": "Edit", + "description": "Edit" + }, + "manual_dropbox": { + "message": "Manual Backup", + "description": "Manual backup" + }, + "use_autofill": { + "message": "Use Autofill", + "description": "Use Autofill" + }, + "use_high_contrast": { + "message": "Use High Contrast", + "description": "Use High Contrast" + }, + "theme": { + "message": "Theme", + "description": "Theme" + }, + "theme_light": { + "message": "Light", + "description": "Light theme" + }, + "theme_dark": { + "message": "Dark", + "description": "Dark theme" + }, + "theme_simple": { + "message": "Simple", + "description": "Simple theme" + }, + "theme_compact": { + "message": "Compact", + "description": "Compact theme" + }, + "theme_high_contrast": { + "message": "High Contrast", + "description": "High Contrast theme" + }, + "theme_flat": { + "message": "Flat", + "description": "Flat theme" + }, + "storage_sync_info": { + "message": "Automatically backup your data to 3rd party storage services.", + "description": "3rd party backup info" + }, + "browser_sync": { + "message": "Browser Sync", + "description": "Storage location" + }, + "sign_in": { + "message": "Sign in", + "description": "Sign in to 3rd party storage services" + }, + "sign_in_business": { + "message": "Sign in (Business)", + "description": "Sign in to 3rd party storage services" + }, + "onedrive_business_perms": { + "message": "Why do business accounts require more permissions?" + }, + "log_out": { + "message": "Logout", + "description": "Sign out of 3rd party storage services" + }, + "token_revoked": { + "message": "There was an issue connecting to your $SERVICE$ account, please sign in again.", + "description": "Error authenticating to backup service. $SERVICE$ will be replaced with a proper noun (E.g.: 'Google Drive' or 'Dropbox')", + "placeholders": { + "service": { + "content": "$1", + "example": "Google Drive" + } } + }, + "otp_unsupported_warn": { + "message": "You have one or more Steam or Blizzard accounts. Unencrypted backups will not use standardized backup format.", + "description": "Warning if using account that is not supported by standard backup format." + }, + "otp_backup_inform": { + "message": "You can import backups from some other applications.", + "description": "Info text on import page" + }, + "otp_backup_learn": { + "message": "Learn more", + "description": "learn more link on import page. Placed after otp_backup_inform" + }, + "loading": { + "message": "Loading..." + }, + "autolock": { + "message": "Lock after" + }, + "minutes": { + "message": "minutes" + }, + "advanced": { + "message": "Advanced" + }, + "period": { + "message": "Period" + }, + "type": { + "message": "Type" + }, + "invalid": { + "message": "Invalid" + }, + "digits": { + "message": "Digits" + }, + "algorithm": { + "message": "Algorithm" + }, + "smart_filter": { + "message": "Smart Filter" + }, + "backup": { + "message": "Backup" + }, + "backup_file_info": { + "message": "Backup your data to a file." + }, + "password_policy_default_hint": { + "message": "Your password does not meet your organization's security requirements. Contact your administrator for more information." + }, + "advisor": { + "message": "Advisor" + }, + "advisor_insight_password_not_set": { + "message": "Set a password to protect your data." + }, + "advisor_insight_auto_lock_not_set": { + "message": "Enable auto-lock to protect your data." + }, + "advisor_insight_browser_sync_not_enabled": { + "message": "Browser sync is disabled. Enabling it allows accounts to be synced across browsers." + }, + "advisor_insight_auto_fill_not_enabled": { + "message": "Autofill can be enabled to automatically fill codes into websites." + }, + "advisor_insight_smart_filter_not_enabled": { + "message": "Enabling smart filter allows for quick access to accounts." + }, + "show_all_insights": { + "message": "Show all insights." + }, + "no_insight_available": { + "message": "No insights found, everything looks good!" + }, + "danger": { + "message": "Danger" + }, + "warning": { + "message": "Warning" + }, + "info": { + "message": "Info" + }, + "dismiss": { + "message": "Dismiss" + }, + "learn_more": { + "message": "Learn more" + }, + "enable_context_menu": { + "message": "Add to context menu" + }, + "no_entires": { + "message": "No accounts to display. Add your first account now." + }, + "permissions": { + "message": "Permissions" + }, + "permission_revoke": { + "message": "Revoke" + }, + "permission_show_required_permissions": { + "message": "Show non-revocable permissions" + }, + "permission_required": { + "message": "This is a required permission and cannot be revoked." + }, + "permission_active_tab": { + "message": "Access to the current tab to scan QR codes." + }, + "permission_storage": { + "message": "Access to browser storage to store account data." + }, + "permission_identity": { + "message": "Allows sign in to 3rd party storage services." + }, + "permission_alarms": { + "message": "Allows auto-lock to work." + }, + "permission_scripting": { + "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "permission_clipboard_write": { + "message": "Grants write-only access to the clipboard to copy codes to clipboard when you click on the account." + }, + "permission_context_menus": { + "message": "Adds Authenticator to context menu." + }, + "permission_sync_clock": { + "message": "Allows clock sync with Google." + }, + "permission_dropbox": { + "message": "Allows backup to Dropbox." + }, + "permission_dropbox_cannot_revoke": { + "message": "You must disable Dropbox backup first." + }, + "permission_drive": { + "message": "Allows backup to Google Drive." + }, + "permission_drive_cannot_revoke": { + "message": "You must disable Google Drive backup first." + }, + "permission_onedrive": { + "message": "Allows backup to OneDrive." + }, + "permission_onedrive_cannot_revoke": { + "message": "You must disable OneDrive backup first." + }, + "permission_unknown_permission": { + "message": "Unknown permission. If see this message, please send a bug report." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" + } } diff --git a/src/components/Popup/PreferencesPage.vue b/src/components/Popup/PreferencesPage.vue index 8bace36c..299b9d8d 100644 --- a/src/components/Popup/PreferencesPage.vue +++ b/src/components/Popup/PreferencesPage.vue @@ -89,6 +89,10 @@ export default Vue.extend({ }, set(smartFilter: boolean) { this.$store.commit("menu/setSmartFilter", smartFilter); + this.$store.commit( + "notification/alert", + this.i18n.activate_auto_filter + ); }, }, enableContextMenu: { diff --git a/src/models/settings.ts b/src/models/settings.ts index f40cb2e1..aac7a84b 100644 --- a/src/models/settings.ts +++ b/src/models/settings.ts @@ -67,43 +67,12 @@ export class UserSettings { const settings: UserSettingsData = {}; for (const key in data) { - if ( - [ - "autofill", - "driveEncrypted", - "driveRevoked", - "dropboxEncrypted", - "dropboxRevoked", - "enableContextMenu", - "oneDriveBusiness", - "oneDriveEncrypted", - "oneDriveRevoked", - "smartFilter", - "enableContextMenu", - ].includes(key) - ) { - settings[ - key as - | "autofill" - | "driveEncrypted" - | "driveRevoked" - | "dropboxEncrypted" - | "dropboxRevoked" - | "enableContextMenu" - | "oneDriveBusiness" - | "oneDriveEncrypted" - | "oneDriveRevoked" - | "smartFilter" - | "enableContextMenu" - ] = data[key] === "true"; - } else if ( - ["autolock", "lastRemindingBackupTime", "offset", "zoom"].includes(key) - ) { - settings[ - key as "autolock" | "lastRemindingBackupTime" | "offset" | "zoom" - ] = Number(data[key]); - } else if (["advisorIgnoreList"].includes(key)) { - settings[key as "advisorIgnoreList"] = JSON.parse(data[key]); + if (isBooleanOption(key)) { + settings[key] = data[key] === "true"; + } else if (isNumberOption(key)) { + settings[key] = Number(data[key]); + } else if (isJSONOption(key)) { + settings[key] = JSON.parse(data[key]); } else { settings[key as keyof UserSettingsData] = data[key]; } @@ -204,3 +173,44 @@ export class UserSettings { return { ...syncableSettings, ...localSettings }; } } + +type BooleanOption = + | "autofill" + | "driveEncrypted" + | "driveRevoked" + | "dropboxEncrypted" + | "dropboxRevoked" + | "enableContextMenu" + | "oneDriveBusiness" + | "oneDriveEncrypted" + | "oneDriveRevoked" + | "smartFilter"; + +type NumberOption = "autolock" | "lastRemindingBackupTime" | "offset" | "zoom"; + +type JSONOption = "advisorIgnoreList"; + +function isBooleanOption(key: string): key is BooleanOption { + return [ + "autofill", + "driveEncrypted", + "driveRevoked", + "dropboxEncrypted", + "dropboxRevoked", + "enableContextMenu", + "oneDriveBusiness", + "oneDriveEncrypted", + "oneDriveRevoked", + "smartFilter", + ].includes(key); +} + +function isNumberOption(key: string): key is NumberOption { + return ["autolock", "lastRemindingBackupTime", "offset", "zoom"].includes( + key + ); +} + +function isJSONOption(key: string): key is JSONOption { + return ["advisorIgnoreList"].includes(key); +} diff --git a/src/store/Accounts.ts b/src/store/Accounts.ts index c6e29304..57f6a47e 100644 --- a/src/store/Accounts.ts +++ b/src/store/Accounts.ts @@ -53,7 +53,7 @@ export class Accounts implements Module { getters: { matchedEntries: string[] } ) { return ( - UserSettings.items.smartFilter !== false && + UserSettings.items.smartFilter === true && getters.matchedEntries.length ); }, diff --git a/src/store/Menu.ts b/src/store/Menu.ts index 24cc55a5..48487d6e 100644 --- a/src/store/Menu.ts +++ b/src/store/Menu.ts @@ -11,7 +11,7 @@ export class Menu implements Module { version: chrome.runtime.getManifest()?.version || "0.0.0", zoom: Number(UserSettings.items.zoom) || 100, useAutofill: UserSettings.items.autofill === true, - smartFilter: UserSettings.items.smartFilter !== false, + smartFilter: UserSettings.items.smartFilter === true, enableContextMenu: UserSettings.items.enableContextMenu === true, theme: UserSettings.items.theme || (isSafari ? "flat" : "normal"), autolock: Number(UserSettings.items.autolock) || 30, From ed4497f1de4083ed8ee89ac7def49e15c0f0355c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 19:32:35 +0000 Subject: [PATCH 4/5] Add new strings This commit was automatically made by run 10150634955 --- _locales/ar/messages.json | 3 +++ _locales/bg/messages.json | 3 +++ _locales/bn/messages.json | 3 +++ _locales/ca/messages.json | 3 +++ _locales/cs/messages.json | 3 +++ _locales/da/messages.json | 3 +++ _locales/de/messages.json | 3 +++ _locales/el/messages.json | 3 +++ _locales/es/messages.json | 3 +++ _locales/et/messages.json | 3 +++ _locales/fa/messages.json | 3 +++ _locales/fi/messages.json | 3 +++ _locales/fr/messages.json | 3 +++ _locales/fy/messages.json | 3 +++ _locales/he/messages.json | 3 +++ _locales/hi/messages.json | 3 +++ _locales/hr/messages.json | 3 +++ _locales/hu/messages.json | 3 +++ _locales/id/messages.json | 3 +++ _locales/it/messages.json | 3 +++ _locales/ja/messages.json | 3 +++ _locales/ko/messages.json | 3 +++ _locales/nl/messages.json | 3 +++ _locales/no/messages.json | 3 +++ _locales/pl/messages.json | 3 +++ _locales/pt/messages.json | 3 +++ _locales/pt_BR/messages.json | 3 +++ _locales/ro/messages.json | 3 +++ _locales/ru/messages.json | 3 +++ _locales/sq/messages.json | 3 +++ _locales/sr/messages.json | 3 +++ _locales/sv/messages.json | 3 +++ _locales/th/messages.json | 3 +++ _locales/tr/messages.json | 3 +++ _locales/uk/messages.json | 3 +++ _locales/vi/messages.json | 3 +++ _locales/zh_CN/messages.json | 3 +++ _locales/zh_TW/messages.json | 3 +++ 38 files changed, 114 insertions(+) diff --git a/_locales/ar/messages.json b/_locales/ar/messages.json index 9e9183b4..74c559a0 100644 --- a/_locales/ar/messages.json +++ b/_locales/ar/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/bg/messages.json b/_locales/bg/messages.json index 88487f88..ade63a90 100644 --- a/_locales/bg/messages.json +++ b/_locales/bg/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/bn/messages.json b/_locales/bn/messages.json index 24719bde..5124e8f9 100644 --- a/_locales/bn/messages.json +++ b/_locales/bn/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/ca/messages.json b/_locales/ca/messages.json index ce18f172..23c7bdca 100644 --- a/_locales/ca/messages.json +++ b/_locales/ca/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json index 57a61c6a..ff081f39 100644 --- a/_locales/cs/messages.json +++ b/_locales/cs/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/da/messages.json b/_locales/da/messages.json index 35a4ed8d..42c1482a 100644 --- a/_locales/da/messages.json +++ b/_locales/da/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/de/messages.json b/_locales/de/messages.json index f7a48ac1..1a0dbd0a 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/el/messages.json b/_locales/el/messages.json index 77a59aa1..7381805c 100644 --- a/_locales/el/messages.json +++ b/_locales/el/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/es/messages.json b/_locales/es/messages.json index b6bf2034..0b3443f0 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/et/messages.json b/_locales/et/messages.json index 816ad9b1..25d67dfd 100644 --- a/_locales/et/messages.json +++ b/_locales/et/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/fa/messages.json b/_locales/fa/messages.json index 520dee12..b4b9ca05 100644 --- a/_locales/fa/messages.json +++ b/_locales/fa/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/fi/messages.json b/_locales/fi/messages.json index d415ccdc..65e6ce0e 100644 --- a/_locales/fi/messages.json +++ b/_locales/fi/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 51a88595..dc0eb11e 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/fy/messages.json b/_locales/fy/messages.json index 38746ae6..a08cb2c5 100644 --- a/_locales/fy/messages.json +++ b/_locales/fy/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/he/messages.json b/_locales/he/messages.json index 38b23c91..e7929e7c 100644 --- a/_locales/he/messages.json +++ b/_locales/he/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/hi/messages.json b/_locales/hi/messages.json index 5937a6de..b22bdde9 100644 --- a/_locales/hi/messages.json +++ b/_locales/hi/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/hr/messages.json b/_locales/hr/messages.json index 46dfadab..3d652a8c 100644 --- a/_locales/hr/messages.json +++ b/_locales/hr/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/hu/messages.json b/_locales/hu/messages.json index 6f3c305c..715bd4b4 100644 --- a/_locales/hu/messages.json +++ b/_locales/hu/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/id/messages.json b/_locales/id/messages.json index bb44caa0..89c966f0 100644 --- a/_locales/id/messages.json +++ b/_locales/id/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 726361f5..7b0159ae 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json index 8644c62c..8b800256 100644 --- a/_locales/ja/messages.json +++ b/_locales/ja/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/ko/messages.json b/_locales/ko/messages.json index 18ff4e66..648de443 100644 --- a/_locales/ko/messages.json +++ b/_locales/ko/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/nl/messages.json b/_locales/nl/messages.json index 4848e1b7..e605c5c7 100644 --- a/_locales/nl/messages.json +++ b/_locales/nl/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/no/messages.json b/_locales/no/messages.json index 73c432e9..1c0a5767 100644 --- a/_locales/no/messages.json +++ b/_locales/no/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index 55f50854..3ededf95 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/pt/messages.json b/_locales/pt/messages.json index 6abd0efe..8f5ef419 100644 --- a/_locales/pt/messages.json +++ b/_locales/pt/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/pt_BR/messages.json b/_locales/pt_BR/messages.json index a5234f1d..2874ed52 100644 --- a/_locales/pt_BR/messages.json +++ b/_locales/pt_BR/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index 84e4472a..53f719aa 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index a1099b73..9f0a9b04 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/sq/messages.json b/_locales/sq/messages.json index 8dd6220a..eaa92a50 100644 --- a/_locales/sq/messages.json +++ b/_locales/sq/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/sr/messages.json b/_locales/sr/messages.json index 77d0f283..42fee35b 100644 --- a/_locales/sr/messages.json +++ b/_locales/sr/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index c53ee543..5fdc46e5 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/th/messages.json b/_locales/th/messages.json index 09b23bbb..5d22f1e6 100644 --- a/_locales/th/messages.json +++ b/_locales/th/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/tr/messages.json b/_locales/tr/messages.json index 32d22345..70262bdd 100644 --- a/_locales/tr/messages.json +++ b/_locales/tr/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/uk/messages.json b/_locales/uk/messages.json index 5eff9cb4..c40051a6 100644 --- a/_locales/uk/messages.json +++ b/_locales/uk/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/vi/messages.json b/_locales/vi/messages.json index c2668f2f..1147e0c2 100644 --- a/_locales/vi/messages.json +++ b/_locales/vi/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/zh_CN/messages.json b/_locales/zh_CN/messages.json index c057731a..4f0192df 100644 --- a/_locales/zh_CN/messages.json +++ b/_locales/zh_CN/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file diff --git a/_locales/zh_TW/messages.json b/_locales/zh_TW/messages.json index 1b9d4cc6..b7e1a4fa 100644 --- a/_locales/zh_TW/messages.json +++ b/_locales/zh_TW/messages.json @@ -514,5 +514,8 @@ }, "permission_scripting": { "message": "Inject scripts into he current tab to scan QR codes and allow auto-fill to work." + }, + "activate_auto_filter": { + "message": "Warning: Smart filter loosely matches the domain name to an account. Always verify that you are on the correct website before entering a code!" } } \ No newline at end of file From fb8bc84330e078f37f192de1ba2c04e7ed456fb2 Mon Sep 17 00:00:00 2001 From: Brendan Early Date: Thu, 1 Aug 2024 22:28:46 -0700 Subject: [PATCH 5/5] Create SECURITY.md (#1238) * Create SECURITY.md * Correct typo * review fixes * add sentence --- README.md | 11 +++++++++-- SECURITY.md | 11 +++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 SECURITY.md diff --git a/README.md b/README.md index 44712e5d..5e922963 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,16 @@ > Authenticator generates 2-Step Verification codes in your browser. -## Available for Chrome, Firefox, Microsoft Edge and Safari +## Available for Chrome, Firefox, and Microsoft Edge -[](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai) [](https://addons.mozilla.org/en-US/firefox/addon/auth-helper?src=external-github) [](https://microsoftedge.microsoft.com/addons/detail/ocglkepbibnalbgmbachknglpdipeoio) [Download on the App Store](https://apps.apple.com/us/app/authen/id1602945200?mt=12) +[](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai) [](https://addons.mozilla.org/en-US/firefox/addon/auth-helper?src=external-github) [](https://microsoftedge.microsoft.com/addons/detail/ocglkepbibnalbgmbachknglpdipeoio) + + +### Safari Edition + +A Safari edition of Authenticator is available on the App Store. We do not provide official support for the Safari edition. + +[Download on the App Store](https://apps.apple.com/us/app/authen/id1602945200?mt=12) ## Build Setup diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..e4ebbe40 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,11 @@ +# Security Policy + +## Supported Versions + +We support the latest versions published on the Chrome, Firefox, and Edge extension stores. + +## Reporting a Vulnerability + +Report potential vulnerabilities privately via [this form](https://github.com/Authenticator-Extension/Authenticator/security/advisories/new). +Where appropriate, include a proof-of-concept and reproduction steps. +We strive to provide an initial response within five days, but as this is a volunteer-run project, we make no guarantees. \ No newline at end of file