From b32526bd761aa0ebfafc0ce284a36deed9409e4f Mon Sep 17 00:00:00 2001 From: usrnk1 <7547651+usrnk1@users.noreply.github.com> Date: Mon, 29 Jun 2026 13:04:45 +0200 Subject: [PATCH] fix intermittent double-click on context menu button --- .../src/components/session-context-usage.tsx | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/packages/app/src/components/session-context-usage.tsx b/packages/app/src/components/session-context-usage.tsx index 0d6b761c94..389bb8b8a2 100644 --- a/packages/app/src/components/session-context-usage.tsx +++ b/packages/app/src/components/session-context-usage.tsx @@ -5,7 +5,6 @@ import { ProgressCircleV2 } from "@opencode-ai/ui/v2/progress-circle-v2" import { Button } from "@opencode-ai/ui/button" import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" -import { useFile } from "@/context/file" import { useLayout } from "@/context/layout" import { useSync } from "@/context/sync" import { useLanguage } from "@/context/language" @@ -13,7 +12,6 @@ import { useProviders } from "@/hooks/use-providers" import { useSDK } from "@/context/sdk" import { getSessionContext, getSessionTokenTotal } from "@/components/session/session-context-metrics" import { useSessionLayout } from "@/pages/session/session-layout" -import { createSessionTabs } from "@/pages/session/helpers" interface SessionContextUsageProps { variant?: "button" | "indicator" @@ -34,7 +32,6 @@ function openSessionContext(args: { export function SessionContextUsage(props: SessionContextUsageProps) { const sync = useSync() - const file = useFile() const layout = useLayout() const language = useLanguage() const sdk = useSDK() @@ -43,11 +40,6 @@ export function SessionContextUsage(props: SessionContextUsageProps) { const variant = createMemo(() => props.variant ?? "button") const buttonAppearance = createMemo(() => props.buttonAppearance ?? "default") - const tabState = createSessionTabs({ - tabs, - pathFromTab: file.pathFromTab, - normalizeTab: (tab) => (tab.startsWith("file://") ? file.tab(tab) : tab), - }) const messages = createMemo(() => (params.id ? (sync().data.message[params.id] ?? []) : [])) const info = createMemo(() => (params.id ? sync().session.get(params.id) : undefined)) @@ -68,12 +60,15 @@ export function SessionContextUsage(props: SessionContextUsageProps) { const openContext = () => { if (!params.id) return - if (tabState.activeTab() === "context") { + const sessionView = view() + if (sessionView.reviewPanel.opened() && tabs().active() === "context") { + const hasOtherTabs = tabs().all().some((tab) => tab !== "context" && tab !== "review") tabs().close("context") + if (!hasOtherTabs) sessionView.reviewPanel.close() return } openSessionContext({ - view: view(), + view: sessionView, layout, tabs: tabs(), }) @@ -81,7 +76,20 @@ export function SessionContextUsage(props: SessionContextUsageProps) { const circle = () => (
- +
) const circleV2 = () => ( @@ -119,10 +127,10 @@ export function SessionContextUsage(props: SessionContextUsageProps) { return ( - - - {circle()} - + + {circle()} + + - - + + + + - - - + + + ) }