diff --git a/ui/e2e/social.spec.ts b/ui/e2e/social.spec.ts index b89fd68..f9756f2 100644 --- a/ui/e2e/social.spec.ts +++ b/ui/e2e/social.spec.ts @@ -107,6 +107,13 @@ test('lobby: hiding a finished game removes it (kebab → ❌), keeping the othe await expect(page.locator('.rowwrap', { hasText: 'Rick' })).toBeVisible(); }); +test('lobby: the active-row chevron opens the game (not a no-op)', async ({ page }) => { + await loginLobby(page); + // The inert-looking '>' on an active row is a tap target that opens the game, like the row. + await page.locator('.rowwrap', { hasText: 'Ann' }).locator('.chev').click(); + await expect(page.locator('[data-cell]').first()).toBeVisible(); +}); + test('lobby hamburger shows the pending notification count', async ({ page }) => { await loginLobby(page); // One incoming friend request (Rick) + one invitation (Kaya) = 2. diff --git a/ui/src/screens/Lobby.svelte b/ui/src/screens/Lobby.svelte index 236d421..11248e4 100644 --- a/ui/src/screens/Lobby.svelte +++ b/ui/src/screens/Lobby.svelte @@ -79,9 +79,11 @@ if (!drag) return; const dx = e.clientX - drag.x0; const dy = e.clientY - drag.y0; - if (Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy) * 1.4) { + // Only a finished row reveals on a horizontal swipe; that swipe then suppresses the tap so it + // does not also open the game. Active rows ignore swipes and stay plain tap-to-open. + if (finished && Math.abs(dx) > 40 && Math.abs(dx) > Math.abs(dy) * 1.4) { swiped = true; - revealedId = dx < 0 && finished ? drag.id : null; + revealedId = dx < 0 ? drag.id : null; } drag = null; } @@ -207,7 +209,9 @@ {#if group.finished} {:else} - + + {/if} @@ -341,6 +345,9 @@ .chev { flex: 0 0 auto; width: 30px; + padding: 10px 0; + border: none; + background: none; text-align: center; color: var(--text-muted); font-size: 1.4rem;