From 9c0bb3162f949dd11aa08af773928424fee15a2b Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Fri, 20 Feb 2026 19:14:07 +0200 Subject: [PATCH] Add Alt+Q shortcut for Match / Quick Match --- artifacts/docs/ux_power_user_shortcuts.md | 1 + client/components/app/Appbar.vue | 7 +++++++ client/pages/item/_id/index.vue | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/artifacts/docs/ux_power_user_shortcuts.md b/artifacts/docs/ux_power_user_shortcuts.md index 4930f5352..aa5318661 100644 --- a/artifacts/docs/ux_power_user_shortcuts.md +++ b/artifacts/docs/ux_power_user_shortcuts.md @@ -16,6 +16,7 @@ To improve the efficiency of batch operations, global keyboard listeners have be - **Merge**: `Ctrl + M` (Requires 2+ selected items). - **Move to Library**: `Ctrl + Shift + M`. - **Reset Metadata**: `Alt + R`. (Note: `Alt` is used specifically to avoid conflict with standard "Reload" `Ctrl + R`). + - **Quick Match / Match**: `Alt + Q`. - **Navigation Shortcuts** (Requires an active library selection): - **Home**: `Alt + H`. diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index 4f88b9146..745d7fa3f 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -574,6 +574,13 @@ export default { } else if (this.isItemPage) { this.$eventBus.$emit('item_shortcut_reset') } + } else if (alt && e.key.toLowerCase() === 'q') { + e.preventDefault() + if (this.numMediaItemsSelected > 0) { + this.batchAutoMatchClick() + } else if (this.isItemPage) { + this.$eventBus.$emit('item_shortcut_match') + } } else if (alt && this.currentLibrary?.id) { const libId = this.currentLibrary.id if (e.key.toLowerCase() === 'h') { diff --git a/client/pages/item/_id/index.vue b/client/pages/item/_id/index.vue index 72e97a29a..a4879b267 100644 --- a/client/pages/item/_id/index.vue +++ b/client/pages/item/_id/index.vue @@ -517,6 +517,10 @@ export default { this.$store.commit('setBookshelfBookIds', []) this.$store.commit('showEditModalOnTab', { libraryItem: this.libraryItem, tab: 'cover' }) }, + showEditMatch() { + this.$store.commit('setBookshelfBookIds', []) + this.$store.commit('showEditModalOnTab', { libraryItem: this.libraryItem, tab: 'match' }) + }, openEbook() { this.$store.commit('showEReader', { libraryItem: this.libraryItem, keepProgress: true }) }, @@ -912,6 +916,7 @@ export default { this.contextMenuAction({ action: 'move' }) }) this.$eventBus.$on('item_shortcut_reset', this.resetMetadata) + this.$eventBus.$on('item_shortcut_match', this.showEditMatch) }, beforeDestroy() { this.$eventBus.$off(`${this.libraryItem.id}_updated`, this.libraryItemUpdated) @@ -928,6 +933,7 @@ export default { this.$eventBus.$off('item_shortcut_consolidate', this.consolidate) this.$eventBus.$off('item_shortcut_move') this.$eventBus.$off('item_shortcut_reset', this.resetMetadata) + this.$eventBus.$off('item_shortcut_match', this.showEditMatch) } }