From 45ee921ced33e7166fdeccdc245bc9a566b219b0 Mon Sep 17 00:00:00 2001 From: "Do-hyun Ko (Dori)" Date: Mon, 18 May 2026 16:01:07 +0900 Subject: [PATCH] feat: deep-link to specific comment/review in PR notifications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR 알림 title 의 'pull request' 링크를 PR root URL 대신 해당 코멘트/리뷰 anchor URL 로 변경. 리뷰가 많은 PR 에서 새로 등록된 리뷰 위치를 바로 찾을 수 있도록 개선. - IssueCommentCreated: event.Issue.GetHTMLURL → event.Comment.GetHTMLURL (#issuecomment-XYZ 앵커) - PullRequestReviewEventSubmitted: event.PullRequest.GetHTMLURL → event.Review.GetHTMLURL (#pullrequestreview-XYZ 앵커) inline diff 코멘트 (PullRequestReviewCommentEventCreated) 는 별도 PR 에서 이미 event.Comment.GetHTMLURL 사용. Co-Authored-By: Claude Opus 4.7 (1M context) --- internal/event/callback/issue.go | 4 ++-- internal/event/callback/pull_request.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/event/callback/issue.go b/internal/event/callback/issue.go index 2dc68d0..1c04984 100644 --- a/internal/event/callback/issue.go +++ b/internal/event/callback/issue.go @@ -89,9 +89,9 @@ func (cb *IssueCommentCreated) buildMessage(ctx context.Context, installCtx gith var title string if event.Issue.IsPullRequest() { - title = fmt.Sprintf(pullRequestReviewCommentedTitleFormat, mentionTexts.String(), model.InlineLink(event.Issue.GetHTMLURL(), "pull request"), sender) + title = fmt.Sprintf(pullRequestReviewCommentedTitleFormat, mentionTexts.String(), model.InlineLink(event.Comment.GetHTMLURL(), "pull request"), sender) } else { - title = fmt.Sprintf(issueCommentCreatedTitleFormat, mentionTexts.String(), model.InlineLink(event.Issue.GetHTMLURL(), "issue"), sender) + title = fmt.Sprintf(issueCommentCreatedTitleFormat, mentionTexts.String(), model.InlineLink(event.Comment.GetHTMLURL(), "issue"), sender) } blocks := []model.MessageBlock{model.NewTextBlock(title)} diff --git a/internal/event/callback/pull_request.go b/internal/event/callback/pull_request.go index 3f12f55..656c207 100644 --- a/internal/event/callback/pull_request.go +++ b/internal/event/callback/pull_request.go @@ -229,9 +229,9 @@ func (cb *PullRequestReviewEventSubmitted) buildMessage(ctx context.Context, ins } var title string if event.Review.GetState() == "approved" { - title = fmt.Sprintf(pullRequestReviewApprovedTitleFormat, mentionTexts.String(), model.InlineLink(event.PullRequest.GetHTMLURL(), "pull request"), senderManager) + title = fmt.Sprintf(pullRequestReviewApprovedTitleFormat, mentionTexts.String(), model.InlineLink(event.Review.GetHTMLURL(), "pull request"), senderManager) } else { - title = fmt.Sprintf(pullRequestReviewCommentedTitleFormat, mentionTexts.String(), model.InlineLink(event.PullRequest.GetHTMLURL(), "pull request"), senderManager) + title = fmt.Sprintf(pullRequestReviewCommentedTitleFormat, mentionTexts.String(), model.InlineLink(event.Review.GetHTMLURL(), "pull request"), senderManager) } return model.NewMessage(