-
v5.0.0 Stable
released this
2026-07-07 20:08:23 +02:00 | 14 commits to main since this release5.0.0 (2026-07-07)
⚠ BREAKING CHANGES
- communities: move community management to /api/communities/{slug}
- webhooks: require repo identity on community CI events
- webhooks: repo-identified community CI events
- picks: community picks name their community
- db: slug-keyed community collections
- api: drop osc_member from payloads; swiss_like -> perk_eligible
- perk gating driven by community flags
- db: community perk flags, description, multi-country auto-join
- move community skin to /api/community/{slug}, drop bot API
Features
- add created_at, rank and skin_count to the admin users list (40c04e8)
- add HMAC-signed media URL service (7329bd2)
- add osc_member flag and group=osc filter to the community roster (18ae948)
- add per-skin revision to the skins read model (ad0fa33)
- admin activity feed endpoint (81930d5)
- admin: PATCH /api/admin/communities/{slug} (2dad96c)
- api: drop osc_member from payloads; swiss_like -> perk_eligible (40189c4)
- auth: viewer community state on /me (2ed69f4)
- backfill per-skin source_oid from git for pre-rollout tags (a47d791)
- communities: community logo upload and public serving (86dacf3)
- communities: join requests (7ba059e)
- communities: move community management to /api/communities/{slug} (fe70169)
- db: community management schema (f3eb335)
- db: community perk flags, description, multi-country auto-join (620f19c)
- db: slug-keyed community collections (3babe8d)
- embed deeper skin page + ?limit for the integration token (1d7eaa7)
- expose per-skin version_tags on the skin detail endpoint (f6f7598)
- expose Prometheus /metrics with HTTP request instrumentation (6ec81a3)
- forgejo reachability health endpoint with osc_forgejo_up gauge (0813880)
- gate profile picks on the owner's OSC membership and expose osc_member (2e64f23)
- include the skin-CI actions in the changelog feed (b89d572)
- inquiries: file support inquiries as Forgejo issues (5a99580)
- instrument business events (downloads, uploads, logins, CI, ingest, upstream, caches, rate limits) (01ed089)
- keep oscbot working under the lock — bot-token picks read + signed osk URLs (fc9330c)
- lock all reads behind auth; account-based rate limits (f6f08d9)
- move community skin to /api/community/{slug}, drop bot API (39d0ef6)
- multi-community membership model (ab3a459)
- og: community link previews (f43344d)
- open uploads to all members, gate render picks behind swiss-like (7793ea1)
- periodic DB-derived gauge collector for Prometheus (5459743)
- perk gating driven by community flags (e620725)
- picks: community picks name their community (5da4c35)
- public OG preview endpoint with signed image URLs (31d0903)
- read-model admin stats with users/skins/ci/storage breakdown (d569eba)
- rebrand user-visible api strings to SkinHub (a665a97)
- serve admin ci-health from local ci_runs, keep Forgejo behind ?deep=true (2897c41)
- tie perks to OSC membership and let admins manage communities (07a0f0b)
- webhooks: repo-identified community CI events (5679c8b)
Bug Fixes
- bind oauth state to the session secret (6eafdb6)
- bind the resolved tag into signed media URLs (no cross-ref reuse) (8b9c3d7)
- bound skin upload/download decompression and archive size (2cbbeab)
- cap each download-all object fetch at the upload ceiling (4ae8757)
- communities: allow appointing auto-joined members as community admins (cb178b4)
- community: fall back to osu identity country for roster membership (18f5cfa)
- derive deep ci-health status from the latest run, not a workflow name (d76f918)
- exempt signed media requests from rate limiting (45cf6c3)
- gate /api/og behind OG_SHARED_SECRET to block roster scraping (ed39d0a)
- OG skin preview is thumbnail-only (no gameplay video embed) (d82bc20)
- og: embed image URLs no longer expire (ec7af70)
- plain ascii in user-facing text (380911f)
- redact secrets in Settings Debug output (3c8b6ec)
- reject replayed ci-status requests (040de43)
- require SESSION_SECRET >= 32 bytes in release builds (78bee65)
- saturating sum in download-all size pre-check to prevent i64 overflow (4e83541)
- scope default trusted-proxy CIDRs to the proxy network (df6035c)
- stream .osk overrides rewrite to a tempfile to bound memory (7447a19)
Refactors
- move ci-notify secret backfill to a --backfill-notify-secrets CLI flag (40bac33)
- webhooks: require repo identity on community CI events (d5fbe04)
Documentation
- document the ?limit query param on GET /api/users/{id} (4ae8d67)
Tests
- add forgejo REST client coverage (f714244)
- cover admin deploy-ci, reproject SSE, download-all (75f70b1)
- cover avatar proxy cache and garage-serve paths (9b45eb9)
- cover community media 404s and rate-limit DB-fault fallback (6cce65d)
- cover community skin detail/list and rate-limit catalog (002bd4d)
- cover notify-secret backfill, ci-load and pending-run tracking (5b5931d)
- cover osu OAuth callback success and failure paths (8e8f979)
- cover reproject_all stream and community ingest (2307ae4)
- cover Settings::from_env parsing and secret redaction (b0f18aa)
- cover skin_repo provisioning and changelog feed (44f330b)
- cover skins.json save authz, ci-active and no-op branches (afca831)
- cover upload validation issue branches (8904214)
- share one postgres + minio across the suite via nextest (4cd8395)
- tolerate poisoned ENV_LOCK in config tests (751b784)
Dependencies
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads