Skip to content

Commit 72526ab

Browse files
Merge branch 'main' into fix/debounce-preview-requests-clean
2 parents 7d06f3f + 81d9f71 commit 72526ab

103 files changed

Lines changed: 9718 additions & 1406 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.local.example

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,19 @@ NEXT_PUBLIC_SITE_URL=http://localhost:3000
4747
# 4. Replace <password> with your DB user's password
4848
# ------------------------------------------------------------
4949
# MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/commitpulse?retryWrites=true&w=majority
50+
51+
# ------------------------------------------------------------
52+
# OPTIONAL — Upstash Redis / Vercel KV (Distributed Rate Limiting)
53+
# ------------------------------------------------------------
54+
# Enables distributed rate limiting across all serverless instances.
55+
# Without these, rate limiting is per-instance (each Vercel function
56+
# gets its own counter), which allows N× the intended limit under load.
57+
#
58+
# How to get one (free):
59+
# 1. Create a free Upstash Redis database at https://console.upstash.com
60+
# 2. Copy the REST API URL and token
61+
# 3. If using Vercel KV, link it to your project in the Vercel dashboard
62+
# — it sets KV_REST_API_URL and KV_REST_API_TOKEN automatically.
63+
# ------------------------------------------------------------
64+
# KV_REST_API_URL=https://<your-db>.upstash.io
65+
# KV_REST_API_TOKEN=<your-token>

.github/scripts/issue-management/assign-handler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ async function findExistingAssignments(github, owner, repo, username, currentIss
1010
return issues.filter((issue) => !issue.pull_request && issue.number !== currentIssueNumber);
1111
}
1212

13-
const MAX_ASSIGNED_ISSUES = 3;
13+
const MAX_ASSIGNED_ISSUES = 5;
1414

1515
async function handleAssign({ github, context, username, hasWriteAccess }) {
1616
const { owner, repo } = context.repo;

.github/scripts/issue-management/claim-handler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ async function findExistingAssignments(github, owner, repo, username, currentIss
1010
return issues.filter((issue) => !issue.pull_request && issue.number !== currentIssueNumber);
1111
}
1212

13-
const MAX_ASSIGNED_ISSUES = 3;
13+
const MAX_ASSIGNED_ISSUES = 5;
1414

1515
async function handleClaim({ github, context }) {
1616
const { owner, repo } = context.repo;

.github/workflows/assign-request-reminder.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
``,
9494
`## 📋 A Few Things to Know`,
9595
``,
96-
`- You can hold a **maximum of 3 open issues** at a time.`,
96+
`- You can hold a **maximum of 5 open issues** at a time.`,
9797
`- If there's **no activity for 3 days**, the assignment will automatically expire so others can pick it up.`,
9898
`- Make sure to read our **[CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md)** before you start — it covers code style, commit conventions, and the PR checklist.`,
9999
``,

.github/workflows/conflict-notifier.yml

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -79,35 +79,8 @@ jobs:
7979
issue_number: pr.number,
8080
labels: [label],
8181
});
82-
}
83-
84-
// Check existing comments to enforce a 24-hour notification gap
85-
const { data: comments } = await github.rest.issues.listComments({
86-
owner: context.repo.owner,
87-
repo: context.repo.repo,
88-
issue_number: pr.number,
89-
per_page: 100,
90-
});
91-
92-
const conflictComments = comments.filter(c =>
93-
c.user?.login === 'github-actions[bot]' &&
94-
c.body?.includes('merge conflicts with the main branch')
95-
);
96-
97-
let shouldComment = false;
98-
if (conflictComments.length === 0) {
99-
shouldComment = true;
100-
} else {
101-
const lastComment = conflictComments[conflictComments.length - 1];
102-
const lastCommentTime = new Date(lastComment.created_at).getTime();
103-
const nowTime = new Date().getTime();
104-
const TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;
105-
if (nowTime - lastCommentTime >= TWENTY_FOUR_HOURS_MS) {
106-
shouldComment = true;
107-
}
108-
}
10982
110-
if (shouldComment) {
83+
// Post notification comment ONLY ONCE (when the label is first applied)
11184
await github.rest.issues.createComment({
11285
owner: context.repo.owner,
11386
repo: context.repo.repo,

.github/workflows/pr-issue-check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ jobs:
182182
2. **Wait for confirmation** — The bot will confirm your assignment with a ✅ reply.
183183
3. **Then open your PR** — Link the issue with \`Fixes #${issueNumber}\` in your description.
184184
185-
> 💡 You can be assigned to up to **3** open issues at a time. Check your current assignments before claiming a new one.
185+
> 💡 You can be assigned to up to **5** open issues at a time. Check your current assignments before claiming a new one.
186186
187187
We look forward to your contribution once you're assigned! 🚀`,
188188
});

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ The accuracy engine lives in `utils/time.ts` and `lib/calculate.ts`.
401401
CommitPulse uses a custom, lightweight **GitHub Actions** automation system to manage issues fairly. This ensures that everyone (especially during events like **GSSoC**) gets a chance to contribute and prevents "issue hoarding".
402402

403403
> [!IMPORTANT]
404-
> **The Golden Rule:** You can be assigned to a maximum of **3** open issues at a time. Complete or unassign yourself from one before claiming more.
404+
> **The Golden Rule:** You can be assigned to a maximum of **5** open issues at a time. Complete or unassign yourself from one before claiming more.
405405
406406
### 📋 Structured Issue Templates
407407

@@ -454,7 +454,7 @@ To keep the project moving, assignments are not permanent.
454454
If the bot rejects your command, check these common scenarios:
455455

456456
- **"Commands cannot be used on closed issues"**: You cannot claim, assign, or unassign on closed issues. Find an open one!
457-
- **"You already have X/3 active assigned issues"**: You have reached the maximum of 3 concurrent assignments. Finish one of your current tasks before claiming a new issue. If you're stuck, use the `/unclaim` command to unassign yourself from an issue, or ask a maintainer to `/unassign` you.
457+
- **"You already have X/5 active assigned issues"**: You have reached the maximum of 5 concurrent assignments. Finish one of your current tasks before claiming a new issue. If you're stuck, use the `/unclaim` command to unassign yourself from an issue, or ask a maintainer to `/unassign` you.
458458
- **"This issue is already assigned to @username"**: Be faster next time! Look for issues without assignees.
459459
- **"Only the author of this issue can claim it"**: You tried to `/claim` an issue you did not create. You can only claim issues that you authored (unless the issue was authored by `jhasourav07`, which anyone can claim).
460460
- **"The following label(s) do not exist"**: You can only add existing repo labels. The bot will reply with a list of valid labels you can use.

THEMES.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 🎨 CommitPulse Themes
1+
# CommitPulse Themes
22

33
All 20 available themes for your CommitPulse badge. Use the `?theme=<slug>` query parameter to apply a theme.
44

@@ -37,7 +37,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
3737

3838
## Preview Gallery
3939

40-
### 🌑 Dark (default)
40+
### Dark (default)
4141

4242
![dark](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=dark)
4343

@@ -49,7 +49,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
4949

5050
---
5151

52-
### ☀️ Light
52+
### Light
5353

5454
![light](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=light)
5555

@@ -61,7 +61,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
6161

6262
---
6363

64-
### Neon
64+
### Neon
6565

6666
![neon](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=neon)
6767

@@ -73,7 +73,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
7373

7474
---
7575

76-
### 🐙 GitHub
76+
### GitHub
7777

7878
![github](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=github)
7979

@@ -85,7 +85,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
8585

8686
---
8787

88-
### 🧛 Dracula
88+
### Dracula
8989

9090
![dracula](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=dracula)
9191

@@ -97,7 +97,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
9797

9898
---
9999

100-
### 🌊 Ocean
100+
### Ocean
101101

102102
![ocean](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=ocean)
103103

@@ -109,7 +109,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
109109

110110
---
111111

112-
### 🌅 Sunset
112+
### Sunset
113113

114114
![sunset](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=sunset)
115115

@@ -121,7 +121,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
121121

122122
---
123123

124-
### 🌲 Forest
124+
### Forest
125125

126126
![forest](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=forest)
127127

@@ -133,7 +133,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
133133

134134
---
135135

136-
### 🌸 Rose
136+
### Rose
137137

138138
![rose](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=rose)
139139

@@ -145,7 +145,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
145145

146146
---
147147

148-
### ❄️ Nord
148+
### Nord
149149

150150
![nord](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=nord)
151151

@@ -157,7 +157,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
157157

158158
---
159159

160-
### 🎵 Synthwave
160+
### Synthwave
161161

162162
![synthwave](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=synthwave)
163163

@@ -169,7 +169,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
169169

170170
---
171171

172-
### 🪵 Gruvbox
172+
### Gruvbox
173173

174174
![gruvbox](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=gruvbox)
175175

@@ -181,7 +181,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
181181

182182
---
183183

184-
### 🔮 Aurora Cyberpunk
184+
### Aurora Cyberpunk
185185

186186
![aurora_cyberpunk](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=aurora_cyberpunk)
187187

@@ -193,7 +193,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
193193

194194
---
195195

196-
### 🔦 High Contrast
196+
### High Contrast
197197

198198
![highcontrast](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=highcontrast)
199199

@@ -205,7 +205,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
205205

206206
---
207207

208-
### 🐱 Catppuccin Latte
208+
### Catppuccin Latte
209209

210210
![catppuccin_latte](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=catppuccin_latte)
211211

@@ -217,7 +217,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
217217

218218
---
219219

220-
### 🌞 Solarized Light
220+
### Solarized Light
221221

222222
![solarized_light](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=solarized_light)
223223

@@ -229,7 +229,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
229229

230230
---
231231

232-
### 🌻 Gruvbox Light
232+
### Gruvbox Light
233233

234234
![gruvbox_light](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=gruvbox_light)
235235

@@ -241,7 +241,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
241241

242242
---
243243

244-
### 🏔️ Nord Light
244+
### Nord Light
245245

246246
![nord_light](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=nord_light)
247247

@@ -253,7 +253,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
253253

254254
---
255255

256-
### 💠 Cyber Pulse
256+
### Cyber Pulse
257257

258258
![cyber-pulse](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=cyber-pulse)
259259

@@ -265,7 +265,7 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
265265

266266
---
267267

268-
### 🪨 Obsidian
268+
### Obsidian
269269

270270
![obsidian](https://commitpulse.vercel.app/api/streak?user=jhasourav07&theme=obsidian)
271271

@@ -277,22 +277,22 @@ https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=<slug>
277277

278278
---
279279

280-
## 🎛️ Custom Theme
280+
## Custom Theme
281281

282-
Not finding what you want? Build your own using raw color parameters all values are hex codes **without** the `#` prefix:
282+
Not finding what you want? Build your own using raw color parameters - all values are hex codes **without** the `#` prefix:
283283

284284
```
285285
https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&bg=1a1b27&text=a9b1d6&accent=7aa2f7
286286
```
287287

288288
---
289289

290-
## 🔄 Auto Theme
290+
## Auto Theme
291291

292-
Automatically switches between light and dark based on the viewer's OS setting no hex values needed:
292+
Automatically switches between light and dark based on the viewer's OS setting - no hex values needed:
293293

294294
```
295295
https://commitpulse.vercel.app/api/streak?user=YOUR_USERNAME&theme=auto
296296
```
297297

298-
> 💡 **Tip:** You can combine `theme=` with individual overrides. For example, `theme=dracula&accent=ff79c6` applies the Dracula theme but swaps only the accent color.
298+
> **Tip:** You can combine `theme=` with individual overrides. For example, `theme=dracula&accent=ff79c6` applies the Dracula theme but swaps only the accent color.

0 commit comments

Comments
 (0)