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;