diff --git a/packages/client/ui-model/src/client/ModelSelect.tsx b/packages/client/ui-model/src/client/ModelSelect.tsx index 0207bf32af..6e4aa3be11 100644 --- a/packages/client/ui-model/src/client/ModelSelect.tsx +++ b/packages/client/ui-model/src/client/ModelSelect.tsx @@ -75,16 +75,16 @@ export function ModelSelect({ locked, directory, load, select }: ModelSelectInje const effortChoices = useMemo(() => reasoning === undefined ? [] : [ - ...reasoning.defaultEffort === undefined - ? [{ key: 'provider-default', effort: undefined, label: 'Provider default' }] - : [], - ...reasoning.efforts.map((effort: ModelReasoningEffort) => ({ - key: `effort:${effort.id}`, - effort: effort.id, - label: effort.name, - ...effort.description === undefined ? {} : { description: effort.description }, - })), - ], [reasoning]) + ...reasoning.defaultEffort === undefined + ? [{ key: 'provider-default', effort: undefined, label: 'Provider default' }] + : [], + ...reasoning.efforts.map((effort: ModelReasoningEffort) => ({ + key: `effort:${effort.id}`, + effort: effort.id, + label: effort.name, + ...effort.description === undefined ? {} : { description: effort.description }, + })), + ], [reasoning]) const busy = state.status === 'selecting' // Mount-time load resolves the trigger label; every open refreshes. @@ -186,7 +186,13 @@ export function ModelSelect({ locked, directory, load, select }: ModelSelectInje aria-controls={open ? `${id}-menu` : undefined} title={triggerLabel} disabled={locked} - onClick={() => { open ? close() : show() }} + onClick={() => { + if (open) { + close() + } else { + show() + } + }} > {modelLabel} {effortLabel !== undefined && {effortLabel}} @@ -203,13 +209,13 @@ export function ModelSelect({ locked, directory, load, select }: ModelSelectInje > {pane === 'root' && ( <> - {reasoning !== undefined && ( - - ))} + + ))} )} diff --git a/packages/client/ui-model/src/client/slots.ts b/packages/client/ui-model/src/client/slots.ts index f05087ab62..d508026f78 100644 --- a/packages/client/ui-model/src/client/slots.ts +++ b/packages/client/ui-model/src/client/slots.ts @@ -13,11 +13,11 @@ export interface ModelSelectInjected { /** The session's shared directory store (same instance the /model popup reads). */ directory: SnapshotStore /** Refresh the advisory directory (fire-and-forget; errors land on the store). */ - load(): void + load: () => void /** * Select a complete provider/model/reasoning target through the shared route. * @param target - model target and optional adapter-owned effort. * @returns whether the host accepted the selection. */ - select(target: ModelTarget): Promise + select: (target: ModelTarget) => Promise }