BIGGEST CHANGES: SDL3, Headless Rendering and SR/PP Updates
General
- Switched GLFW to SDL3, which allows HEADLESS RENDERING on Linux! Recording and screenshot mode no longer need a running desktop/display server (see #81)
- Updated SR/PP algorithms to the 2026 Q3 rework.
- Updated to Go 1.26 and refreshed dependencies
- Fixed crashes on AMD Vega GPUs caused by their OpenGL driver (via @timelessnesses )
- Changed linux target to ubuntu 24.04
Danser
Recording
- Fixed slider ticks not rendering in screenshot mode
- Adjusted audio/gameplay synchronization in recordings by 50 ms
- Removed
13as a preset for Software AV1
Audio
- Updated BASS FX, fixing jittery HT/DT playback in watch/play modes
- Fixed spinner bonus sounds ignoring timing point volume
Mods
- Fixed LZ mod freezing danser on single-object maps
- Added Hidden's
Only fade approach circlesoption - Updated lazer mod compatibility checks. DA + EZ/HR combinations are still allowed though
- Relax and Autopilot can now fail in lazer mode
- Updated lazer's Sudden Death and Perfect handling
- Added Sudden Death's
Fail on slider tailoption for lazer mode - Fixed SpunOut mod not working with lazer plays
- Fixed circles reappearing after being hit with Traceable mod
- Added sanity limits for custom speed mod rates
Cursordance
- Added
CursorDance.Resolve2BAfterTAGoption to evaluate 2B only after objects were distributed to cursors - Improved 2B handling
- Fixed danser's autoplay missing on slowed down maps
- Fixed danser's autoplay missing circles/slider heads if they overlap with a spinner's start time
- Fixed spinner dance being too slow with HT
Objects and Skins
- Added
Objects.HitAnimationsswitch. Disabling it makes hit circles, slider heads and slider tails fade out in 60 ms instead of playing the full hit animation, like osu!lazer - Added
Objects.Sliders.DrawReverseArrowsswitch to disable just the reverse arrows.Objects.Sliders.DrawEndCircleswon't disable reverse arrows anymore - Fixed beatmap combo colors breaking when other colors were defined
- Added support for beatmap-defined slider and input overlay colors when
Skin.UseBeatmapColorsis enabled
HUD
- Added Reading PP to the PP component display when using the newest calculator
- Added Team mode to
Gameplay.ScoreBoard.Mode(via: @Zeefoe ) - Added
mapIdandsetIdto custom statistics templates (via @sbrstrkkdwmdr ) - Added
Gameplay.AimErrorMeter.UseFallbackSkinoption to use the fallback skin for aim error if the selected skin is an "instafade" one
Gameplay
- Added
Gameplay.AlwaysSkipIntrooption to always skip the map's beginning regardless of flag/launcher selection.
Scoring (General)
This release includes both the 2025 Q4 and 2026 Q3 SR/PP updates. The newest calculator includes Reading, reworked aim/speed calculations and updated miss penalties. 2025 Q4 was not tested thoroughly though, so use at your own risk
latestnow selects the 2026 Q3 rework. If you already had latest selected, it will automatically use the new calculator- The previous default remains available as
250306(json) and2025 Q1 update(GUI) - The 2025 Q4 update is available as
251020(json) and2025 Q4 update(GUI) - Replays now only fail AFTER they run out of frames
Scoring (Lazer)
- Updated score mod multipliers, including custom mod settings. Older replays retain the appropriate multiplier version
- Aligned hit windows with osu!lazer
Beatmaps
- Fixed https://osu.ppy.sh/beatmapsets/417106#osu/1267372 freezing danser due to absurd timing point values
- Improved circular-arc slider handling, including missing sliders on https://osu.ppy.sh/beatmapsets/2132035#osu/4484651
- Fixed slider ticks not generating correctly with LZ mod when an inherited timing point appeared before the initial timing point
And probably something I forgot about.
Known issue: there are still some judgement discrepancies that I'm looking into.
Happy dansing!