From e414b4f600d7e4a26eb6447a1a0862568aa924ff Mon Sep 17 00:00:00 2001
From: Zaki <18zaki18@gmail.com>
Date: Sat, 9 May 2026 19:04:36 +0100
Subject: [PATCH] Fix Ctrl+A and add Delete key shortcut
Ctrl+A auth check was inverted (!hidden instead of hidden), preventing selection in vault. Added Delete key shortcut: moves selected entries to trash (or batch permanent delete in trash view). Added Del to keyboard shortcuts help.
---
js/app.js | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/js/app.js b/js/app.js
index b5103f1..0ab3002 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1244,7 +1244,7 @@ function highlightText(text, query) {
function showShortcutsHelp() {
const overlay = document.createElement('div');
overlay.className = 'custom-modal-overlay show';
- overlay.innerHTML = `
⌨️ Keyboard Shortcuts
Ctrl+NNew entryCtrl+ASelect allCtrl+FSearchCtrl+TToggle trashCtrl+LLock vaultCtrl+SSave entryEscClose modal / deselect◀ ▶Detail view nav?Show this help
💡 Click any entry to select, Shift+click for range, Ctrl+click to toggle
`;
+ overlay.innerHTML = `⌨️ Keyboard Shortcuts
Ctrl+NNew entryCtrl+ASelect allCtrl+FSearchCtrl+TToggle trashCtrl+LLock vaultCtrl+SSave entryDelDelete selectedEscClose modal / deselect◀ ▶Detail view nav?Show this help
💡 Click any entry to select, Shift+click for range, Ctrl+click to toggle
`;
document.body.appendChild(overlay);
overlay.addEventListener('click', e => { if (e.target === overlay) overlay.remove(); });
}
@@ -1408,7 +1408,15 @@ document.addEventListener('keydown', function(e) {
showShortcutsHelp();
return;
}
-
+
+ // Delete key — move to trash or permanently delete selected entries
+ if (e.key === 'Delete' && !isInput && selectedIds.size > 0 && document.getElementById('authSection').classList.contains('hidden')) {
+ e.preventDefault();
+ if (showTrash) batchPermanentDelete();
+ else batchDelete();
+ return;
+ }
+
// Only handle Ctrl+[key], no Shift/Alt/Meta
if (!e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) return;
@@ -1431,7 +1439,7 @@ document.addEventListener('keydown', function(e) {
if (document.getElementById('addModal').classList.contains('show')) addEntry();
else if (document.getElementById('editModal').classList.contains('show')) saveEdit();
} else if (code === 'KeyA') {
- if (!isInput && !document.getElementById('authSection').classList.contains('hidden')) {
+ if (!isInput && document.getElementById('authSection').classList.contains('hidden')) {
getFilteredEntries(view === 'grouped' || view === 'detail').forEach(e => selectedIds.add(e.id));
updateBatchBar();
render();