From f5837cd985b5698e6081433d06e4c3f56a1d5153 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sun, 16 Aug 2026 16:36:58 -0400 Subject: [PATCH] frontend: hover-revealed controls stay put where hovering is impossible (task 2697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A finger cannot hover, and on a note card the hover toolbar is the only way to pin, colour or archive — so on a phone those notes could not be acted on at all. Same for deleting a checklist item, a saved view, an attachment or a preview. Marked rather than rewritten inline: one `.hover-reveal` class on the five elements and a single rule that says what it is for. The `group-hover:` reveal stays in the markup because the trigger differs per component (named groups); only the fallback is shared. `@media (hover: none)` asks the device directly, which is more honest than inferring from viewport width — a narrow window on a laptop still hovers, and a large tablet still doesn't. It sits after the Tailwind directives so it beats the opacity-0/pointer-events-none utilities on source order without !important. Tap targets follow the same shape: p-1.5 around an 18px icon lands near 30px, which is fine for a cursor and too small for a thumb. Bumped to 44px on coarse pointers only, so desktop chrome doesn't inflate. The drag grip is deliberately NOT revealed yet. Reordering still uses HTML5 drag-and-drop, which never fires from touch, so showing the handle would only promise something that does nothing. It comes with the pointer-events rewrite. Co-Authored-By: Claude Opus 5 (1M context) --- frontend/src/components/AppShell.vue | 2 +- frontend/src/components/LinkPreview.vue | 2 +- frontend/src/components/NoteCard.vue | 6 +++-- frontend/src/components/NoteChecklist.vue | 2 +- frontend/src/components/NoteEditor.vue | 2 +- frontend/src/style.css | 31 +++++++++++++++++++++++ 6 files changed, 39 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/AppShell.vue b/frontend/src/components/AppShell.vue index c8541ed..2a4ab75 100644 --- a/frontend/src/components/AppShell.vue +++ b/frontend/src/components/AppShell.vue @@ -388,7 +388,7 @@ async function signOut() { {{ f.name }}