From d2747d70d6d84a332eae49f694cef8dd83ce449c Mon Sep 17 00:00:00 2001 From: David Hill Date: Wed, 11 Mar 2026 15:45:06 +0000 Subject: [PATCH] fix(app): keep session options button active while sharing Avoid a one-frame active-state flicker when transitioning from the options dropdown to the share popover by treating the pending-share state as active until the popover opens. --- packages/app/src/pages/session/message-timeline.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/app/src/pages/session/message-timeline.tsx b/packages/app/src/pages/session/message-timeline.tsx index ad3b30ad67..aa540e6a93 100644 --- a/packages/app/src/pages/session/message-timeline.tsx +++ b/packages/app/src/pages/session/message-timeline.tsx @@ -744,7 +744,11 @@ export function MessageTimeline(props: { icon="dot-grid" variant="ghost" class="size-6 rounded-md data-[expanded]:bg-surface-base-active" + classList={{ + "bg-surface-base-active": share.open || title.pendingShare, + }} aria-label={language.t("common.moreOptions")} + aria-expanded={title.menuOpen || share.open || title.pendingShare} ref={(el: HTMLButtonElement) => { more = el }} @@ -761,8 +765,10 @@ export function MessageTimeline(props: { } if (title.pendingShare) { event.preventDefault() - setTitle("pendingShare", false) - requestAnimationFrame(() => setShare({ open: true, dismiss: null })) + requestAnimationFrame(() => { + setShare({ open: true, dismiss: null }) + setTitle("pendingShare", false) + }) } }} >