From 2f37ac7cf0bd16fbf326865c71931eafc7d19d8b Mon Sep 17 00:00:00 2001 From: shawn Date: Wed, 21 Oct 2026 10:05:55 +0800 Subject: [PATCH 1/2] feat: link PR diff stats to file changes --- src/features/pr-diff-stats.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/features/pr-diff-stats.ts b/src/features/pr-diff-stats.ts index a70dfbd..fe27db3 100644 --- a/src/features/pr-diff-stats.ts +++ b/src/features/pr-diff-stats.ts @@ -32,7 +32,10 @@ export async function injectPRDiffStats(): Promise { if (row.querySelector(`.${BADGE_CLASS}`)) continue; - insertInfoRowItem(row, "diff", buildDiffStatsBadge(stat, BADGE_CLASS)); + const link = document.createElement("a"); + link.href = `/${info.owner}/${info.repo}/pull/${prNumber}/changes`; + link.appendChild(buildDiffStatsBadge(stat, BADGE_CLASS)); + insertInfoRowItem(row, "diff", link); } } finally { clearSkeletons("prDiff"); From 4e3067f510124e1a0a51986737f1648cd5dd7797 Mon Sep 17 00:00:00 2001 From: shawn Date: Wed, 21 Oct 2026 10:11:00 +0800 Subject: [PATCH 2/2] feat: add file changes hint to PR diff stats --- src/_locales/en/messages.json | 3 +++ src/_locales/zh_CN/messages.json | 3 +++ src/_locales/zh_TW/messages.json | 3 +++ src/features/pr-diff-stats.test.ts | 2 +- src/features/pr-diff-stats.ts | 5 ++++- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index cd9a5d1..cb26cb0 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -245,6 +245,9 @@ "message": "$count$ files", "placeholders": { "count": { "content": "$1", "example": "5" } } }, + "prDiffStatsLinkHint": { + "message": "Click to view file changes" + }, "diffStatsTitle": { "message": "$add$ additions, $del$ deletions", "placeholders": { diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index fb5dd99..0a1e7e6 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -245,6 +245,9 @@ "message": "$count$ 个文件", "placeholders": { "count": { "content": "$1", "example": "5" } } }, + "prDiffStatsLinkHint": { + "message": "点击查看文件变更" + }, "diffStatsTitle": { "message": "新增 $add$ 行,删除 $del$ 行", "placeholders": { diff --git a/src/_locales/zh_TW/messages.json b/src/_locales/zh_TW/messages.json index 8b763d8..369919f 100644 --- a/src/_locales/zh_TW/messages.json +++ b/src/_locales/zh_TW/messages.json @@ -245,6 +245,9 @@ "message": "$count$ 個檔案", "placeholders": { "count": { "content": "$1", "example": "5" } } }, + "prDiffStatsLinkHint": { + "message": "點擊查看檔案變更" + }, "diffStatsTitle": { "message": "新增 $add$ 行,刪除 $del$ 行", "placeholders": { diff --git a/src/features/pr-diff-stats.test.ts b/src/features/pr-diff-stats.test.ts index 8a7bc3b..3c691fc 100644 --- a/src/features/pr-diff-stats.test.ts +++ b/src/features/pr-diff-stats.test.ts @@ -50,7 +50,7 @@ describe("injectPRDiffStats", () => { expect(badge7.querySelector(".better-github-diff-stats-add")?.textContent).toBe("+1,234"); expect(badge7.querySelector(".better-github-diff-stats-del")?.textContent).toBe("−56"); expect(badge7.querySelector(".better-github-diff-stats-files")?.textContent).toBe("3 files"); - expect(badge7.title).toBe("1,234 additions, 56 deletions across 3 files"); + expect(badge7.title).toBe("1,234 additions, 56 deletions across 3 files\nClick to view file changes"); // changedFiles === 1 → singular "file". const badge8 = document.querySelector("#issue_8 .better-github-diff-stats") as HTMLElement; diff --git a/src/features/pr-diff-stats.ts b/src/features/pr-diff-stats.ts index fe27db3..4ce5a14 100644 --- a/src/features/pr-diff-stats.ts +++ b/src/features/pr-diff-stats.ts @@ -4,6 +4,7 @@ import { fetchPRDiffStats } from "../lib/github-api"; import { insertInfoRowItem } from "../lib/info-row"; import { buildDiffStatsBadge } from "../lib/diff-stats-badge"; import { clearSkeletons } from "../lib/info-row-skeleton"; +import { t } from "../lib/i18n"; const BADGE_CLASS = "better-github-diff-stats"; @@ -34,7 +35,9 @@ export async function injectPRDiffStats(): Promise { const link = document.createElement("a"); link.href = `/${info.owner}/${info.repo}/pull/${prNumber}/changes`; - link.appendChild(buildDiffStatsBadge(stat, BADGE_CLASS)); + const badge = buildDiffStatsBadge(stat, BADGE_CLASS); + badge.title += `\n${t("prDiffStatsLinkHint")}`; + link.appendChild(badge); insertInfoRowItem(row, "diff", link); } } finally {