From 9da35726afdccb789d9a34ee1fcfcfed28935d54 Mon Sep 17 00:00:00 2001
From: RealZST
Date: Tue, 16 Jun 2026 22:01:07 +0300
Subject: [PATCH 1/2] fix(badges): serve release badge via shields endpoint,
cache downloads badge
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The README release and downloads badges use shields.io's dynamic GitHub-API
endpoints, which intermittently fail with "Unable to select next GitHub token
from pool" when shields' shared token pool is rate-limited (the static badges
on the same line never fail). Render the release badge via shields' endpoint
type backed by .github/badges/release.json, which a new workflow updates on
'release: published' — so it never calls the GitHub API at render time. Add
cacheSeconds=86400 to the downloads badge to cut its exposure to the same error.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
.github/badges/release.json | 6 +++
.github/workflows/update-release-badge.yml | 58 ++++++++++++++++++++++
README.md | 4 +-
README.zh-CN.md | 4 +-
4 files changed, 68 insertions(+), 4 deletions(-)
create mode 100644 .github/badges/release.json
create mode 100644 .github/workflows/update-release-badge.yml
diff --git a/.github/badges/release.json b/.github/badges/release.json
new file mode 100644
index 00000000..8c99b535
--- /dev/null
+++ b/.github/badges/release.json
@@ -0,0 +1,6 @@
+{
+ "schemaVersion": 1,
+ "label": "release",
+ "message": "v1.6.1",
+ "color": "brightgreen"
+}
diff --git a/.github/workflows/update-release-badge.yml b/.github/workflows/update-release-badge.yml
new file mode 100644
index 00000000..c0a1119a
--- /dev/null
+++ b/.github/workflows/update-release-badge.yml
@@ -0,0 +1,58 @@
+name: Update Release Badge
+
+# Keeps .github/badges/release.json in sync with the latest published release.
+# The README renders the release badge via shields.io's `endpoint` type, which
+# reads this committed JSON instead of calling the GitHub API live — avoiding
+# shields.io's intermittent "Unable to select next GitHub token from pool"
+# failures on the dynamic github/v/release badge.
+on:
+ release:
+ types: [published]
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ update-badge:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: main
+
+ - name: Resolve latest release tag
+ id: tag
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ if [ "${{ github.event_name }}" = "release" ]; then
+ VERSION="${{ github.event.release.tag_name }}"
+ else
+ VERSION="$(gh release view --json tagName -q .tagName)"
+ fi
+ echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
+
+ - name: Write badge JSON
+ run: |
+ mkdir -p .github/badges
+ cat > .github/badges/release.json <
-
-
+
+
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 320761b3..aaff7ec9 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -14,8 +14,8 @@
-
-
+
+
From e30042f4127cdc23e085668a07e7a5c4a1c26b7a Mon Sep 17 00:00:00 2001
From: RealZST
Date: Tue, 16 Jun 2026 22:01:07 +0300
Subject: [PATCH 2/2] fix(updater): correct release-notes heading hierarchy
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ChangelogMarkdown only overrode h2 (small/gray) and let h3 fall through to the
browser default (large/bold), inverting the heading hierarchy in the in-app
updater dialog — top-level ## sections looked smaller than their ### children.
Make h2 the prominent heading and h3 the subdued subheading.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
src/components/layout/changelog-markdown.tsx | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/components/layout/changelog-markdown.tsx b/src/components/layout/changelog-markdown.tsx
index 9848e648..8f1158c3 100644
--- a/src/components/layout/changelog-markdown.tsx
+++ b/src/components/layout/changelog-markdown.tsx
@@ -11,11 +11,19 @@ const components = {
{children}
),
+ // Restore visual hierarchy: release notes use `## Section` (top level) and
+ // `### Subsection`. Without an h3 override, h2 rendered small/gray while h3
+ // fell through to the browser default (large/bold), inverting the hierarchy.
h2: ({ children }: { children?: React.ReactNode }) => (
-
+
{children}
),
+ h3: ({ children }: { children?: React.ReactNode }) => (
+
+ {children}
+
+ ),
ul: ({ children }: { children?: React.ReactNode }) => (