Thanks for following along! This is a tagged release (2022.628.0). For more information check out the osu! changelog page and dev blog.
Audio
Add audio feedback for rearranging list items (ppy/osu-resources#200 by @nekodex)
Smaller changes
Code Quality
- Change always-discarded-parameter inspection to hint (#18806 by @peppy)
- Ban usage of
ManualResetEventSlim.Wait()
without a timeout value (#18816 by @peppy) - Enable NRT on
IHasCustomTooltip
interface (ppy/osu-framework#5260 by @peppy) - Enable NRT and tidy up
BeatmapDifficultyCache
(#18820 by @peppy) - Refactor difficulty icons to not suck (#18819 by @peppy)
- Remove unused bindable retrieval flow in
BeatmapDifficultyCache
(#18832 by @peppy) - Add messages to all
InvalidOperationException
s (#18908 by @peppy)
Database
- Ensure
WorkingBeatmap
is always using a detached instance (#18833 by @peppy) - Fix second case of empty beatmaps being reported to sentry as errors (#18862 by @peppy)
- Also makes logging more relevant on other failures.
Editor
Support undo/redo for control points in the Editor (#18668 by @smoogipoo)
Bit of a temporary solution just to make things work.
Smaller changes
Framework
- Refactor
TextureStore
to improve nesting support (ppy/osu-framework#5240 by @frenzibyte) - Revert making
TextureLoaderStore
ctor internal for now (ppy/osu-framework#5266 by @bdach)
Gameplay (osu!)
Track the full size of the follow circle at all times (#18795 by @smoogipoo)
Localisation
- Disallow usage of
string.To{Upper,Lower}()
without explicit culture (ppy/osu-framework#5261 by @bdach) - Early-return on
GetDescription
/GetLocalisableDescription
if already string type (ppy/osu-framework#5263 by @frenzibyte) - Disallow usage of
string.To{Upper,Lower}()
without explicit culture (#18834 by @bdach) - Allow initial locale mappings to be added in a single call (ppy/osu-framework#5276 by @peppy)
- Mostly as a performance consideration.
Performance
Fix stuttering when adjusting beatmap offset with many beatmaps loaded (#18790 by @peppy)
Fix TripleBuffer
sleeping too long at high frame rates (ppy/osu-framework#5267 by @peppy)
Put simply, this improves cross-thread frame synchronisation between update and draw threads. Primarily this change was to fix draw fps being lower than expected when running at "Basically Unlimited", but it should improve perceived latency across the board, especially at lower frame rates. Note that per-core CPU will be slightly higher than before (~10-20%) but only if there's enough headroom. In other words, if your CPU was already struggling then it won't be any worse with this change.
Initialise OpenTabletDriver asynchronously (ppy/osu-framework#5269 by @peppy)
It takes a long time to start this up. Now it's done on another thread so the game can continue to get ready.
Smaller changes
- Use new static HashData methods for .NET 6+ targets (ppy/osu-framework#5256 by @turbedi)
- Avoid retriving every
CultureInfo
on startup (ppy/osu-framework#5270 by @peppy)
Platform
- Disable ugly green border when using hardware keyboard on Android (ppy/osu-framework#5273 by @Susko3)
Reliability
- Fix collection modified during
BlockAllOperations
if any subscriptions have been established (#18811 by @peppy)- Big oops, easy fix.
- Fix potential exception when calling
FinishTransforms
results in child changes (ppy/osu-framework#5257 by @peppy) - Validate transform values before queuing to drawable (ppy/osu-framework#5264 by @frenzibyte)
- Avoid div-by-zero in waveform resampling code (ppy/osu-framework#5271 by @peppy)
- Fix potential crash on
CloseAllOverlays
due to collection mutation (#18906 by @peppy)
Song Select
Add setting option to toggle between mod overlay hotkey styles (#18796 by @bdach)
Two styles are offered:
Sequential - pretty much what was already in place, i.e. the rows of the keyboard correspond to the first three columns, and each key in the row corresponds to each mod in the column. A small change here is that when the set of available mods changes so do the keybinds, and the keys are now fully index-based (relevant issue thread comment).
Classic - mostly matches stable 1:1 (more on this later). Mods use keybinds that are specific to them, i.e. Hard Rock will always be A no matter what. Notably, this also brings back multi mod cycling in a sense. This addresses #18417.
2022-06-21.15-34-17.mp4
Testing
- Remove room null assertion in
TestMultiplayerClient.ChangeState
to avoid assert (#18815 by @peppy) - Remove remaining
Room != null
checks inTestMultiplayerClient
where possible (#18817 by @peppy) - Add environment variable flag to cause until steps to never timeout (ppy/osu-framework#5262 by @peppy)
- Fix dangerous
File.Copy
causing intermittent realm migration test failures (#18831 by @peppy) - Fix test deadlock due to TPL threadpool saturation (#18849 by @peppy)
- Attempt to fix flaky
PlaylistOverlay
test (#18853 by @peppy)- Final attempt to fix https://github.com/ppy/osu/runs/7059576471?check_suite_focus=true before ignoring or adding a repeat count to it. No idea if it will work, is the only thing I can think of.
- Attempt to fix flaky
EditorNavigation
test (#18854 by @peppy) - Fix chat tests failing 1/10000 runs (#18865 by @peppy)
- Fix
TestStoryboardSkipOutro
occasionally failing due to strict timings (#18866 by @peppy) - Fix occasional failure in realm test proceedings due to incorrect
Debug.Assert
(#18871 by @peppy) - Centralise and harden editor-ready-for-use check (#18864 by @peppy)
- Add logging for various cases of
SongSelect.FinaliseSelection
being aborted (#18875 by @peppy) - Add various logging of global
WorkingBeatmap
state changes (#18872 by @peppy) - Wait for and dismiss notification in editor navigation test (#18910 by @bdach)
- Add logging around current channel changes and join requests (#18913 by @peppy)
- Increase leniences on
TestSceneSpectatorPlayback.TestWithSendFailure
(#18914 by @peppy) - Apply various refactorings to
TestSceneSliderSnaking
(#18915 by @peppy) - Fix more chat test failures (#18916 by @peppy)
Tooling
- Fix typo in auto-import ignore rules (#18826 by @frenzibyte)
- Update c# language version to 9 (ppy/osu-framework#5265 by @peppy)
- Pass online beatmap info into
DifficultyAttributes.FromDatabaseAttributes()
(#18863 by @smoogipoo) - Update translations (ppy/osu-resources#201 by @peppy)
- Update framework (#18917 by @peppy)
UI
Added subheadings to maintenance section in settings (#18802 by @Supersonicboss1)
Previously, the maintenance section was just one big block of buttons, seemingly ordered in no meaningful way.
This separates each 'category' into its own subheading to improve the general feel of that section, even though it's not generally used.
UX
Adjust menu cursor rotation to use a floating centre-point (#18841 by @peppy)
Been bugging me for a while. Adjusted snappiness of animations and fixed centre point being stuck at original mouse down location.
Fix clicks sometimes not being handled due to being caught incorrectly as double-clicks (ppy/osu-framework#5268 by @frenzibyte)
Regression in recent builds.
Smaller changes
- Add back online view container to chat overlay (#18804 by @Joehuu)
- The redesign didn't put back the online view container, causing chat to look like you're online until you try to type something.
Full Changelog: 2022.621.0...2022.628.0