From e58ec4b9ca44c266beb0053823b7e351caeaa022 Mon Sep 17 00:00:00 2001 From: Nick Noble Date: Thu, 11 Dec 2025 15:36:00 -0500 Subject: [PATCH 1/7] instant activate soup items --- js/app/packages/app/component/UnifiedListView.tsx | 3 +++ .../macro-entity/src/components/EntityWithEverything.tsx | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/js/app/packages/app/component/UnifiedListView.tsx b/js/app/packages/app/component/UnifiedListView.tsx index 6d880f5563a..c8b587f6ea5 100644 --- a/js/app/packages/app/component/UnifiedListView.tsx +++ b/js/app/packages/app/component/UnifiedListView.tsx @@ -266,6 +266,9 @@ export function UnifiedListView(props: UnifiedListViewProps) { return; } + // select first item from entityList until interaction + // Skip auto-selection on touch devices - no keyboard navigation + if (isTouchDevice) return; if (!firstEntity) return; setViewDataStore(selectedView(), 'highlightedId', firstEntity.id); diff --git a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx index e8af38f9e62..14651e42f28 100644 --- a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx +++ b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx @@ -2,6 +2,7 @@ import { EntityIcon } from '@core/component/EntityIcon'; import type { Property } from '@core/component/Properties/types'; import { LabelAndHotKey, Tooltip } from '@core/component/Tooltip'; import { TOKENS } from '@core/hotkey/tokens'; +import { isTouchDevice } from '@core/mobile/isTouchDevice'; import { matches } from '@core/util/match'; import CheckIcon from '@icon/regular/check.svg'; import { tryToTypedNotification } from '@notifications'; @@ -805,12 +806,13 @@ export function EntityWithEverything( data-checked={props.checked} class="everything-entity relative group/entity" classList={{ - 'bg-hover/30': props.highlighted && !props.checked, + 'bg-hover/30': !isTouchDevice && props.highlighted && !props.checked, 'bg-accent/5': props.checked, 'bracket outline outline-accent/20 outline-offset-[-1px]': - props.selected, + !isTouchDevice && props.selected, }} onMouseOver={(e) => { + if (isTouchDevice) return; // Don't set highlighted state on touch if (!didCursorMove(e)) { return; } From cead5ca3d02537bd5757eb8fbbcae5b98cd98bac Mon Sep 17 00:00:00 2001 From: Nick Noble Date: Thu, 11 Dec 2025 15:37:28 -0500 Subject: [PATCH 2/7] bozzy only while touching for visual feedback --- js/app/packages/app/component/UnifiedListView.tsx | 2 -- .../macro-entity/src/components/EntityWithEverything.tsx | 4 +++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/js/app/packages/app/component/UnifiedListView.tsx b/js/app/packages/app/component/UnifiedListView.tsx index c8b587f6ea5..1e548dffdb6 100644 --- a/js/app/packages/app/component/UnifiedListView.tsx +++ b/js/app/packages/app/component/UnifiedListView.tsx @@ -266,8 +266,6 @@ export function UnifiedListView(props: UnifiedListViewProps) { return; } - // select first item from entityList until interaction - // Skip auto-selection on touch devices - no keyboard navigation if (isTouchDevice) return; if (!firstEntity) return; diff --git a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx index 14651e42f28..3f10e35128f 100644 --- a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx +++ b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx @@ -810,9 +810,11 @@ export function EntityWithEverything( 'bg-accent/5': props.checked, 'bracket outline outline-accent/20 outline-offset-[-1px]': !isTouchDevice && props.selected, + 'active:bracket active:outline active:outline-accent/20 active:outline-offset-[-1px]': + isTouchDevice && !props.checked, }} onMouseOver={(e) => { - if (isTouchDevice) return; // Don't set highlighted state on touch + if (isTouchDevice) return; if (!didCursorMove(e)) { return; } From da6c640bcd6b56fafce527b37617e41067598151 Mon Sep 17 00:00:00 2001 From: Nick Noble Date: Wed, 17 Dec 2025 16:09:59 -0500 Subject: [PATCH 3/7] hide split navigation elements that should be hidden on mobile --- .../app/component/split-layout/components/SplitHeader.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/app/packages/app/component/split-layout/components/SplitHeader.tsx b/js/app/packages/app/component/split-layout/components/SplitHeader.tsx index 8b3a9963419..1989071c8bc 100644 --- a/js/app/packages/app/component/split-layout/components/SplitHeader.tsx +++ b/js/app/packages/app/component/split-layout/components/SplitHeader.tsx @@ -128,7 +128,7 @@ function SplitPreviewToggle() { function SplitControlButtons() { return (
- +
@@ -159,12 +159,12 @@ export function SplitHeader(props: { ref: Setter }) {
{ ctx.layoutRefs.headerRight = ref; }} /> -
+
From 755766c773ff536621217bb246cc385b33d926e5 Mon Sep 17 00:00:00 2001 From: Nick Noble Date: Wed, 17 Dec 2025 16:10:36 -0500 Subject: [PATCH 4/7] increase container breakpoint for multiline soup item layout --- .../src/components/EntityWithEverything.tsx | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx index 3f10e35128f..e844b039b0f 100644 --- a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx +++ b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx @@ -503,16 +503,16 @@ export function EntityWithEverything( const isSearch = () => isSearchEntity(props.entity); return ( -
+
{/* sometimes senderName and senderEmail are the same */}
{/* Icon inline with sender in narrow mode */} -