From 85a1b9d7101b5bfe79779f67ba9d5837ce50f1ae Mon Sep 17 00:00:00 2001 From: Strider Date: Mon, 9 Mar 2026 11:40:38 +0800 Subject: [PATCH] fix: let requireMentionInThread both relax and tighten the base setting Remove the `requireMention &&` guard so requireMentionInThread works bidirectionally: a group with requireMention: false can now set requireMentionInThread: true to re-enable the mention requirement for thread replies specifically. Add test for the tightening edge case. Co-Authored-By: Claude Opus 4.6 --- extensions/feishu/src/policy.test.ts | 11 +++++++++++ extensions/feishu/src/policy.ts | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/extensions/feishu/src/policy.test.ts b/extensions/feishu/src/policy.test.ts index ec5f4430ebe..01530e12cba 100644 --- a/extensions/feishu/src/policy.test.ts +++ b/extensions/feishu/src/policy.test.ts @@ -163,6 +163,17 @@ describe("feishu policy", () => { ).toEqual({ requireMention: true }); }); + it("requireMentionInThread tightens when base requireMention is false", () => { + expect( + resolveFeishuReplyPolicy({ + isDirectMessage: false, + isThreadReply: true, + globalConfig: { requireMention: false } as FeishuConfig, + groupConfig: { requireMentionInThread: true } as FeishuGroupConfig, + }), + ).toEqual({ requireMention: true }); + }); + it("does not apply thread override for non-thread messages", () => { expect( resolveFeishuReplyPolicy({ diff --git a/extensions/feishu/src/policy.ts b/extensions/feishu/src/policy.ts index 7a08dfa1877..1db6e6618c6 100644 --- a/extensions/feishu/src/policy.ts +++ b/extensions/feishu/src/policy.ts @@ -116,7 +116,7 @@ export function resolveFeishuReplyPolicy(params: { const requireMention = params.groupConfig?.requireMention ?? params.globalConfig?.requireMention ?? true; - if (requireMention && params.isThreadReply) { + if (params.isThreadReply) { const threadOverride = params.groupConfig?.requireMentionInThread ?? params.globalConfig?.requireMentionInThread; if (threadOverride !== undefined) {