fix(mattermost): clarify model picker runtime behavior

This commit is contained in:
Vincent Koc
2026-05-04 15:37:58 -07:00
parent f8e080386d
commit e39d3b4223
3 changed files with 4 additions and 1 deletions

View File

@@ -64,6 +64,7 @@ Docs: https://docs.openclaw.ai
- Channels/plugins: key bundled package-state probes, env/config presence, and read-only command defaults by channel id instead of manifest plugin id, preserving setup and native-command detection for channel plugins whose package id differs from the channel alias. Thanks @vincentkoc.
- Docker: prune package-excluded plugin dist directories from runtime images unless the build explicitly opts that plugin in, so official external plugins such as Feishu stay install-on-demand instead of shipping partial metadata without compiled runtime output. Fixes #77424. Thanks @vincentkoc.
- Model switching: include the exact additive allowlist repair command when `/model ... --runtime ...` targets a blocked model, and make Telegram's model picker say that it changes only the session model while leaving the runtime unchanged. Thanks @vincentkoc.
- Mattermost: clarify that the model picker only changes the session model and that runtime switches require `/oc_model <provider/model> --runtime <runtime>`. Thanks @vincentkoc.
- Doctor/config: keep active `auth.profiles` metadata intact when `doctor --fix` strips stale secret fields from configs, repairing legacy `<provider>:default` API-key profile metadata when model fallbacks or explicit `model@profile` refs still depend on it. Fixes #77400.
- CLI/update: disable and skip plugins that fail package-update plugin sync, so a broken npm/ClawHub/git/marketplace plugin cannot turn a successful OpenClaw package update into a failed update result. Thanks @vincentkoc.
- CLI/update: use an absolute POSIX npm script shell during package-manager updates, so restricted PATH environments can still run dependency lifecycle scripts while updating from `--tag main`. Fixes #77530. Thanks @PeterTremonti.

View File

@@ -57,6 +57,8 @@ describe("Mattermost model picker", () => {
expect(view.text).toContain("Current: openai/gpt-5");
expect(view.text).toContain("Tap below to browse models");
expect(view.text).toContain("/oc_model <provider/model> to switch");
expect(view.text).toContain("Browse keeps the current runtime");
expect(view.text).toContain("/oc_model <provider/model> --runtime <runtime>");
expect(view.buttons[0]?.[0]?.text).toBe("Browse providers");
});

View File

@@ -273,7 +273,7 @@ export function renderMattermostModelSummaryView(params: {
"",
"Tap below to browse models, or use:",
"/oc_model <provider/model> to switch",
"/oc_model <provider/model> --runtime <runtime> for runtime",
"Browse keeps the current runtime; use /oc_model <provider/model> --runtime <runtime> to switch runtime too",
"/oc_model status for details",
].join("\n"),
buttons: [