• v4.2.0 fc08bf9526

    v4.2.0 Stable

    oscbot released this 2026-06-06 12:56:11 +02:00 | 293 commits to main since this release

    4.2.0 (2026-06-06)

    Features

    • ops: add a container HEALTHCHECK on /api/health (4f67530)
    • rate-limit: rate-limit skin-detail and pick endpoints, add picks_save bucket (10c6e9f)

    Bug Fixes

    • db: track applied read-model migrations in a ledger (82e6de4)
    • download: stream download-all .osk from Garage by OID, not Forgejo media (13d32ea)
    • picks: keep owner_kind on picks embedded in the user page (2d54d7a)
    • rate-limit: compare integration token in constant time (2fc7f97)
    • rate-limit: key on the rightmost X-Forwarded-For hop (5ee686c)
    • upload: stream multipart parts to disk and bound batch size (dc04c2f)

    Performance Improvements

    • auth: resolve session and user in a single query (65ed5de)
    • ci: render only new log lines in the live stream (e349856)
    • ci: resolve dispatch run id in the background, return immediately (5d220c2)
    • community: count member skins in one grouped query (f0ead2e)
    • media: skip ref resolution when the tag already matches (02a3521)
    • rate-limit: shard the token-bucket map across 16 locks (4138606)
    • reads: resolve repo tags once per page instead of three times (93d2455)
    • upload: spool decompressed .osk members to disk instead of RAM (ca7567d)
    • zip: fetch skin .osk files concurrently when building zips (982b418)

    CI

    • release: show chore commits in the changelog (1a21f45)
    • release: upgrade semantic-release toolchain to latest, pinned exact (e32b9ec)

    Tests

    • ci: assert dispatch returns immediately without a run id (9632c44)
    • upload: reject an over-cap part with 413 while streaming (67a4841)

    Chores

    • release: 4.2.0-beta.1 [skip ci] (4a39713)
    • release: 4.2.0-beta.2 [skip ci] (f3b67d1)
    • release: 4.2.0-beta.3 [skip ci] (9706024)
    • sync Cargo.lock to 4.1.0 (eb900ea)
    • sync Cargo.lock to 4.2.0-beta.2 (eb64c1c)
    Downloads
  • v4.2.0-beta.3 9706024252

    v4.2.0-beta.3 Stable

    oscbot released this 2026-06-06 12:36:22 +02:00 | 290 commits to beta since this release

    4.2.0-beta.3 (2026-06-06)

    Bug Fixes

    • download: stream download-all .osk from Garage by OID, not Forgejo media (13d32ea)

    CI

    • release: show chore commits in the changelog (1a21f45)
    • release: upgrade semantic-release toolchain to latest, pinned exact (e32b9ec)
    Downloads
  • v4.2.0-beta.2 f3b67d1aac

    v4.2.0-beta.2 Stable

    oscbot released this 2026-06-06 12:09:54 +02:00 | 294 commits to beta since this release

    4.2.0-beta.2 (2026-06-06)

    Features

    • ops: add a container HEALTHCHECK on /api/health (4f67530)

    Bug Fixes

    • db: track applied read-model migrations in a ledger (82e6de4)
    • rate-limit: key on the rightmost X-Forwarded-For hop (5ee686c)

    Performance Improvements

    • rate-limit: shard the token-bucket map across 16 locks (4138606)
    • upload: spool decompressed .osk members to disk instead of RAM (ca7567d)

    Tests

    • upload: reject an over-cap part with 413 while streaming (67a4841)
    Downloads
  • v4.2.0-beta.1 4a39713688

    v4.2.0-beta.1 Stable

    oscbot released this 2026-06-06 11:46:30 +02:00 | 301 commits to beta since this release

    4.2.0-beta.1 (2026-06-06)

    Features

    • rate-limit: rate-limit skin-detail and pick endpoints, add picks_save bucket (10c6e9f)

    Bug Fixes

    • picks: keep owner_kind on picks embedded in the user page (2d54d7a)
    • rate-limit: compare integration token in constant time (2fc7f97)
    • upload: stream multipart parts to disk and bound batch size (dc04c2f)

    Performance Improvements

    • auth: resolve session and user in a single query (65ed5de)
    • ci: render only new log lines in the live stream (e349856)
    • ci: resolve dispatch run id in the background, return immediately (5d220c2)
    • community: count member skins in one grouped query (f0ead2e)
    • media: skip ref resolution when the tag already matches (02a3521)
    • reads: resolve repo tags once per page instead of three times (93d2455)
    • zip: fetch skin .osk files concurrently when building zips (982b418)

    Tests

    • ci: assert dispatch returns immediately without a run id (9632c44)
    Downloads
  • v4.1.0 dca4a19762

    v4.1.0 Stable

    oscbot released this 2026-06-05 23:39:20 +02:00 | 320 commits to main since this release

    4.1.0 (2026-06-05)

    Features

    • ops: sweep expired sessions and reap stranded CI runs (43c7045)

    Bug Fixes

    • auth: verify OAuth state nonce to block login CSRF (2d4334c)
    • rate-limit: scope integration token to user_get and meter download-all (5959768)

    CI

    • add Renovate config + PR-check workflow (ef80a18)
    • install nodejs in pr-check container (actions/checkout needs it) (a2ba68d)
    • pin held deps by allowedVersions (0.x bumps are Renovate 'minor') (1fe548b)
    • resolve forgejo-hosted actions via gitea-tags @ data.forgejo.org (c42947e)
    • scope gitea-tags override to github-tags datasource only (aaa22ce)
    • set Renovate minimumReleaseAge to 3 days (pnpm cooldown + supply-chain hygiene) (bf71b4b)
    Downloads
  • v4.0.0 f99f566de1

    v4.0.0 Stable

    oscbot released this 2026-06-05 00:56:50 +02:00 | 335 commits to main since this release

    4.0.0 (2026-06-04)

    ⚠ BREAKING CHANGES

    • api: model the OSC community skin as its own collection, drop virtual user 0
    • api: paginate /api/community, user skins, and admin users

    Features

    • api: centralize rate-limit catalog + public GET /api/rate-limits (1100f20)
    • api: model the OSC community skin as its own collection, drop virtual user 0 (d71d70e)
    • api: paginate /api/community, user skins, and admin users (fec3431)
    • ci: GET /api/health/ci-load (running/queued) for the high-load banner (fcb5ef9)
    • restore per-tag browsing in the read model (4d71f89)
    • skins: download-all honors the selected tag (?ref=) (03ee56f)

    Bug Fixes

    • forgejo: create skin repos private to close direct-clone bypass (a119983)
    • read-model: ingest osc_skins as virtual user 0 (was dropped by numeric repo filter) (6852800)
    Downloads
  • v4.0.0-beta.2 6ec3947e7c

    v4.0.0-beta.2 Stable

    oscbot released this 2026-06-05 00:23:55 +02:00 | 331 commits to beta since this release

    4.0.0-beta.2 (2026-06-04)

    ⚠ BREAKING CHANGES

    • api: model the OSC community skin as its own collection, drop virtual user 0

    Features

    • api: model the OSC community skin as its own collection, drop virtual user 0 (d71d70e)
    Downloads
  • v4.0.0-beta.1 1bd2dea2f9

    v4.0.0-beta.1 Stable

    oscbot released this 2026-06-04 23:12:19 +02:00 | 334 commits to beta since this release

    4.0.0-beta.1 (2026-06-04)

    ⚠ BREAKING CHANGES

    • api: paginate /api/community, user skins, and admin users

    Features

    • api: paginate /api/community, user skins, and admin users (fec3431)
    Downloads
  • v3.1.0-beta.4 f8727e8877

    v3.1.0-beta.4 Stable

    oscbot released this 2026-06-03 23:53:29 +02:00 | 336 commits to beta since this release

    3.1.0-beta.4 (2026-06-03)

    Features

    • api: centralize rate-limit catalog + public GET /api/rate-limits (1100f20)
    • ci: GET /api/health/ci-load (running/queued) for the high-load banner (fcb5ef9)
    • skins: download-all honors the selected tag (?ref=) (03ee56f)
    Downloads
  • v3.1.0-beta.3 cc1a0a678e

    v3.1.0-beta.3 Stable

    oscbot released this 2026-06-03 23:16:33 +02:00 | 340 commits to beta since this release

    3.1.0-beta.3 (2026-06-03)

    Bug Fixes

    • read-model: ingest osc_skins as virtual user 0 (was dropped by numeric repo filter) (6852800)
    Downloads