-
v2.3.0-beta.1 Stable
released this
2026-06-02 00:00:36 +02:00 | 337 commits to beta since this release2.3.0-beta.1 (2026-06-01)
Features
- port .osk upload pipeline (zip parse, validation, provisioning, git-push seam) + download-all (7067850)
- port admin endpoints (stats, deploy-ci, ci-health, cache, users, tags, pregenerate SSE, download-all) (706f248)
- port auth, sessions, CSRF, and the DB/entities layer (e3ca947)
- port bot read API + Forgejo/ci-done webhooks + pregeneration (afcb94f)
- port CI endpoints (list/dispatch/log) + live SSE stream + log filter (752a882)
- port media proxy (LFS/S3 streaming) + avatar proxy (53b2704)
- port reads layer (Forgejo client, cache, community, users, skin-tags) (d51a10c)
- port render picks GET/PUT with cross-user validation (05da05f)
- port skins.json save, skin delete, skin detail + ci-tracking (f81837d)
- port token-bucket rate limiting + ci-lock gate + /rate-limits (1745d23)
- scaffold Rust (axum) skeleton with health endpoints (b473f27)
- serve dark Swagger UI + ReDoc; constant-time bearer comparisons (d1e3e1f)
Refactors
- drop dead get_skins_json; mark defensive guards no-cover (5408ff4)
- drop unused require_owner_or_admin dependency (5e62a60)
- generate OpenAPI from code via utoipa (drop frozen snapshot) (bc2c434)
- source member identity from a 24h cache instead of minted User rows (446bc2e)
Build
- Rust Dockerfile, serve frozen openapi snapshot, beta CI + Cargo release config (dc4e174)
Tests
- adapter coverage (osu HTTP, actions-log dual-source, repo provisioning, download-all zip, skin detail) (8d7ec5e)
- add in-process integration harness + lib/bin split (b0e889a)
- black-box harness (testcontainers postgres, real session auth, lifespan client) (06b9dd4)
- close reachable coverage gaps and set a 98% branch-coverage floor (b5c36f0)
- cover cache serve-stale, leaf health signal, and versioned invalidation (4c3c641)
- cover ci_tracking resolver, cache expiry, community refresh, picks/webhook/bot/lfs branches (55439af)
- cover delete-path edges, tree/skins.json parse guards, single-field patch, SSE error event (5011278)
- cover repo-provisioning edges, phantom-run cutoff, ci-health other bucket (440f43f)
- cover the identity-cache refactor (member/non-member/virtual) (9520f62)
- final reachable stragglers (SSE multi-poll, resolver edges, zstd fallback, error paths) (51b84c0)
- live-CI SSE stream (terminal + not-found) + phantom CIRun row; pytest-timeout guard (344e7b6)
- media proxy (LFS/proxy/range), avatar cache, CI runs+log reads (9bcbc9b)
- osu OAuth login/callback, logout, /me (45d753b)
- parallel coverage wave (forgejo wrappers, skins branches, get_user_skins, pregenerate, scattered) (44d155e)
- pure-logic spec (osk/skin_ini/semver/rate_limit/csrf/picks/log_filter/upload rules) (37b62d4)
- read endpoints (community, user page, picks, skin-tags) + Forgejo/osu/S3 fakes (87b2fe1)
- real git-push integration (clone/commit/push to a local bare remote) (baf64ee)
- router + service tail coverage; fix coverage greenlet concurrency (b365212)
- security cross-cutting (sessions, CSRF, role gates, rate limiting) (6a2a1b0)
- serve-stale resilience + degraded health signal + CI-active write gate (ce79228)
- webhooks (HMAC/bearer), admin panel, bot API (7a461f6)
- write endpoints (skins.json, delete, dispatch, picks, upload+git stub) (0dc1838)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads