From 6799458807d43cd3133c614f7518b3f5a88654a5 Mon Sep 17 00:00:00 2001 From: Jimmy Peng Date: Fri, 3 Apr 2026 01:12:38 +0800 Subject: [PATCH] fix: issue mentions should not suppress on_comment trigger --- server/internal/handler/comment.go | 10 +++++++++- server/internal/handler/trigger_test.go | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/server/internal/handler/comment.go b/server/internal/handler/comment.go index a40847fa..0e21c53d 100644 --- a/server/internal/handler/comment.go +++ b/server/internal/handler/comment.go @@ -201,8 +201,16 @@ func (h *Handler) CreateComment(w http.ResponseWriter, r *http.Request) { // is announcing to everyone, not specifically requesting work from the agent. func (h *Handler) commentMentionsOthersButNotAssignee(content string, issue db.Issue) bool { mentions := util.ParseMentions(content) + // Filter out issue mentions — they are cross-references, not @people. + filtered := mentions[:0] + for _, m := range mentions { + if m.Type != "issue" { + filtered = append(filtered, m) + } + } + mentions = filtered if len(mentions) == 0 { - return false // No mentions — normal on_comment behavior + return false // No mentions (or only issue refs) — normal on_comment behavior } // @all is a broadcast to all members — suppress agent trigger. if util.HasMentionAll(mentions) { diff --git a/server/internal/handler/trigger_test.go b/server/internal/handler/trigger_test.go index e2358b88..5ad3972e 100644 --- a/server/internal/handler/trigger_test.go +++ b/server/internal/handler/trigger_test.go @@ -86,6 +86,16 @@ func TestCommentMentionsOthersButNotAssignee(t *testing.T) { content: fmt.Sprintf("[@All](mention://all/all) [@Agent](mention://agent/%s) fyi", agentAssigneeID), want: true, }, + { + name: "issue mention only → allow trigger (cross-reference, not @person)", + content: "[PAN-1](mention://issue/44c266e7-f6dd-4be3-9140-5ac40233f79c) is related", + want: false, + }, + { + name: "issue mention + other agent → suppress (agent mention matters)", + content: fmt.Sprintf("[PAN-1](mention://issue/44c266e7-f6dd-4be3-9140-5ac40233f79c) cc [@Other](mention://agent/%s)", otherAgentID), + want: true, + }, } for _, tt := range tests {