From 99624efaccebab5b94341e41a08212febe887526 Mon Sep 17 00:00:00 2001 From: Vlad Mocanu Date: Thu, 26 Feb 2026 10:47:30 +0200 Subject: [PATCH] fix: fall back to issue.assignee on Forgejo for assignee trigger Forgejo's issues/assigned webhook payload doesn't include a top-level assignee object. The assignee is only available under issue.assignee. Fall back to that field when payload.assignee is missing. Also removes M5 debug logging. Co-Authored-By: Claude Opus 4.6 --- src/entrypoints/run.ts | 24 ------------------------ src/github/validation/trigger.ts | 6 +++++- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/src/entrypoints/run.ts b/src/entrypoints/run.ts index b4b6e6d..b79d7bb 100644 --- a/src/entrypoints/run.ts +++ b/src/entrypoints/run.ts @@ -187,30 +187,6 @@ async function run() { } } - // === M5 DEBUG START === - console.log(`[M5 DEBUG] eventName: ${context.eventName}`); - console.log(`[M5 DEBUG] eventAction: ${context.eventAction}`); - console.log( - `[M5 DEBUG] assigneeTrigger: "${context.inputs?.assigneeTrigger}"`, - ); - console.log( - `[M5 DEBUG] ASSIGNEE_TRIGGER env: "${process.env.ASSIGNEE_TRIGGER}"`, - ); - if (isEntityContext(context)) { - const payload = context.payload as Record; - console.log( - `[M5 DEBUG] payload.assignee: ${JSON.stringify(payload.assignee)}`, - ); - console.log( - `[M5 DEBUG] payload.issue.assignee: ${JSON.stringify(payload.issue?.assignee)}`, - ); - console.log( - `[M5 DEBUG] payload.issue.assignees: ${JSON.stringify(payload.issue?.assignees?.map((a: any) => a.login))}`, - ); - console.log(`[M5 DEBUG] payload.action: ${payload.action}`); - } - // === M5 DEBUG END === - // Check trigger conditions const containsTrigger = modeName === "tag" diff --git a/src/github/validation/trigger.ts b/src/github/validation/trigger.ts index 55e5c66..031feb8 100644 --- a/src/github/validation/trigger.ts +++ b/src/github/validation/trigger.ts @@ -27,7 +27,11 @@ export function checkContainsTrigger(context: ParsedGitHubContext): boolean { if (isIssuesAssignedEvent(context)) { // Remove @ symbol from assignee_trigger if present let triggerUser = assigneeTrigger.replace(/^@/, ""); - const assigneeUsername = context.payload.assignee?.login || ""; + // Forgejo doesn't include top-level `assignee` — fall back to issue.assignee + const assigneeUsername = + context.payload.assignee?.login || + (context.payload as any).issue?.assignee?.login || + ""; if (triggerUser && assigneeUsername === triggerUser) { console.log(`Issue assigned to trigger user '${triggerUser}'`);