diff --git a/src/renderer/components/thread/ThreadDraftView.test.tsx b/src/renderer/components/thread/ThreadDraftView.test.tsx index ef3ef9bf..91d28580 100644 --- a/src/renderer/components/thread/ThreadDraftView.test.tsx +++ b/src/renderer/components/thread/ThreadDraftView.test.tsx @@ -960,6 +960,48 @@ describe("ThreadDraftView", () => { }); }); + it("submits an explicit Fast-off selection in the launch config", async () => { + const onStart = vi.fn<(input: unknown) => void>(); + + render( + , + ); + + await waitFor(() => { + const props = composerSpy.mock.lastCall?.[0] as { + controls: Array<{ kind?: string; currentModel?: string }>; + }; + expect( + props.controls.some( + (control) => control.kind === "provider-model" && control.currentModel === "composer-2", + ), + ).toBe(true); + }); + + fireEvent.click(screen.getByText("set-prompt")); + fireEvent.click(screen.getByText("submit")); + + expect(onStart).toHaveBeenCalledWith( + expect.objectContaining({ + config: expect.objectContaining({ fast: false }), + }), + ); + }); + it("keeps a globally disabled built-in out of the composer and launch config", async () => { const onStart = vi.fn<(input: unknown) => void>(); useSharedSettings.setState({ diff --git a/src/renderer/components/thread/ThreadDraftView.tsx b/src/renderer/components/thread/ThreadDraftView.tsx index bf25715d..db5dfbc3 100644 --- a/src/renderer/components/thread/ThreadDraftView.tsx +++ b/src/renderer/components/thread/ThreadDraftView.tsx @@ -43,6 +43,7 @@ import { resolvePreferredAgentKind, resolveProviderDraftConfig, resolveSavedProviderDraftConfig, + supportsUsableFastMode, resolveThinkingValue, } from "./threadDraftViewHelpers"; import { friendlyError } from "@/shared/messages"; @@ -1075,7 +1076,10 @@ export function ThreadDraftView(props: { model, ...(effort ? { effort } : {}), ...(contextSize ? { contextSize } : {}), - ...(fast ? { fast } : {}), + ...(selectedAgentForConfig && + supportsUsableFastMode(selectedAgentForConfig.capabilities, model) + ? { fast } + : {}), ...(thinking ? { thinking } : {}), ...(mode ? { mode } : {}), ...(approvalPolicy ? { approvalPolicy } : {}),