From d34173df9fd5204f3e08e1d799b54798a1c5d2c9 Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Sun, 16 Aug 2026 10:49:59 -0400 Subject: [PATCH] =?UTF-8?q?Hold-to-read=20works=20on=20occupied=20squares?= =?UTF-8?q?=20=E2=80=94=20creatures=20and=20wizards=20included?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The press-and-hold card peek lived only on the floor rects, and any creature or wizard token sitting there swallowed the pointer events — so the democratic monster, whose plain tap selects it for commands, had no path to its card at all. The hold gesture now lives on the tokens too (a fired hold swallows the tap so nothing double-fires), and the board suppresses the mobile long-press callout so the gesture stays clean on phones. Co-Authored-By: Claude Fable 5 --- packages/web/src/Board.svelte | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/web/src/Board.svelte b/packages/web/src/Board.svelte index d597671..99407ea 100644 --- a/packages/web/src/Board.svelte +++ b/packages/web/src/Board.svelte @@ -373,7 +373,10 @@ {@const cy = p.position.y * CELL + CELL * 0.36} { ev.stopPropagation(); onPlayerClick?.(p.id); }} + onclick={(ev) => { ev.stopPropagation(); if (peekFired) { peekFired = false; return; } onPlayerClick?.(p.id); }} + onpointerdown={() => pressCell(p.position)} + onpointerup={releasePress} + onpointerleave={releasePress} onkeydown={() => {}} class="wizard" > @@ -412,7 +415,10 @@ {@const ccy = c.position.y * CELL + CELL * 0.7} { ev.stopPropagation(); onCreatureClick?.(c.id); }} + onclick={(ev) => { ev.stopPropagation(); if (peekFired) { peekFired = false; return; } onCreatureClick?.(c.id); }} + onpointerdown={() => pressCell(c.position)} + onpointerup={releasePress} + onpointerleave={releasePress} onkeydown={() => {}} > {#if USE_TOKEN_ART && CREATURE_ART[c.kind]} @@ -473,6 +479,10 @@