From 16217e258406e1c7873e3f119935e291ffda35ea Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Thu, 5 Mar 2026 10:49:12 -0600 Subject: [PATCH] Feishu: tighten allowall alias handling and coverage --- CHANGELOG.md | 1 + extensions/feishu/src/config-schema.test.ts | 8 ++++++++ extensions/feishu/src/policy.ts | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c96b70c5805..23b247dc25a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -121,6 +121,7 @@ Docs: https://docs.openclaw.ai - LINE/status/config/webhook synthesis: fix status false positives from snapshot/config state and accept LINE webhook HEAD probes for compatibility. (from #10487, #25726, #27537, #27908, #31387) Thanks @BlueBirdBack, @stakeswky, @loiie45e, @puritysb, and @mcaxtr. - LINE cleanup/test follow-ups: fold cleanup/test learnings into the synthesis review path while keeping runtime changes focused on regression fixes. (from #17630, #17289) Thanks @Clawborn and @davidahmann. - Mattermost/interactive buttons: add interactive button send/callback support with directory-based channel/user target resolution, and harden callbacks via account-scoped HMAC verification plus sender-scoped DM routing. (#19957) thanks @tonydehnke. +- Feishu/groupPolicy legacy alias compatibility: treat legacy `groupPolicy: "allowall"` as `open` in both schema parsing and runtime policy checks so intended open-group configs no longer silently drop group messages when `groupAllowFrom` is empty. (from #36358) Thanks @Sid-Qin. ## 2026.3.2 diff --git a/extensions/feishu/src/config-schema.test.ts b/extensions/feishu/src/config-schema.test.ts index 06c954cd164..035f89a2940 100644 --- a/extensions/feishu/src/config-schema.test.ts +++ b/extensions/feishu/src/config-schema.test.ts @@ -24,6 +24,14 @@ describe("FeishuConfigSchema webhook validation", () => { expect(result.accounts?.main?.requireMention).toBeUndefined(); }); + it("normalizes legacy groupPolicy allowall to open", () => { + const result = FeishuConfigSchema.parse({ + groupPolicy: "allowall", + }); + + expect(result.groupPolicy).toBe("open"); + }); + it("rejects top-level webhook mode without verificationToken", () => { const result = FeishuConfigSchema.safeParse({ connectionMode: "webhook", diff --git a/extensions/feishu/src/policy.ts b/extensions/feishu/src/policy.ts index 66c82722b67..051c8bcdf7b 100644 --- a/extensions/feishu/src/policy.ts +++ b/extensions/feishu/src/policy.ts @@ -92,7 +92,7 @@ export function resolveFeishuGroupToolPolicy( } export function isFeishuGroupAllowed(params: { - groupPolicy: "open" | "allowlist" | "disabled" | (string & {}); + groupPolicy: "open" | "allowlist" | "disabled" | "allowall"; allowFrom: Array; senderId: string; senderIds?: Array;