Add niche admin + public expansions + self-host Nunito font (batches 3-4)

Built via two more parallel agent workflows (read schema -> return files),
integrated + verified.

Admin: /admin/emulator (emulator_settings + emulator_texts key/value editor),
/admin/badges (give-badge via RCON), /admin/rare-values (CRUD), /admin/housekeeping
(CRUD), /admin/email-templates (CRUD), /admin/photos (moderation).
Public: /rares (+[category]), /leaderboard (credits/diamonds/duckets),
/guilds (+[id] members), /redeem (voucher -> sendCurrency).
Expanded: /u/[username] now shows badges + photos + guestbook (post form);
/news/[slug] now shows reactions + comments (comment form). Reactions tallied
in JS (Prisma groupBy typing avoided).
Self-hosted Nunito via next/font/google wired to --font-nunito (the atom theme
font, no runtime external fetch). Header + admin nav extended.

Verified: tsc exit 0, vitest 48/48, next build exit 0.
This commit is contained in:
Simo committed 2026-06-28 13:44:23 +02:00
1 parent e96b606e1e
commit e8be0461d8
28 files changed
+2347 -5

No files matched your search

+12
View File
@@ -54,6 +54,15 @@ export async function SiteHeader() {
<Link className="nav-item" href="/photos">
Photos
</Link>
<Link className="nav-item" href="/leaderboard">
Leaderboard
</Link>
<Link className="nav-item" href="/guilds">
Guilds
</Link>
<Link className="nav-item" href="/rares">
Rares
</Link>
<Link className="nav-item" href="/help">
Help
</Link>
@@ -85,6 +94,9 @@ export async function SiteHeader() {
{diamonds}
</span>
</div>
<Link className="nav-item" href="/redeem">
Redeem
</Link>
<Link className="nav-item" href="/settings">
Settings
</Link>