From e60965ee19f67067b4e2a23132f58b85e9c01225 Mon Sep 17 00:00:00 2001 From: Till JS Date: Fri, 17 Apr 2026 15:08:04 +0200 Subject: [PATCH] fix(mobile): disable text selection on list rows to unblock long-press context menu On mobile, long-press was selecting the row text instead of firing `contextmenu`. Adds `user-select: none` + `-webkit-touch-callout: none` on collapsed rows across 12 ListViews (notes, todo, dreams, journal, firsts, contacts, places, mail, moodlit, chat, calendar) and re-enables `user-select: text` on the inline-editor variants so the textarea stays selectable while editing. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/mana/apps/web/src/lib/modules/calendar/ListView.svelte | 3 +++ apps/mana/apps/web/src/lib/modules/chat/ListView.svelte | 3 +++ apps/mana/apps/web/src/lib/modules/contacts/ListView.svelte | 3 +++ apps/mana/apps/web/src/lib/modules/dreams/ListView.svelte | 6 ++++++ apps/mana/apps/web/src/lib/modules/firsts/ListView.svelte | 6 ++++++ apps/mana/apps/web/src/lib/modules/journal/ListView.svelte | 6 ++++++ apps/mana/apps/web/src/lib/modules/mail/ListView.svelte | 3 +++ apps/mana/apps/web/src/lib/modules/moodlit/ListView.svelte | 2 +- apps/mana/apps/web/src/lib/modules/notes/ListView.svelte | 6 ++++++ apps/mana/apps/web/src/lib/modules/places/ListView.svelte | 3 +++ apps/mana/apps/web/src/lib/modules/todo/ListView.svelte | 3 +++ .../web/src/lib/modules/todo/components/TaskItem.svelte | 2 +- 12 files changed, 44 insertions(+), 2 deletions(-) diff --git a/apps/mana/apps/web/src/lib/modules/calendar/ListView.svelte b/apps/mana/apps/web/src/lib/modules/calendar/ListView.svelte index 8736b23eb..f1e3fbc62 100644 --- a/apps/mana/apps/web/src/lib/modules/calendar/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/calendar/ListView.svelte @@ -309,6 +309,9 @@ cursor: pointer; border-radius: 0.25rem; transition: background 0.15s; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .event-row:hover { background: hsl(var(--color-surface-hover)); diff --git a/apps/mana/apps/web/src/lib/modules/chat/ListView.svelte b/apps/mana/apps/web/src/lib/modules/chat/ListView.svelte index 32ff0effd..401ba8b03 100644 --- a/apps/mana/apps/web/src/lib/modules/chat/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/chat/ListView.svelte @@ -179,6 +179,9 @@ cursor: pointer; transition: background 0.15s; min-height: 44px; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .conv-item:hover { background: hsl(var(--color-surface-hover)); diff --git a/apps/mana/apps/web/src/lib/modules/contacts/ListView.svelte b/apps/mana/apps/web/src/lib/modules/contacts/ListView.svelte index eb0ae8448..6eb025950 100644 --- a/apps/mana/apps/web/src/lib/modules/contacts/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/contacts/ListView.svelte @@ -237,6 +237,9 @@ cursor: pointer; text-align: left; transition: background 0.15s; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .contact-item:hover { background: hsl(var(--color-surface-hover)); diff --git a/apps/mana/apps/web/src/lib/modules/dreams/ListView.svelte b/apps/mana/apps/web/src/lib/modules/dreams/ListView.svelte index 9aa19e0cf..cec8972a1 100644 --- a/apps/mana/apps/web/src/lib/modules/dreams/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/dreams/ListView.svelte @@ -634,6 +634,9 @@ border-radius: 0.25rem; cursor: pointer; transition: background 0.15s; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .dream-item:hover { background: hsl(var(--color-surface-hover)); @@ -764,6 +767,9 @@ border: 1px solid hsl(var(--color-primary) / 0.3); border-radius: 0.375rem; background: hsl(var(--color-primary) / 0.03); + user-select: text; + -webkit-user-select: text; + -webkit-touch-callout: default; } .dream-item.editing:hover { background: hsl(var(--color-primary) / 0.03); diff --git a/apps/mana/apps/web/src/lib/modules/firsts/ListView.svelte b/apps/mana/apps/web/src/lib/modules/firsts/ListView.svelte index 1ec0892cb..ed58030a3 100644 --- a/apps/mana/apps/web/src/lib/modules/firsts/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/firsts/ListView.svelte @@ -915,6 +915,9 @@ background: transparent; cursor: pointer; transition: all 0.15s; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .entry-card:hover { background: hsl(var(--color-surface-hover)); @@ -1088,6 +1091,9 @@ cursor: default; border-color: hsl(var(--color-primary) / 0.3); background: hsl(var(--color-primary) / 0.03); + user-select: text; + -webkit-user-select: text; + -webkit-touch-callout: default; } .entry-card.editing:hover, .entry-card.converting:hover { diff --git a/apps/mana/apps/web/src/lib/modules/journal/ListView.svelte b/apps/mana/apps/web/src/lib/modules/journal/ListView.svelte index 00858b302..0e2a91282 100644 --- a/apps/mana/apps/web/src/lib/modules/journal/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/journal/ListView.svelte @@ -586,6 +586,9 @@ border-radius: 0.25rem; cursor: pointer; transition: background 0.15s; + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .entry-item:hover { background: hsl(var(--color-surface-hover)); @@ -689,6 +692,9 @@ border: 1px solid hsl(var(--color-primary) / 0.3); border-radius: 0.375rem; background: hsl(var(--color-primary) / 0.03); + user-select: text; + -webkit-user-select: text; + -webkit-touch-callout: default; } .entry-item.editing:hover { background: hsl(var(--color-primary) / 0.03); diff --git a/apps/mana/apps/web/src/lib/modules/mail/ListView.svelte b/apps/mana/apps/web/src/lib/modules/mail/ListView.svelte index 63c917a6b..e9afcd3c2 100644 --- a/apps/mana/apps/web/src/lib/modules/mail/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/mail/ListView.svelte @@ -337,6 +337,9 @@ cursor: pointer; transition: background 0.15s; color: hsl(var(--color-muted-foreground)); + user-select: none; + -webkit-user-select: none; + -webkit-touch-callout: none; } .thread-row:hover { background: hsl(var(--color-muted)); diff --git a/apps/mana/apps/web/src/lib/modules/moodlit/ListView.svelte b/apps/mana/apps/web/src/lib/modules/moodlit/ListView.svelte index 3119e027f..fc2ae15c0 100644 --- a/apps/mana/apps/web/src/lib/modules/moodlit/ListView.svelte +++ b/apps/mana/apps/web/src/lib/modules/moodlit/ListView.svelte @@ -220,7 +220,7 @@