diff --git a/web/src/components/AssistantChat/ComposerButtons.tsx b/web/src/components/AssistantChat/ComposerButtons.tsx index 0bb8484b11..5b0325a6f6 100644 --- a/web/src/components/AssistantChat/ComposerButtons.tsx +++ b/web/src/components/AssistantChat/ComposerButtons.tsx @@ -8,10 +8,6 @@ import { useFue } from '@/lib/use-fue' import { FueCallout, FueDot } from '@/components/Fue' import { useRef, useState } from 'react' -function ChevronIcon() { - return -} - function VoiceAssistantIcon() { return ( void - piThinkingLabel?: string - piThinkingDisabled?: boolean - piThinkingOpen?: boolean - onPiThinkingToggle?: () => void // Scratchlist drawer toggle. When `onScratchlistToggle` is provided, a // notepad icon appears next to the schedule-send icon. Click toggles // composer-send-routing between chat and scratchlist; SessionChat owns @@ -511,42 +498,6 @@ export function ComposerButtons(props: { ) : null} - {props.piModelLabel ? ( - - ) : null} - - {props.piThinkingLabel ? ( - - ) : null} - {props.showTerminalButton ? (
- { - handleModelChange({ provider: piModel.provider, modelId: piModel.modelId }) - }} - onClose={closeAllPanels} - /> -
- ) - } - - // Thinking level panel - if (showPiThinkingPanel && selectedPiModel?.reasoning !== false) { - panels.push( -
- handleEffortChange(level)} - onClose={closeAllPanels} - /> -
- ) - } - - if (panels.length > 0) return <>{panels} - } - - // Non-Pi flavors: original unified gear menu + // Unified gear menu if (showSettings && (showCollaborationSettings || showPermissionSettings || showModelSettings || showModelEffortSettings || showModelReasoningEffortSettings || showEffortSettings || showFastModeSettings)) { return (
@@ -977,9 +897,11 @@ export function HappyComposer(props: {
{group.label}
- {group.models.map((piModel) => ( + {group.models.map((piModel) => { + const selected = selectedPiModel?.provider === piModel.provider && selectedPiModel?.modelId === piModel.modelId + return ( - ))} + ) + })}
)) ) : ( @@ -1209,12 +1132,9 @@ export function HappyComposer(props: { return null }, [ showSettings, - showPiModelPanel, - showPiThinkingPanel, agentFlavor, piModels, selectedPiModel, - closeAllPanels, showCollaborationSettings, showPermissionSettings, showModelSettings, @@ -1352,14 +1272,6 @@ export function HappyComposer(props: { onSchedule={setPendingSchedule} onClearSchedule={isControlled ? onClearScheduleProp : () => setPendingScheduleLocal(null)} hasAttachments={hasAttachments} - piModelLabel={piModelLabel} - piModelDisabled={controlsDisabled || !piHasModels} - piModelOpen={showPiModelPanel} - onPiModelToggle={handlePiModelToggle} - piThinkingLabel={piThinkingLabel} - piThinkingDisabled={controlsDisabled || !piHasModels || !selectedPiModel || selectedPiModel.reasoning === false} - piThinkingOpen={showPiThinkingPanel} - onPiThinkingToggle={handlePiThinkingToggle} scratchlistMode={props.scratchlistMode} scratchlistCount={props.scratchlistCount} onScratchlistToggle={props.onScratchlistToggle} diff --git a/web/src/components/AssistantChat/PiModelPanel.tsx b/web/src/components/AssistantChat/PiModelPanel.tsx deleted file mode 100644 index 899b2086c5..0000000000 --- a/web/src/components/AssistantChat/PiModelPanel.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { useTranslation } from '@/lib/use-translation' -import type { PiModelSummary } from '@/types/api' -import { groupModelsByProvider } from './piModelGroups' -import { FloatingOverlay } from '@/components/ChatInput/FloatingOverlay' - -export function PiModelPanel(props: { - models: PiModelSummary[] - currentModel: { provider: string; modelId: string } | null - controlsDisabled?: boolean - onSelect: (model: PiModelSummary) => void - onClose: () => void -}) { - const { t } = useTranslation() - const groups = groupModelsByProvider(props.models) - const disabled = props.controlsDisabled ?? false - - const isSelected = (piModel: PiModelSummary) => - props.currentModel?.provider === piModel.provider && - props.currentModel?.modelId === piModel.modelId - - return ( - -
-
- {t('misc.model')} -
- {groups.map((group) => ( -
-
- {group.label} -
- {group.models.map((piModel) => { - const selected = isSelected(piModel) - return ( - - ) - })} -
- ))} -
-
- ) -} diff --git a/web/src/components/AssistantChat/PiThinkingLevelPanel.tsx b/web/src/components/AssistantChat/PiThinkingLevelPanel.tsx deleted file mode 100644 index e778b31aa8..0000000000 --- a/web/src/components/AssistantChat/PiThinkingLevelPanel.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { PI_THINKING_LEVEL_LABELS } from '@hapi/protocol' -import type { PiThinkingLevelMap } from '@/types/api' -import { FloatingOverlay } from '@/components/ChatInput/FloatingOverlay' -import { isThinkingLevelSupported } from './piThinkingLevelOptions' - -const ALL_LEVELS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] as const - -/** - * Determine which thinking levels a model supports. - * - reasoning=false → no levels - * - reasoning=true (or unknown) + thinkingLevelMap → filter by map via isThinkingLevelSupported - * - reasoning=true (or unknown) + no map → all levels except xhigh - */ -function getSupportedLevels( - reasoning?: boolean, - thinkingLevelMap?: PiThinkingLevelMap, -): string[] { - if (reasoning === false) return [] - return ALL_LEVELS.filter((level) => isThinkingLevelSupported(level, thinkingLevelMap)) -} - -export function PiThinkingLevelPanel(props: { - currentLevel: string | null - reasoning?: boolean - thinkingLevelMap?: PiThinkingLevelMap - controlsDisabled?: boolean - onSelect: (level: string | null) => void - onClose: () => void -}) { - const supportedLevels = getSupportedLevels(props.reasoning, props.thinkingLevelMap) - const disabled = props.controlsDisabled ?? false - - if (supportedLevels.length === 0) return null - - return ( - -
-
- Thinking Level -
- {supportedLevels.map((level) => ( - - ))} -
-
- ) -}