diff --git a/keepassxc-browser/_locales/en/messages.json b/keepassxc-browser/_locales/en/messages.json
index 970bbee..fd03783 100644
--- a/keepassxc-browser/_locales/en/messages.json
+++ b/keepassxc-browser/_locales/en/messages.json
@@ -714,6 +714,10 @@
"message": "Separate the group with slashes, for example: Group/ChildGroup.",
"description": "Default group help text."
},
+ "optionsLabelDefaultPasskeyGroup": {
+ "message": "Default group for saving new passkeys:",
+ "description": "Default passkey group options text."
+ },
"optionsLabelDefaultGroupCheckboxText": {
"message": "Always ask where to save new credentials",
"description": "Default group checkbox help text."
diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js
index 69d2200..25c53d2 100755
--- a/keepassxc-browser/background/keepass.js
+++ b/keepassxc-browser/background/keepass.js
@@ -608,15 +608,13 @@ keepass.passkeysRegister = async function(tab, args = []) {
const kpAction = kpActions.PASSKEYS_REGISTER;
const nonce = keepassClient.getNonce();
-
- // Parse publicKey
- const publicKey = args[0];
- const origin = args[1];
+ const [ publicKey, origin ] = args;
const messageData = {
action: kpAction,
publicKey: JSON.parse(JSON.stringify(publicKey)),
origin: origin,
+ groupName: page?.settings?.defaultPasskeyGroup,
keys: keepass.getCryptoKeys()
};
diff --git a/keepassxc-browser/background/page.js b/keepassxc-browser/background/page.js
index ca6ba9a..81f4308 100755
--- a/keepassxc-browser/background/page.js
+++ b/keepassxc-browser/background/page.js
@@ -16,6 +16,7 @@ const defaultSettings = {
credentialSorting: SORT_BY_GROUP_AND_TITLE,
debugLogging: false,
defaultGroup: '',
+ defaultPasskeyGroup: '',
defaultGroupAlwaysAsk: false,
downloadFaviconAfterSave: false,
passkeys: false,
diff --git a/keepassxc-browser/options/options.html b/keepassxc-browser/options/options.html
index 72090a8..779ace9 100644
--- a/keepassxc-browser/options/options.html
+++ b/keepassxc-browser/options/options.html
@@ -368,6 +368,23 @@
+
+
+
diff --git a/keepassxc-browser/options/options.js b/keepassxc-browser/options/options.js
index 9a460f6..56e598f 100644
--- a/keepassxc-browser/options/options.js
+++ b/keepassxc-browser/options/options.js
@@ -112,6 +112,7 @@ options.initGeneralSettings = async function() {
$('#tab-general-settings select#afterFillSorting').value = options.settings['afterFillSorting'];
$('#tab-general-settings select#afterFillSortingTotp').value = options.settings['afterFillSortingTotp'];
$('#tab-general-settings input#defaultGroup').value = options.settings['defaultGroup'];
+ $('#tab-general-settings input#defaultPasskeyGroup').value = options.settings['defaultPasskeyGroup'];
$('#tab-general-settings input#clearCredentialTimeout').value = options.settings['clearCredentialsTimeout'];
const generalSettingsRadioInputs = document.querySelectorAll('#tab-general-settings input[type=radio]');
@@ -203,6 +204,7 @@ options.initGeneralSettings = async function() {
});
});
+ // Default group
$('#defaultGroupButton').addEventListener('click', async function() {
const value = $('#defaultGroup').value;
options.settings['defaultGroup'] = (value.length > 0 ? value : '');
@@ -215,6 +217,19 @@ options.initGeneralSettings = async function() {
await options.saveSettings();
});
+ // Default passkey group
+ $('#defaultPasskeyGroupButton').addEventListener('click', async function() {
+ const value = $('#defaultPasskeyGroup').value;
+ options.settings['defaultPasskeyGroup'] = (value.length > 0 ? value : '');
+ await options.saveSettings();
+ });
+
+ $('#defaultPasskeyGroupButtonReset').addEventListener('click', async function() {
+ $('#defaultPasskeyGroup').value = '';
+ options.settings['defaultPasskeyGroup'] = '';
+ await options.saveSettings();
+ });
+
let temporarySettings;
const dialogImportSettingsModal = new bootstrap.Modal('#dialogImportSettings',
{ keyboard: true, focus: false, backdrop: true });
diff --git a/keepassxc-protocol.md b/keepassxc-protocol.md
index d43bb67..74def34 100644
--- a/keepassxc-protocol.md
+++ b/keepassxc-protocol.md
@@ -483,6 +483,7 @@ Unencrypted message:
"action": "passkeys-register",
"publicKey": PublicKeyCredentialCreationOptions,
"origin": "tZvLrBzkQ9GxXq9PvKJj4iAnfPT0VZ3Q",
+ "groupName": "",
"keys: [
{
"id": "",