diff --git a/CHANGELOG.md b/CHANGELOG.md index 90e77e2dde1..0469a96ab27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ Docs: https://docs.openclaw.ai - Secrets/plugins/status: align SecretRef inspect-vs-strict handling across plugin preload, read-only status/agents surfaces, and runtime auth paths so unresolved refs no longer crash read-only CLI flows while runtime-required non-env refs stay strict. (#66818) Thanks @joshavant. - Memory/dreaming: stop ordinary transcripts that merely quote the dream-diary prompt from being classified as internal dreaming runs and silently dropped from session recall ingestion. (#66852) Thanks @gumadeiras. - Telegram/documents: sanitize binary reply context and ZIP-like archive extraction so `.epub` and `.mobi` uploads can no longer leak raw binary into prompt context through reply metadata or archive-to-`text/plain` coercion. (#66877) Thanks @martinfrancois. +- Telegram/native commands: restore plugin-registry-backed auto defaults for native commands and native skills so Telegram slash commands keep registering when `commands.native` and `commands.nativeSkills` stay on `auto`. (#66843) Thanks @kashevk0. ## 2026.4.14 diff --git a/src/config/commands.test.ts b/src/config/commands.test.ts index b7148739c56..515ed061939 100644 --- a/src/config/commands.test.ts +++ b/src/config/commands.test.ts @@ -56,6 +56,17 @@ beforeEach(() => { }, }, }, + { + pluginId: "demo-channel", + source: "test", + plugin: { + ...createChannelTestPluginBase({ id: "demo-channel" }), + commands: { + nativeCommandsAutoEnabled: true, + nativeSkillsAutoEnabled: true, + }, + }, + }, ]), ); }); @@ -104,6 +115,15 @@ describe("resolveNativeSkillsEnabled", () => { }), ).toBe(false); }); + + it("uses the plugin registry for auto defaults even when chat-channel normalization misses", () => { + expect( + resolveNativeSkillsEnabled({ + providerId: "demo-channel", + globalSetting: "auto", + }), + ).toBe(true); + }); }); describe("resolveNativeCommandsEnabled", () => { @@ -119,6 +139,15 @@ describe("resolveNativeCommandsEnabled", () => { ); }); + it("uses the plugin registry for auto defaults even when chat-channel normalization misses", () => { + expect( + resolveNativeCommandsEnabled({ + providerId: "demo-channel", + globalSetting: "auto", + }), + ).toBe(true); + }); + it("honors explicit provider/global booleans", () => { expect( resolveNativeCommandsEnabled({ diff --git a/src/config/commands.ts b/src/config/commands.ts index ebd346ec68a..69c2349d268 100644 --- a/src/config/commands.ts +++ b/src/config/commands.ts @@ -1,6 +1,5 @@ -import { getChannelPlugin } from "../channels/plugins/index.js"; +import { getChannelPlugin, normalizeChannelId } from "../channels/plugins/index.js"; import type { ChannelId } from "../channels/plugins/types.public.js"; -import { normalizeChannelId } from "../channels/registry.js"; import type { NativeCommandsSetting } from "./types.js"; export { isCommandFlagEnabled, isRestartEnabled, type CommandFlagKey } from "./commands.flags.js";