From 9e5c5945f99f0509c7feb034eea88d658c0c19c1 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Sat, 1 Aug 2026 22:49:42 +0100 Subject: [PATCH] fix(views): clear the selection when entering a view without checkboxes The batch bar survived into vault health, the authenticator grid and the audit log, none of which render checkboxes - it kept offering Delete, Move to folder and Add tag on entries the user could no longer see selected. --- TEST_SCENARIOS.md | 2 ++ js/app.js | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/TEST_SCENARIOS.md b/TEST_SCENARIOS.md index 8248a1f..2b91aab 100644 --- a/TEST_SCENARIOS.md +++ b/TEST_SCENARIOS.md @@ -356,6 +356,8 @@ l'éditeur slideover : créer + éditer une entrée, ajouter/retirer des tags, ### G2 · *Fix* sur une entrée supprimée entre-temps — **sans objet** - **ACTION prévue** : ouvrir *Vault health* → mettre à la corbeille une entrée listée → revenir sur health sans *Recompute* → **Fix** sur cette entrée. - **Pourquoi c'est irréalisable** : G3 a rendu ce cas impossible à mettre en scène — le cache est invalidé à **chaque** mutation, donc revenir sur le tableau de bord recalcule toujours et l'entrée supprimée n'y figure plus. Le garde reste en place dans le code (`openEntryForFix` sort si `openSlideOver` renvoie `false`), il n'est simplement plus atteignable par l'interface. +- **Tentative la plus proche, vérifiée** : cocher une entrée dans la liste (la barre de sélection apparaît) → passer en *Vault health* → *Delete* depuis cette barre. Le tableau de bord se **recalcule tout seul** et l'entrée disparaît de la liste : toujours pas de liste périmée. +- **Défaut trouvé au passage** : la barre de sélection **survivait** au passage en vue santé (comme en authenticator et journal d'audit), qui n'affichent aucune case à cocher. Elle proposait *Delete* / *Move to folder* / *Add tag* sur des entrées qu'on ne voyait plus sélectionnées. La sélection est désormais vidée à l'entrée dans ces trois vues. ### G5 · activer / désactiver HIBP depuis la vue santé ✅ - **ACTION** : dans *Vault health*, activer la vérification HIBP → attendre la fin du scan **sans quitter la vue**. diff --git a/js/app.js b/js/app.js index 8cf3080..bf663e2 100644 --- a/js/app.js +++ b/js/app.js @@ -2288,12 +2288,21 @@ async function addTagToEntry(id, tag) { } catch (err) { toast(err.message, 'error'); } } +// Views that render no checkboxes: audit log, authenticator grid, vault health. +const VIEWS_WITHOUT_SELECTION = ['audit', 'authenticator', 'health']; + function renderGrid() { $('#contentTitle').textContent = viewTitle(); // Re-apply the keyboard cursor after the grid re-renders. Defer one // tick so the new cards are in the DOM before we query for them. setTimeout(applyCursorHighlight, 0); + // A selection made in the list survived into these views, where nothing + // shows what is selected — yet the batch bar still offered Delete, Move to + // folder and Add tag on rows the user could no longer see. + if (state.checked.size && VIEWS_WITHOUT_SELECTION.indexOf(state.view) !== -1) + state.checked.clear(); + // Audit log: read-only chronological feed, custom render. if (state.view === 'audit') { if (authTickTimer) { clearInterval(authTickTimer); authTickTimer = null; }