From 401c35fdd21508a7736579e9518d09c834b08c76 Mon Sep 17 00:00:00 2001 From: Vlad Mocanu Date: Thu, 26 Feb 2026 10:08:49 +0200 Subject: [PATCH] docs: document Forgejo event behavior in workflow and trigger.ts Add inline comments explaining: - Forgejo never fires pull_request_review (sends pull_request_comment) - Why workflow if-condition cannot gate on @claude for these events (payload fields are empty, confirmed by run 12084 being skipped) - The @claude check is handled in trigger.ts via payload inspection Co-Authored-By: Claude Opus 4.6 --- .forgejo/workflows/claude.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.forgejo/workflows/claude.yml b/.forgejo/workflows/claude.yml index ea81a3d..4429059 100644 --- a/.forgejo/workflows/claude.yml +++ b/.forgejo/workflows/claude.yml @@ -7,6 +7,8 @@ on: types: [created] issues: types: [opened, assigned, labeled] + # Forgejo never fires pull_request_review — it sends pull_request_comment + # for both review comments AND full reviews. Kept for GitHub compatibility. pull_request_review: types: [submitted] @@ -24,7 +26,13 @@ jobs: # despite action being 'labeled'). Let all through; trigger.ts validates. if: >- (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || + # Forgejo collapses both pull_request_review_comment AND pull_request_review + # into pull_request_comment. We cannot gate on @claude here because Forgejo's + # webhook payload does not populate github.event.comment.body or + # github.event.review.body for these events (tested: run 12084 was skipped). + # The @claude check is handled in trigger.ts which reads the actual payload. (github.event_name == 'pull_request_review_comment' || github.event_name == 'pull_request_comment') || + # This condition only fires on GitHub (Forgejo never sends pull_request_review). (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || (github.event_name == 'issues') runs-on: grunt