v1.12.2: live tok/s + ctx display next to status indicator
ChatThroughput renders inline beside StatusDot while streaming or tool_running. Subscribes to existing usage frames via sessionEvents. Hides when status drops to idle/error or data is older than 10s. Addresses the 2026-05-21 spike's UX gap where slow streams looked identical to dead streams — now there's a live token velocity readout that immediately distinguishes the two. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import { toast } from 'sonner';
|
||||
import type { Chat, WorkspacePane } from '@/api/types';
|
||||
import { BottomSheet } from '@/components/BottomSheet';
|
||||
import { StatusDot } from '@/components/StatusDot';
|
||||
import { ChatThroughput } from '@/components/ChatThroughput';
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
@@ -206,6 +207,7 @@ export function MobileTabSwitcher({
|
||||
>
|
||||
<span className="shrink-0 text-muted-foreground">{paneIcon(active?.kind ?? 'chat')}</span>
|
||||
<StatusDot chatId={activeChatId} />
|
||||
<ChatThroughput chatId={activeChatId} />
|
||||
<span className="truncate flex-1 text-left">{activeLabel}</span>
|
||||
<ChevronDown size={14} className="opacity-60 shrink-0" />
|
||||
</button>
|
||||
@@ -237,6 +239,7 @@ export function MobileTabSwitcher({
|
||||
>
|
||||
<span className="shrink-0 text-muted-foreground">{paneIcon(pane.kind)}</span>
|
||||
<StatusDot chatId={cid ?? null} />
|
||||
<ChatThroughput chatId={cid ?? null} />
|
||||
{renamingChatId === cid && cid ? (
|
||||
<input
|
||||
autoFocus
|
||||
|
||||
Reference in New Issue
Block a user