Releases: Quent1L/skol-arena
Releases · Quent1L/skol-arena
Release list
v2.0.4
2.0.4 (2026-09-13)
🐛 Bug Fixes
v2.0.3
v2.0.2
v2.0.1
v2.0.0
2.0.0 (2026-08-29)
⚠ BREAKING CHANGES
- rules: badges already awarded change meaning. They are season
trophies now, and every existing badge rule becomesper_season— a
rule meant as a one-off has to be set back toonceby hand. The first
reconciliation pass after deploy backfills the seasons that were never
awarded; it is enqueued by the nightly cron at 03:00, or on demand from
the admin badge reconciliation button, not at startup. - stats: bestTeams, bestDuoPlayers, bestSoloPlayers and
bestAsymmetricSoloPlayers in the tournament stats payload are now
boards ({ entries, isLowSample }) instead of arrays. Entries carry a
weightedscore, and a team carries itsplayersroster. - notifications: GET /me/notifications takes
limit/cursorand
returns { data, hasMore, nextCursor, unreadCount, total } instead of a
bare array. FORCE_UPDATE already stands on this branch. - mmr: MMR of ongoing ranked seasons is recalculated on the
first boot after the update and standings will move. Team matches now
split the team delta instead of handing it whole to each player, so
per-match variation in a 2v2 is halved. Finished seasons keep their
frozen values. - tournaments: the tournament response nests the knobs under
scoringConfig/championshipConfig. FORCE_UPDATE ships in this
commit so old clients are held until they reload.
✨ New Features
- api: negotiate API major by accept-version header (5cb6b11)
- backend: add a bulk match generator script (68281ea)
- disciplines: archive instead of delete, and protect match history (588bc4d)
- match: fold post-match contestation into the thread (853c12f)
- match: replace score proposals with a discussion thread (4f49afc)
- match: show a skeleton while the match form loads (626559f)
- match: show the MMR multiplier on ranked outcome types (f32e415)
- mmr: split team delta into normalised shares (a656afe)
- ranked: a player's peak is a career, not a season (de88c14)
- ranked: a season's dates are the ones it really had (1e7dcd1)
- ranked: make the match reporting window configurable (f129749)
- ranked: show match balance from pre-match MMR (dbd69cb)
- rules: condition on how a match ended (aed85c9)
- rulesets: freeze the discipline a competition is played under (5135adb)
- rules: explain priority and hide it on badge rules (60efec9)
- rules: make a badge a season trophy, not a lifetime one (5820a45)
- rules: record every firing and what became of it (7c30f4a)
- rules: version stored rules and migrate them forward (b2f75ff)
- stats: rank cards show roster, links and ranking bar (0b2a277)
- tournament: make loading and background refresh legible (694e066)
- tournaments: one editability policy, and enforce status transitions (93275c5)
🐛 Bug Fixes
- backend: warn that a bulk seed run saturates the MMR queue (b7a7b10)
- db: apply migrations one transaction each (ce32b7e)
- db: repair the drizzle-kit snapshot chain (11f8969)
- disciplines: make propagation selectable and tie it to the real edits (9ecf0bc)
- header: read the display name from app_users (3a4123a)
- i18n: fix iOS PWA install instruction wording (1c7475a)
- i18n: label match balance sides A/B (2942f39)
- i18n: translate French leftovers on the player and match screens (16d595c)
- match: keep the match form on a single root node (83f6920)
- match: validate revisions against the stored score (fca2c6e)
- notifications: free action notifs once their action is settled (6308fe6)
- ranked: keep the rule message on its match event (dac7bc3)
- ranked: show a profile only to whoever has one (6a3c5bb)
- ranked: stop locked fields blocking a season update (affd849)
- rewind: keep "Top N" on one line in stat labels (d60db69)
- rules: make contains work on string facts (178f082)
- tournament: redirect to appropriate edit path for ranked tournaments (2b46b97)
- tournament: stop layout shift on desktop tab switch (b0bd99b)
- worker: drop a job whose subject is gone (ca95f70)
⚡ Performance
- db: generate row ids as UUID v7 (64ef7b5)
- editor: dedupe prosemirror copies (99e42be)
- notifications: drop duplicate boot fetch (c178441)
- notifications: paginate the feed, clear it in one request (8b87e99)
♻️ Refactoring
- mmr: own the placement rule in the engine (9790a29)
- ranked: drop the skip from the MMR reveal and recap (3f649cd)
- tournaments: extract per-mode config (0e04c7b)
📝 Documentation
- add open source community health files (b1d3f73)
- site: add a blog and announce going open source (e5aa62c)
- site: add a copy button, unstyle code inside blocks (95adcb7)
- site: add SEO metadata, sitemap and llms.txt (4c80661)
- site: move product reference into the docs site (4fecaf4)
- site: one-command reset for the screenshot database (1bcac4f)
- site: redesign the landing page around real product screenshots (69f6547)
- site: state the two-side match limit an...
v1.20.2
v1.20.1
v1.20.0
1.20.0 (2026-08-09)
✨ New Features
- home: rebuild the tournaments hub around the player (3f35fce)
- ranked: add end-of-season rewind (c03de5f), closes #1
- ranked: add peak and average MMR season leaderboards (0ced6f8)
- ranked: fix cross-season MMR carry-over (566961a)
- ranked: give leaderboard views the stats sub-tab system (c058d3a)
- ranked: make mobile stats sub-tabs draggable (49b52cd)
- rewind: refine deck stats, layout and mobile UX (c6dd97f)
- stats: rank leaderboards on competition ranks (5a14290)
- users: record last activity, not just last login (9c4e5a2)
🐛 Bug Fixes
- auth: await sign-out before leaving for the login page (ef37523)
- auth: forward refreshed session cookies to the client (b1c04fe)
- ranked: persist stats sub-tab in URL (64b3b33)
- resolve code review findings on beta (5bc7dd8)
- router: add component to empty tournament-detail child route (8b4a324)
- stats: stop leaderboard cutoff from counting groups instead of ranks (e0f166d)
🎨 Style
v1.19.0
1.19.0 (2026-08-03)
✨ New Features
- pwa: split forced and background update flows (0a25421)
🐛 Bug Fixes
- comparison: clear stale results when filters emptied (e8f874a)
- errors: stop reporting failures caused by leaving the page (89b8a5a)
- ranked: keep rank tier levels contiguous (589bb44)
- ranked: refresh weekly MMR movers on match finalization (1eca138)
- ranked: revalidate stale caches on tournament remount (ba2d5e4)