Skip to content

Commit 9d6b9b1

Browse files
author
Nazrul Islam
committed
chore: prepare v2.1.1 release
1 parent 9121f9f commit 9d6b9b1

2 files changed

Lines changed: 76 additions & 3 deletions

File tree

.github/release-template.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## 🚀 Highlights
2+
3+
**CodeforcesSync ${VERSION}** — released ${RELEASE_DATE}.
4+
5+
This release continues to improve the extension with cross-browser support, automation, and reliability.
6+
7+
## 🌐 Browser Support
8+
9+
| Browser | Minimum Version |
10+
|---------|----------------|
11+
| Google Chrome | 102+ |
12+
| Microsoft Edge | 102+ (Chromium) |
13+
| Mozilla Firefox | 128+ |
14+
15+
## 📦 Downloads
16+
17+
Download the ZIP for your browser from the assets below.
18+
19+
| Browser | Asset |
20+
|---------|-------|
21+
| Chrome | `CodeforcesSync-Chrome-${VERSION}.zip` |
22+
| Edge | `CodeforcesSync-Edge-${VERSION}.zip` |
23+
| Firefox | `CodeforcesSync-Firefox-${VERSION}.zip` |
24+
25+
## ⚡ Installation
26+
27+
1. Download the ZIP for your browser.
28+
2. Extract the ZIP to a folder on your computer.
29+
3. Open your browser's extension manager:
30+
- **Chrome:** `chrome://extensions` → Developer mode → **Load unpacked**
31+
- **Edge:** `edge://extensions` → Developer mode → **Load unpacked**
32+
- **Firefox:** `about:debugging#/runtime/this-firefox`**Load Temporary Add-on** → select `manifest.json`
33+
34+
## 🔄 Upgrade Notes
35+
36+
- Settings, sync state, and authentication are preserved across updates.
37+
- No re-authentication required unless noted in Breaking Changes.
38+
39+
## 🛠 Breaking Changes
40+
41+
None.
42+
43+
## 🐛 Known Issues
44+
45+
- See [open issues](https://github.com/${REPOSITORY}/issues) for current known issues.
46+
47+
## 🙏 Contributors
48+
49+
Thank you to everyone who contributed to this release.

.github/workflows/release.yml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
# Permissions
2424
# ─────────────
2525
# contents: write — create the GitHub Release and upload ZIP assets
26-
# pull-requests: read — required by gh release --generate-notes to read
27-
# merged PR titles for auto-generated release notes
26+
# pull-requests: read — required by generate-notes API to read merged
27+
# PR titles for auto-generated release notes
2828
#
2929
# Jobs
3030
# ─────
@@ -146,13 +146,37 @@ jobs:
146146
ls -lh "CodeforcesSync-Edge-${{ env.VERSION }}.zip"
147147
ls -lh "CodeforcesSync-Firefox-${{ env.VERSION }}.zip"
148148
149+
- name: Generate release body
150+
run: |
151+
RELEASE_DATE=$(date -u +"%Y-%m-%d")
152+
echo "RELEASE_DATE=$RELEASE_DATE" >> "$GITHUB_ENV"
153+
154+
gh api \
155+
repos/${{ github.repository }}/releases/generate-notes \
156+
-f tag_name="${{ github.ref_name }}" \
157+
--jq '.body' > generated-notes.md
158+
159+
node -e "
160+
const fs = require('fs');
161+
const template = fs.readFileSync('.github/release-template.md', 'utf8');
162+
const generated = fs.readFileSync('generated-notes.md', 'utf8');
163+
const body = template
164+
.replace(/\$\{VERSION\}/g, process.env.VERSION)
165+
.replace(/\$\{RELEASE_DATE\}/g, process.env.RELEASE_DATE)
166+
.replace(/\$\{REPOSITORY\}/g, process.env.GITHUB_REPOSITORY)
167+
+ '\n\n---\n\n## 📋 Automated Changelog\n\n' + generated;
168+
fs.writeFileSync('release-body.md', body);
169+
"
170+
env:
171+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
172+
149173
- name: Create GitHub Release
150174
run: |
151175
gh release create "${{ github.ref_name }}" \
152176
"CodeforcesSync-Chrome-${{ env.VERSION }}.zip" \
153177
"CodeforcesSync-Edge-${{ env.VERSION }}.zip" \
154178
"CodeforcesSync-Firefox-${{ env.VERSION }}.zip" \
155-
--generate-notes \
179+
--notes-file release-body.md \
156180
--title "CodeforcesSync ${{ github.ref_name }}"
157181
env:
158182
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)