From ff4edd055918b9f8655dceeff05c7ad5a7c42552 Mon Sep 17 00:00:00 2001 From: Serhii <151471784+kashevk0@users.noreply.github.com> Date: Wed, 15 Apr 2026 03:16:35 +0100 Subject: [PATCH] fix: restore Telegram native auto defaults (#66843) (thanks @kashevk0) * fix(config): restore Telegram native commands under auto defaults * chore: trigger CI rerun * test(config): split native auto-default regressions * fix: restore Telegram native auto defaults (#66843) (thanks @kashevk0) --------- Co-authored-by: Ayaan Zaidi --- CHANGELOG.md | 1 + src/config/commands.test.ts | 29 +++++++++++++++++++++++++++++ src/config/commands.ts | 3 +-- 3 files changed, 31 insertions(+), 2 deletions(-) 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";