diff --git a/apps/web/src/composerDraftStore.test.ts b/apps/web/src/composerDraftStore.test.ts index 246dfbf4c01e698e57b2805a7c15fa323d44620e..80ec5c39aac8101100382dc3535f701797a5b6da 100644 --- a/apps/web/src/composerDraftStore.test.ts +++ b/apps/web/src/composerDraftStore.test.ts @@ -242,3 +242,23 @@ describe("composerDraftStore project draft thread mapping", () => { }); }); }); + +describe("composerDraftStore setModel", () => { + const threadId = ThreadId.makeUnsafe("thread-model"); + + beforeEach(() => { + useComposerDraftStore.setState({ + draftsByThreadId: {}, + draftThreadsByThreadId: {}, + projectDraftThreadIdByProjectId: {}, + }); + }); + + it("keeps explicit DEFAULT_MODEL overrides instead of coercing to null", () => { + const store = useComposerDraftStore.getState(); + + store.setModel(threadId, "gpt-5.3-codex"); + + expect(useComposerDraftStore.getState().draftsByThreadId[threadId]?.model).toBe("gpt-5.3-codex"); + }); +}); diff --git a/apps/web/src/composerDraftStore.ts b/apps/web/src/composerDraftStore.ts index c132aa07a84c91bed75c9f3bab3d838936a4c7c0..675aa7402b78665ac7e8addbaf67b8cb0fcee7f5 100644 --- a/apps/web/src/composerDraftStore.ts +++ b/apps/web/src/composerDraftStore.ts @@ -1,5 +1,4 @@ import { - DEFAULT_MODEL, DEFAULT_REASONING, ProjectId, REASONING_OPTIONS, @@ -671,11 +670,7 @@ export const useComposerDraftStore = create()( if (threadId.length === 0) { return; } - const normalizedModelCandidate = normalizeModelSlug(model); - const normalizedModel = - normalizedModelCandidate && normalizedModelCandidate !== DEFAULT_MODEL - ? normalizedModelCandidate - : null; + const normalizedModel = normalizeModelSlug(model) ?? null; set((state) => { const existing = state.draftsByThreadId[threadId]; if (!existing && normalizedModel === null) {