- Add ComparePane.tsx: side-by-side AI response comparison - Add Memory.tsx: memory management page with CRUD UI - Add McpPermissionDialog.tsx: MCP tool permission approval dialog - Add McpResponseDisplay.tsx: MCP response visualization - Add MessageBoundary.tsx + MessageListErrorBoundary.tsx: error resilience - Add EmptyState.tsx: contextual empty state component - Add KeyboardShortcutsDialog.tsx: keyboard shortcut reference - Add message-parts/: ActionRow, CompactCard, MistakeRecoverySentinel, ReasoningBlock, SendToTerminalMenu, StatsLine, SummaryCard - Add useDraftPersistence.ts: draft message persistence hook - Add useTerminals.ts: terminal session management hook - Add keyboard-shortcuts.ts + tool-utils.ts: shared utilities - Extend components: ChatInput, MessageBubble, MessageList, Workspace, panes - Extend hooks: useTerminalSocket, useSessionStream test suite - Update pages: Home, Project — workspace layout and session flow
12 lines
582 B
TypeScript
12 lines
582 B
TypeScript
import { useEffect, useState } from 'react';
|
|
import { terminalsRegistry, type TerminalRegistration } from '@/lib/events';
|
|
|
|
// v1.10 booterm: tiny subscription hook for the mounted-terminals registry.
|
|
// Used by the right-click "Send to terminal" submenu so it always reflects
|
|
// currently-open terminal panes without prop drilling from Workspace.
|
|
export function useTerminals(): TerminalRegistration[] {
|
|
const [list, setList] = useState(() => terminalsRegistry.list());
|
|
useEffect(() => terminalsRegistry.subscribe(() => setList(terminalsRegistry.list())), []);
|
|
return list;
|
|
}
|