diff --git a/CHANGELOG.md b/CHANGELOG.md index f7cd285788c..892203a995c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Model commands: clarify direct and inline `/model` acknowledgements for non-default selections as session-scoped. Thanks @addu2612. - TUI/chat: skip full provider model normalization during context-window warmup while preserving provider-owned context metadata, avoiding cold-start stalls with large model registries. Thanks @547895019. - Memory Wiki: accept relative Markdown links that include the `.md` suffix during broken-wikilink validation, avoiding false positives for native render-mode links. Thanks @Kenneth8128. - OpenAI Codex: show the device-pairing code in the interactive SSH/headless prompt while keeping the short-lived code out of persistent runtime logs. Fixes #74212. Thanks @da22le123. diff --git a/src/auto-reply/reply/directive-handling.impl.ts b/src/auto-reply/reply/directive-handling.impl.ts index cc77f8b5b48..69b5d0a37d9 100644 --- a/src/auto-reply/reply/directive-handling.impl.ts +++ b/src/auto-reply/reply/directive-handling.impl.ts @@ -596,7 +596,7 @@ export async function handleDirectiveOnly( parts.push( modelSelection.isDefault ? `Model reset to default (${labelWithAlias}).` - : `Model set to ${labelWithAlias}.`, + : `Model set to ${labelWithAlias} for this session.`, ); if (profileOverride) { parts.push(`Auth profile set to ${profileOverride}.`); diff --git a/src/auto-reply/reply/directive-handling.model.test.ts b/src/auto-reply/reply/directive-handling.model.test.ts index a9633b59673..c6f3b1d5b24 100644 --- a/src/auto-reply/reply/directive-handling.model.test.ts +++ b/src/auto-reply/reply/directive-handling.model.test.ts @@ -939,6 +939,7 @@ describe("handleDirectiveOnly model persist behavior (fixes #1435)", () => { expect(result?.text).toContain("Model set to"); expect(result?.text).toContain("openai/gpt-4o"); + expect(result?.text).toContain("for this session"); expect(result?.text).not.toContain("failed"); expect(sessionEntry.liveModelSwitchPending).toBe(true); }); @@ -1046,7 +1047,9 @@ describe("handleDirectiveOnly model persist behavior (fixes #1435)", () => { }), ); - expect(result?.text).toContain("Model set to Opus (anthropic/claude-opus-4-6)."); + expect(result?.text).toContain( + "Model set to Opus (anthropic/claude-opus-4-6) for this session.", + ); expect(result?.text).toContain("Auth profile set to anthropic:work."); expect(sessionEntry.providerOverride).toBe("anthropic"); expect(sessionEntry.modelOverride).toBe("claude-opus-4-6"); diff --git a/src/auto-reply/reply/get-reply-directives-apply.ts b/src/auto-reply/reply/get-reply-directives-apply.ts index 499d807f7b2..c84323f93ed 100644 --- a/src/auto-reply/reply/get-reply-directives-apply.ts +++ b/src/auto-reply/reply/get-reply-directives-apply.ts @@ -303,7 +303,7 @@ export async function applyInlineDirectiveOverrides(params: { : undefined, modelSelection.isDefault ? `Model reset to default (${labelWithAlias}).` - : `Model set to ${labelWithAlias}.`, + : `Model set to ${labelWithAlias} for this session.`, modelResolution.profileOverride ? `Auth profile set to ${modelResolution.profileOverride}.` : undefined,