Feature-Voting, Giveaways und Contribution-Heatmap

- /wunsch: Voting-Embed mit 👍, Reaction-Tracking (add/remove) in SQLite,
  Top-20-Rangliste öffentlich auf der Roadmap-Seite
- /giveaway (Admin): Preis/Dauer/Gewinnerzahl, 🎉-Teilnahme-Button (toggle),
  Minuten-Scheduler zieht Gewinner, schließt das Embed ab und pingt sie
- Contribution-Heatmap: 52-Wochen-Grid in Brand-Gelb aus dem Commit-Archiv
  (/api/heatmap) auf der Roadmap-Seite
- Setting voting_channel_id auf der Setup-Seite

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 13:20:44 +02:00
co-authored by Claude Opus 4.8
parent 075ea36bd2
commit bc000aaa9f
12 changed files with 391 additions and 4 deletions
+28
View File
@@ -398,6 +398,34 @@ body::after {
.card-footer a { color: var(--muted); border-bottom: 1px solid transparent; }
.card-footer a:hover { color: var(--neon); }
/* ── HEATMAP + WÜNSCHE (Roadmap) ───────────────────── */
.hm-wrap {
display: flex; gap: 3px;
overflow-x: auto;
padding: .5rem 0;
}
.hm-week { display: flex; flex-direction: column; gap: 3px; }
.hm-cell { width: 11px; height: 11px; border-radius: 2px; flex-shrink: 0; }
.hm-0 { background: rgba(255, 255, 255, .05); }
.hm-1 { background: rgba(245, 197, 24, .25); }
.hm-2 { background: rgba(245, 197, 24, .5); }
.hm-3 { background: rgba(245, 197, 24, .75); }
.hm-4 { background: var(--neon); box-shadow: 0 0 4px rgba(245, 197, 24, .4); }
.wish-row {
display: flex; align-items: baseline; gap: 1rem;
padding: .55rem .9rem;
background: var(--bg2);
border: 1px solid rgba(255, 255, 255, .06);
margin-bottom: .5rem;
}
.wish-score {
font-family: var(--mono); font-size: .78rem;
color: var(--neon); white-space: nowrap; min-width: 3.5rem;
}
.wish-idea { flex: 1; font-weight: 300; }
.wish-author { font-family: var(--mono); font-size: .62rem; color: var(--muted2); white-space: nowrap; }
/* ── GALERIE ───────────────────────────────────────── */
.gallery-grid {
display: grid;