Releases: ppy/osu
2025.310.0
What's Changed
- Use localisation from web for the report button by @GAMIS65 in #32262
- Fix precise movement popover crashing if selection bounding box exceeds playfield size by @bdach in #32269
- Fix leaderboard date text being cut off sometimes by @bdach in #32268
- Fix error message on invalid room password by @smoogipoo in #32299
- Fix initial multiplayer room settings not applied by @smoogipoo in #32298
- Allow kiai/star-fountain activation SFX to be skinnable by @nekodex in #32267
New Contributors
Full Changelog: 2025.306.0...2025.310.0
2025.306.0
What's Changed
- Limit number of allowed beatmap combo colours to 8 by @bdach in #32110
- Fix sliders not being selectable if the body is hidden but the head is still visible by @bdach in #32130
- Add support for legacy osu!mania barline height and colour spec by @peppy in #32151
- Adjust preview time display to not conflict with bookmarks by @peppy in #32149
- Fix multiplayer results screen displaying same beatmap for all users by @smoogipoo in #32109
- Cancel beatmap load in more loops by @smoogipoo in #32192
- Apply first wave blanket fixes to new beatmap carousel design by @peppy in #32153
- Make
TestSceneSongSelect
work with local database by @peppy in #32152 - Add SFX for kiai/star fountain activation by @nekodex in #32162
- Fix settings control not visible because of previous search by @zihadmahiuddin in #32135
- Always zoom timeline to centre rather than focus point by @peppy in #32197
- Fix intermittent score panel test by @smoogipoo in #32209
- Use web localisable string for team channel label by @Joehuu in #32204
- Cancel difficulty calculation after 10 seconds by default by @smoogipoo in #32208
- Fix being unable to join multiplayer rooms with many users by @smoogipoo in #32210
- Create, join, and part multiplayer rooms only via the multiplayer server by @smoogipoo in #31637
- Remove unused virtual method after refactor the scale handling. by @andy840119 in #32200
- Fix drain length calculation helper method being able to return negative durations by @bdach in #32196
- Fix possible crash when scaling objects in editor by @bdach in #32158
- Fix broken test by @smoogipoo in #32215
- Remove
RoomManager
, centralise listing management to lounge by @smoogipoo in #31866 - Add Alt + mousewheel volume adjustment on result screens by @Gennadiyev in #32075
- Fix multiplayer not joining correct chat channel by @smoogipoo in #32217
- Adjust scale and display of rooms in multiplayer lounge by @peppy in #32219
- Fix thread safety when kicking multiplayer users by @smoogipoo in #32214
- Attempt to fix common editor test failures by @peppy in #32218
- Attempt to preserve sample control point bank when encoding beatmap by @bdach in #32098
- Remove
SelectedRoom
from online play tests by @smoogipoo in #31867 - Fix playlists results screens potentially displaying negative score positions by @bdach in #32199
- Fix "use these mods" context menu option doing broken things with system mods by @bdach in #32235
- Localise skin rename/export/delete buttons in settings by @SchiavoAnto in #32243
- Add taskbar flashing when a multiplayer game is starting by @GioSDA in #32180
- Bump difficulty calculator versions in preparation for release by @peppy in #32246
- Add current beatmap info to window title by @zihadmahiuddin in #32222
- Fix differential submission process crashing when no files have changed by @bdach in #32248
- Add ability to start gameplay from carousel v2 by @peppy in #32220
- Add "discard unsaved changes" operation to beatmap editor by @bdach in #32240
- Fix initial multiplayer room items not having freestyle by @smoogipoo in #32249
- Fix intermittent playlists results screen tests by @smoogipoo in #32245
New Contributors
- @zihadmahiuddin made their first contribution in #32135
- @Gennadiyev made their first contribution in #32075
- @GioSDA made their first contribution in #32180
Full Changelog: 2025.227.0...2025.306.0
2025.225.0
What's Changed
- Fix wrong beatmap attributes in multiplayer spectate by @smoogipoo in #32004
- Fix terminology and capitalisation on high precision mouse tooltip by @ziv-vy in #32050
- Adjust rounding tolerance in distance snap grid ring colour logic by @bdach in #32011
- Fix "use current distance snap" button incorrectly factoring in last object with velocity by @bdach in #32014
- Fix host change sounds playing when exiting multiplayer rooms by @smoogipoo in #32005
- Add support for team chat channels by @bdach in #32079
- Fix taiko swell ending samples playing at results sometimes by @bdach in #32085
- Do not give swell ticks any visual representation by @bdach in #32084
- Fix hash comparison being case sensitive when choosing files for partial beatmap submission by @bdach in #32081
- Update framework by @bdach in #32096
- Fix double-clicking difficulty adjust sliders not resetting the value to default correctly by @bdach in #32077
New Contributors
Full Changelog: 2025.221.0...2025.225.0
2025.221.0
First hotfix for last major release
What's Changed
- Implement designs for beatmap carousel v2 by @frenzibyte in #31774
- Adjust handling of team flags with non-matching aspect ratio to match web by @bdach in #31969
- Fix results screen applause playing too loud during multiplayer spectating by @peppy in #31967
- Update framework by @bdach in #31965
- Fix osu!taiko and osu!catch being oversized on mobile platforms by @frenzibyte in #31968
Full Changelog: 2025.220.0...2025.221.0
2025.220.0
New release!
Importantly, if you're one of those reading release notes here on github, we're changing up the format a bit. Now, all merged PRs will be listed here, rather than the edited version. If you prefer to read my curated changelog, head over to the usual place on the osu! website.
The curated changelog will now have anything not interesting to end users removed. I'm opting to keep the full list here on github to give everyone involved in making the release happened the credit they deserve, while making the actual user facing changelog a lot more relevant.
What's Changed
- Don't highlight friends' scores under beatmap's friend score leaderboard by @CloneWith in #31576
- Seek in replay scaled by replay speed by @Rudicito in #31539
- Remove redundant ToArray() calls in Osu/ManiaHitObjectComposer by @turbedi in #31583
- add warning text on team acronym conflict by @ILW8 in #31553
- Add precise movement tool to osu! editor by @bdach in #31547
- Add completion marker to daily challenge profile counter by @bdach in #31543
- Fix player settings in replay hiding when dragging a slider by @Rudicito in #31593
- Fix beat snap grid being lines not being corectly centered to time by @peppy in #31602
- Display up to 2 decimal places for bpm in timing screen metronome by @minetoblend in #31586
- Add special handling for file import button on iOS by @frenzibyte in #31026
- Show spectating users during gameplay by @bdach in #31527
- Make friend notifications less prominent by @peppy in #31613
- Fix song select right click handling by @peppy in #31604
- Tidy up various input handling anomalies by @peppy in #31603
- Snap to beat divisor when pasting hitobjects in editor by @minetoblend in #31588
- Fix crash from new combo colour selector when there are no combo colours present by @bdach in #31616
- Refetch local metadata cache if corruption is detected by @bdach in #31509
- Initial carousel additions in preparation for selection logic by @peppy in #31632
- Roll back windows build image to 2019 on android build job by @bdach in #31633
- Hide Discord RPC error messages away from user attention by @frenzibyte in #31640
- Fix potential crash when adjusting offset by @peppy in #31644
- Add selection support to beatmap carousel v2 by @peppy in #31634
- Add view in browser context menu functionality to multiplayer/playlist rooms by @Layendan in #31623
- Make offset adjust more lenient by @peppy in #31645
- Split out beatmap and set panels in beatmap carousel v2 by @peppy in #31652
- 🔧 Specify we're not using non-exempt encryption by @ThePooN in #31664
- Work around rare sharpcompress failure to extract certain archives by @bdach in #31698
- Catch and display user-friendly errors regarding corrupted audio files by @bdach in #31697
- Do not bundle explicit beatmaps by @bdach in #31696
- Remove "Accuracy" from osu!catch editor setup by @peppy in #31709
- Change friend online notifications' icon and colours by @peppy in #31711
- Enable sentry caching to avoid sentry writing outside of game directory by @peppy in #31417
- Fix recent editor textbox regressions by @frenzibyte in #31590
- Fix incremental unstable rate calculation not matching expectations by @peppy in #31723
- Make multiplayer change room settings more obvious as to what it does by @peppy in #31726
- Refactor editor object snapping to remove bad abstractions by @bdach in #31655
- Do not display autocorrect suggestions in two factor verification code text box by @frenzibyte in #31685
- Add unique samples for friend online/offline notifications by @nekodex in #31663
- Change mirror mod direction setting description & tooltip to hopefully be less confusing by @bdach in #31731
- Fix stacked objects selection order on editor timeline by @KareVulli in #31732
- Abstract out
WizardOverlay
for multi-step wizard type screens by @bdach in #31733 - Improve osu!mania playability on mobile devices by @frenzibyte in #31368
- Do not reset online information when saving beatmap by @bdach in #31747
- Fix results screen sounds persisting after exit by @smoogipoo in #31742
- Fix distance snap time part ceasing to work when grid snap is also active by @bdach in #31737
- Avoid moving already placed objects temporally when "limit distance snap to current time" is active by @bdach in #31743
- Make distance snap settings mutually exclusive by @peppy in #31778
- Avoid accessing
WorkingBeatmap.Beatmap
every update call by @peppy in #31775 - Fix depth ordering in new carousel not being relative to selected item by @frenzibyte in #31776
- Fix multi-segment-type sliders getting mangled on legacy export by @bdach in #31734
- Add group support to beatmap carousel v2 by @peppy in #31764
- Fix carousel tests failing due to dependency on depth ordering by @peppy in #31785
- Add expanded state tracking to beatmap carousel v2 by @peppy in #31787
- Implement "form button" control by @bdach in #31783
- Always select the closest control point group regardless of whether it has a timing point on entering timing screen by @bdach in #31791
- Add support for "freestyle" in multiplayer by @smoogipoo in #31260
- Update framework by @peppy in #31795
- Added warning before bookmark reset by @necocat0918 in #31780
- Change menus to fade out with a slight delay so settings changes are visible by @peppy in #31779
- Implement visual appearance of beatmap submission wizard by @bdach in #31784
- Fix distance snap grid not properly working due to multiple issues by @bdach in #31789
- Display up-to-date online status in user panels by @smoogipoo in #31524
- Fix
Carousel.FilterAsync
not working when called from a non-update thread by @peppy in #31798 - Implement visual component for displaying submission progress by @bdach in #31803
- Improve bookmark controls by @bdach in #31806
- Allow ordering certain carousel panels behind others by @frenzibyte in #31802
- Add invalidation on draw size change in beatmap carousel v2 by @peppy in #31817
- Add support for grouping by artist to beatmap carousel v2 by @peppy in #31801
- Add ruleset icon to expanded score panel by @smoogipoo in #31815
- Support variable spacing between beatmap carousel panels by @frenzibyte in #31799
- Don't attempt to submit zero scores by @peppy in #31822
- Add API request & response structures for beatmap submission by @bdach in #31804
- Always transfer keyboard selection on activation by @peppy in #31824
- Refactor grouping to be much more efficient by @peppy in #31823
- Changed the Currently Playing Text when no track is selected by @SebastianPeP in #31835
- Fix slider ball rotation not being updated when rewinding to a slider by @peppy in #31825
- Add percent progress display to editor footer by @peppy in #31841
- Fix incorrect thread access in recent iOS orientation changes by @frenzibyte in #31845
- Fix spectator list showing other users in multiplayer room even if they're not spectating by @bdach in #31844
- Add menu items to open beatmap info & discussion pages in browser from editor by @bdach in #31848
- Disable scale animation when holding editor "test" button by @peppy in #31854
- Fix score position not being displayed in solo results screen by @bdach in #31846
- Fix osu!mania judgement position not shifted on flipped scroll direction by @frenzibyte in #31682
- Show c...
2025.118.3
Just a 'lil hotfix, with android this time!
Editor
Fix crash from new combo colour selector when there are no combo colours present (#31616 by @bdach)
Reliability
Fix discord error messages popping up constantly (#31640 by @frenzibyte)
Discord seems to have broken something. Until it's fixed we're just going to hide the messages as to not bother you peoples.
Fix potential crash when adjusting offset (#31644 by @peppy)
Gameplay
Make offset adjust more lenient (#31645 by @peppy)
We added new rules to disallow changing offset too far into gameplay, but it wasn't accounting for intro time correctly. Now it does, so you have a full 10 seconds to adjust.
(you can also always adjust during breaks)
Tooling
Fix android builds not building (#31633 by @bdach)
Full Changelog: 2025.118.2...2025.118.3
2025.118.2
Hotfix release for right click at song select and editor setup screen mishaps.
Android release is not updated because github actions are not working currently for android.
Full Changelog: 2025.118.1...2025.118.2
2025.118.0
Code Quality
- Cleanup Objective-C interop code (ppy/osu-framework#6474 by @frenzibyte)
- Expose game host from iOS app delegate class (ppy/osu-framework#6477 by @frenzibyte)
- Show whether drawable is receiving input in draw visualiser (ppy/osu-framework#6481 by @peppy)
- Fix crash when dragging in a text box while a key is held down (ppy/osu-framework#6485 by @424ever)
- Upgrade packages (#27920 by @peppy)
- Clean up windows association manager code (#31450 by @peppy)
- Simplify editor "ternary button" structure (#31462 by @bdach)
- Add new osu!(stable) registry ProgId (#31481 by @Susko3)
- Use
double
inScrollContainer
for scroll tracking (ppy/osu-framework#6467 by @peppy) - Allow
TextBox
to specify type of text being input (ppy/osu-framework#6408 by @frenzibyte) - Update game
ScrollContainer
usage in line with framework changes (#31474 by @peppy) - Specify type of text input in most
TextBox
usages (#30495 by @frenzibyte) - Ensure API starts up with
LocalUser
in correct state (#31507 by @peppy) - Change
OffsetScrollPosition
to take adouble
(ppy/osu-framework#6492 by @peppy) - Add entry point to
Game
for logging setup purposes (ppy/osu-framework#6493 by @peppy) - Typo fix (#31531 by @shawwn)
- Bump NVika tool to 4.0.0 (#31534 by @bdach)
- Bump NVika tool to 4.0.0 (ppy/osu-framework#6494 by @bdach)
- Remove
Status
andActivity
bindables fromAPIUser
(#31513 by @smoogipoo) - Fix incorrect release pattern in macOS/iOS texture loading code (ppy/osu-framework#6495 by @frenzibyte)
- Move error function from osu.Game.Utils to osu.Game.Rulesets.Difficulty.Utils (#31520 by @Natelytle)
Editor
Speed up metronome in timing screen when pressing control key (#31342 by @minetoblend)
Changes the speed at which the metronome swings & the tick sample plays to 2x (or 3x when beat divisor is in triples mode) the speed when control is pressed, matching stable behavior.
Fix slider repeats not properly respecting "show hit markers" setting (#31354 by @bdach)
Fix slider end circles not remaining for long enough when hit animations disabled (#31390 by @peppy)
Reset playback speed to 100% on entering test play (#31445 by @bdach)
Force new combo on objects succeeding a break (#31448 by @bdach)
Display storyboard in editor (#31364 by @bdach)
Add combo colour override control to editor (#31473 by @bdach)
Fix performance degradation while trying to place object with a new combo in the editor. (#31446 by @EVAST9919)
Smaller changes
- Round object coordinates to nearest integers on legacy export rather than truncating (#31305 by @bdach)
- This fixes minor issues with snapping when exporting for use in stable. It's going to be more important soon as BSS comes online.
- Always block scroll input above editor toolbox areas (#31383 by @peppy)
- Constrain range of usable characters in romanised metadata to ASCII only (#31433 by @bdach)
- Reduce allocations in the editor caused by
TimelineBlueprintContainer
(#31436 by @EVAST9919) - Select closest timing point every time the timing screen is changed to (#31454 by @bdach)
- Delete entire juice stream when only one vertex remains after deleting another vertex (#31452 by @bdach)
- Fix juice stream placement blueprint being initially visually offset (#31453 by @bdach)
Gameplay
Fix not being able to apply last play offset after returning to song select (#31386 by @peppy)
This stopped working recently, but we heard the feedback that this is too useful to do away with!
Implement spectator list display (#31526 by @bdach)
Smaller changes
- Fix rate adjustments changing the spacing between replay frames (#31459 by @peppy)
- Apply beatmap offset to all difficulties only if they have the same audio (#31523 by @Rudicito)
- Fix gameplay offset adjustment limits not being enforced (#31533 by @peppy)
Gameplay (osu!)
Fix slider repeat arrows animating incorrectly in editor / replays (#31388 by @peppy)
Gameplay (osu!catch)
- Fix slider event generator incorrectly not generating repeats when tick distance is zero (#31306 by @bdach)
Online Play
Add multiplayer auto-start setting for 10 seconds (#31381 by @peppy)
This was added due to feedback that the previous minimum of 30 seconds feels too long for most cases.
Fix star range display looking a bit bad when changing opacity (#31435 by @peppy)
Before | After |
---|---|
![]() |
![]() |
Add notifications for when friends go online or offline (#31444 by @smoogipoo)
Note that the friends overlay won't yet update in realtime with status changes – that's coming soon!
Smaller changes
- Remove status check for metadata update queue watching (ppy/osu-server-spectator#254 by @peppy)
- Avoid sending user presence updates when nothing has changed (ppy/osu-server-spectator#256 by @peppy)
- Ensure user state is never conveyed for "appear offline" users (ppy/osu-server-spectator#257 by @peppy)
- Always broadcast user presence to users' friends (ppy/osu-server-spectator#255 by @smoogipoo)
- Fix connection errors on self-friends (ppy/osu-server-spectator#260 by @smoogipoo)
- Always broadcast local user's state back to themselves (ppy/osu-server-spectator#261 by @smoogipoo)
Performance
- Fix stutter on intensive storyboards when entering break time with 100% background dim (#31506 by @peppy)
- This avoids piled-up overhead when entering break time. It's not great, but it is what we need for now to avoid weirdness.
Platform (Desktop)
Change the way extensions are handled to better support side-by-side osu!stable installs (#31438 by @Susko3)
With this change, you will now be able to select which game version to open files with on windows:
You can change your preferences at any time by right-clicking on a beatmap:
osu! and osu!(lazer) appear in the "Open with" context menu:
You can also choose the default app for each file type from system settings:
Add native macOS image loading support (ppy/osu-framework#6475 by @frenzibyte)
Improves texture loading time by a magnitude on macOS.
Fix replays not correctly pre-importing beatmap when arriving from a cold start (#31508 by @peppy)
Until now, if you double-clicked a replay while lazer wasn't open, if the beatmap isn't already locally available it would just show a fail message rather than attempting to download the beatmap for you.
Platform (Mobile)
Implement system-provided file selection display on iOS (ppy/osu-framework#6445 by @frenzibyte)
Display popup disclaimer about game state and performance on mobile platforms (#31403 by @frenzibyte)
Smaller changes
- Enable "Game Mode" on iOS (#31363 by @hrfarmer)
- Disable dropdown searching on mobile when no hardware keyboard is attached (ppy/osu-framework#6479 by @frenzibyte)
- Fix mobile release dialog obstructed by the software keyboard (#31414 by @frenzibyte)
- Fix error when opening files on startup on Android (#31492 by @Susko3)
Reliability
- Ensure intro files exist in storage during startup (#31418 by @peppy)
- Fix initial skin state being stored wrong to skin editor undo history (#30060 by @peppy)
Skinning
- Add support for
CursorTrailRotate
skin command (#31519 by @EVAST9919)- Preview: https://streamable.com/1g3bh8
Song Select
Make the score background yellow for friends on the leaderboard (#31240 by @Plextora)
Changes to absolute scrolling at song select (#31535 by @peppy)
This is a bit of a catch-all fix up while implementing this in the new carousel.
- Users can now choose a custom binding instead of right mouse if you wish
- Removes the setting. This can now be disabled by unbinding the key. Note that this changes the default to have it as right mouse button. This is an intentional change – I believe this functionality should be on by default as it's beneficial to most users.
Smaller changes
- Add basic framework for carousel displays (aka
BeatmapCarouselV2
) (#31...
2025.101.0
Switch scroll direction for beat snap key bindings (#31277 by @kongehund)
Populate metadata from ID3 tags when changing beatmap audio track in editor (#31307 by @bdach)
Pause playback when entering gameplay test from editor (#31303 by @bdach)
Speed up metronome in timing screen when pressing control key (#31342 by @minetoblend)
Changes the speed at which the metronome swings & the tick sample plays to 2x (or 3x when beat divisor is in triples mode) the speed when control is pressed, matching stable behavior.
Smaller changes
- Take custom bank name length into account when collapsing sample point indicators (#31352 by @bdach)
- Fix quick-deleting unselected slider path control point also deleting all selected control points (#31348 by @bdach)
- Fix slider end drag marker blocking open of control point piece context menus (#31350 by @bdach)
Framework
- FFmpeg build: Use macos-13 CI image (ppy/osu-framework#6473 by @FreezyLemon)
Gameplay (osu!)
Change relax mod hit leniency to be the same as in stable (#31287 by @stanriders)
Settings
- Fix volume adjust key repeat not working as expected (#31282 by @peppy)
- Ignore whitespace while 2FA authentication (#31362 by @CuNO3)
New Contributors
Full Changelog: 2024.1224.0...2025.101.0
2024.1224.1
Difficulty Calculation
- Refactor
TaikoDifficultyCalculator
and addDifficultStrain
attributes (#31191 by @Lawtrohux) - Increase
accscalingshift
and includecountok
in hit proportion (#31195 by @Lawtrohux) - Remove Conditional
SkillRating
nerf to Converts (#31196 by @Lawtrohux) - Simplify osu! high-bpm acute angle jumps bonus (#30902 by @stanriders)
- Implement
Reading
Skill into osu!taiko (#31208 by @Lawtrohux) - Change slider drop penalty to use actual number of difficult sliders, fix slider drop penalty being too lenient (#31055 by @stanriders)
- Use
lastAngle
when nerfing repeated angles on acute bonus (#31245 by @tsunyoku)
Editor
Change beat snap divisor adjust defaults to be Ctrl+Scroll instead of Ctrl+Shift+Scroll (#31147 by @peppy)
Smaller changes
Framework
- Fix
BindableList
methods crashing with non-IList
collections (ppy/osu-framework#6466 by @smoogipoo) - Move "global" scroll-adjusts-volume to a per-screen component-based implementation (#31146 by @peppy)
- Implement getting OpenGL iOS main framebuffer on SDL3 (ppy/osu-framework#6468 by @Susko3)
- Fix typo in main menu tip (#31224 by @frenzibyte)
- Use Accelerate framework for texture image processing on iOS and fix premultiplication issues (ppy/osu-framework#6470 by @frenzibyte)
- Shave allocation overheads in recent iOS texture loading code (ppy/osu-framework#6471 by @frenzibyte)
Gameplay
Skip the pause cooldown when in intro / break time (#31143 by @peppy)
Implement skinnable mod display (#30993 by @Tom94)
Gameplay (osu!)
Fix some hitcircle sprites missing in certain skins since last release (#31254 by @peppy)
Gameplay (osu!mania)
- Fix "spinner" conversion for mania-specific beatmaps (#30984 by @smoogipoo)
Main Menu
- Load seasonal backgrounds without requiring being logged in (#31198 by @peppy)
- No reason not to.
- Add christmas / seasonal mode (#31206 by @peppy)
- Slightly reduce background brightness at main menu when seasonal lighting is active (#31258 by @peppy)
- Fix adjusting volume using scroll wheel not working during intro (#31259 by @peppy)
Platform
Fix logo animation not rendering correctly on iOS (ppy/osu-resources#351 by @frenzibyte)
Save "featured artists" filter to user settings (#31238 by @frenzibyte)
Also sets it to always on for iOS in preparation for a larger scale release.
Smaller changes
- Update game structure with the returned iOS application delegates (#31152 by @frenzibyte)
- Fix hardware cursor showing on iPadOS when it shouldn't (#31226 by @frenzibyte)
Settings
Add ability to rename the current skin (#31220 by @normalid-awa)
In settings for now, very temporary.
Song Select
Implement ability to mark beatmap as played (#31138 by @bdach)
Would you believe it that this button that has been there for literal years never did anything? Also available via context menu.
Tournament
Hide !mp
commands from tournament streaming chat (#31150 by @peppy)
Full Changelog: 2024.1219.2...2024.1224.1