dev changelog 20180306

published 07 Mar 2018

Hi guys. Back at you with updates since the last post, split into respective projects:

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

A whole lot of work has been done, focusing on beatmap conversion, compatibility, performance and bug fixes. A lot more maps should now play correctly and performance should be 2-10x higher than what it was. Also, basic skin support is in!

Rewrite replay frame construction/handling and accommodate for conversion #2137 (smoogipoo)

Until now, we were relying on a global replay frame across all rulesets, to allow for importing replays from existing .osr files. While this had its place, we definitely want a more generic replay frame structure going forward. This change separated out the legacy frames from a newer frame format which can be designated by the ruleset itself.

Implement hitobject selection overlays in the editor #2095 (smoogipoo)

You can now see outlines surrounding the selected objects. Another step forward for the editor!

Reduce parallax effect during gameplay #2134 (peppy)

We heard your feedback and have reduced the parallax effect on gameplay screens. This should mean you can still enjoy distraction-free gameplay without completely disabling parallax.

Implement skin support for (most) hitsounds and (osu!) hitcircles #2105 (peppy)

After getting a lot of framework in place, we can finally import skins! Drag-and-drop an .osk into the window and you should now see your skin under the new dropdown. Note that this is not the final method of selecting skins.

For now only a few skinned elements are implemented as a trial of the implementation. Going forward we will gradually be adding further elements. Parsing of skin.ini is the next priority.

Other Changes

  • Fix taiko drumrolls potentially getting incorrect judgements #2171 (smoogipoo)
  • Add legacy timing offsets #2166 (peppy)
  • Fix skin file path lookup performance #2164 (peppy)
  • Fix hard crash due to spinner spin requirement being zero #2163 (peppy)
  • Add rewind support for storyboards #2162 (peppy)
  • Fix parallax container during rewinds #2161 (peppy)
  • Fix linear perfect curves not using the linear curve approximator #2155 (smoogipoo)
  • Only use osu.Desktop to determine test assemblies #2154 (smoogipoo)
  • Implement an interface for beatmap conversion tests #2153 (smoogipoo)
  • Fix HR not properly applying to sliders #2146 (smoogipoo)
  • Fix FastRandom using uint instead of int for NextDouble() #2144 (smoogipoo)
  • Don’t use BufferedContainer for OsuLogo #2143 (peppy)
  • Fix legacy catch replay input not being scaled to the playfield’s width #2142 (smoogipoo)
  • Fix importing some (broken) beatmaps looping infinitely #2136 (peppy)
  • Improve clock handling logic for gameplay #2126 (peppy)
  • Fix slider heads fading out too late #2138 (peppy)
  • Fix depth of already-visible panels not being updated after a sorting change #2135 (peppy)
  • Ensure selection is finalised before exiting song select #2132 (peppy)
  • Fix incorrect exit block conditional #2131 (peppy)
  • Fix bindings not being unbound on ModSelect #2129 (peppy)
  • Fix song select iteration when all panels are filtered #2127 (peppy)
  • Improve vector conditional #2123 (peppy)
  • Remove null channels from SkinnableSound playable channels #2118 (peppy)
  • Rely less on every-frame transform helpers #2117 (peppy)
  • Fix sliders never getting a correct lifetime set #2116 (peppy)
  • Give DrawableSlider an accurate position and size #2107 (smoogipoo)
  • Reset mouse confine mode on input setting reset hotkey #2099 (peppy)
  • Fix legacy Taiko replays having reversed inputs #2098 (tgi74)
  • Use Multicore JIT #1966 (UselessToucan)
  • Fix migration file case #2112 (VPeruS)
  • Implement skin import, database and storage #2103 (peppy)
  • Update framework #2101 (peppy)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Set display colour depth to correct value when switching to fullscreen #1428 (LastExceed)

Quite a few users were reporting full screen mode switching their display colours to 256 colour (definitely less than how many we need!). Should now be resolved.

Improve performance of SetGlobalProperty #1414 (peppy)

Tackling performance at the lowest level, I made some changes to the way shader properties were assigned to reduce overhead. 5-10% improvement in the best cases.

Fix transforms on RemoveCompletedTransforms drawables applying forever #1413 (peppy)

There was a regression when rewind support was added causing old (already-completed) transforms to continue updating indefinitely. This saw performance degrade over the length of a beatmap. Now resolved.

Avoid updates / generating draw nodes for valid BufferedContainers #1416 (peppy)

Buffered containers are our method of drawing to textures. We use them regularly to cache complex drawable structures and reduce overhead. Until this change, the caching was only improving performance in very minimal ways (mostly fill rate). Now, the cached state stops all child updates and expensive draw thread updates.

Other Changes

  • Move CursorContainer’s Add to BDL #1442 (peppy)
  • Load log entries asynchoronously #1436 (peppy)
  • Allow graceful failure when dynamic compile fails in TestCase constructor #1435 (peppy)
  • Avoid including directories with many files in dynamic compile watch list #1434 (peppy)
  • Fix null ref regression #1430 (peppy)
  • Inline out variables #1425 (UselessToucan)
  • Cleanups to clock handling #1423 (peppy)
  • Fix transforms of same type/time not being removed correctly #1427 (peppy)
  • Don’t unnecessarily update depth if depth is already set correctly #1426 (peppy)
  • Ensure bindings unbind in both directions when explicit UnbindBindings is called #1424 (peppy)
  • Catch exceptions thrown during dynamic compilation runtime #1422 (peppy)
  • Use same argument order in all transformable conditionals #1421 (peppy)
  • Add logging when threads fail to join in time #1419 (peppy)
  • Fix VisualTests crashing on first startup due to incorrect configuration #1415 (peppy)
  • Don’t track all used objects #1412 (peppy)
  • Reduce dependence on zero-duration transforms #1411 (peppy)
  • Always confine cursor when left mouse button is pressed #1408 (UselessToucan)
  • Add a LoadAsyncComplete method #1410 (peppy)
  • Allow resource managers to accept and return null #1405 (peppy)

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

User monthly plays and replays watched charts #2608 (nanaya)

Adding back missing profile pieces. Graph design is going to be updated to feel a bit better, consider this temporary!

Add dedicated search box for mobile layout #2597 (nekodex)

It was noted that finding the search option on small screens was near impossible. We’ve adding an always-visible search box to solve this one.

Show post count on user profile page #2578 (notbakaneko)

Improved page title #2531 (nanaya)

Page content-related descriptive text is now prioritised at the start of page titles, so you can more easily find tabs.

Threaded forum search #2332 (notbakaneko)

Forum search have received some upgrades. Go test it out here.

Other Changes


dev changelog 20180222

published 23 Feb 2018

Having reached out on twitter for feedback and getting a huge response, a large focus was placed on fixing lingering issues in osu-web this week. Make sure to read to the end, as osu-web definitely MVP this week.

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

Surprisingly few things to comment on this week. I’ve been focused on the infrastructure required for skinning, which has involved cleaning up and preparing many other subsystems. smoogipoo has been working on the underlying pieces to bring the editor’s hitobject selection and mutation up to speed.

We’ve also been working on some lingering threading issues causing CI to occasionally fail. Solid under-the-hood progress.

Fix replay import #2087 (peppy)

While lazer did support drag-drop replay import, it was unknowingly broken for a good period of time. Now works, again.

Abstract away model-filemodel and add mutable stores #2070 (peppy)

This is the second of the large infrastructure changes required for skin imports (first was touched on last week). A simple way to explain this would be that we can now add new archive storage types to the game (like Beatmap or Skin) and have them use the central File store. This allows for de-duping and databasing at a global level. If a skin and beatmap were to reference the same file, it will only be stored on disk once, saving space.

Other Changes

  • Update framework #2101 (peppy)
  • Reword instances of “login” to “sign in” #2100 (Joehuu)
  • Fix stacking not working with sliders #2097 (smoogipoo)
  • Fix some common CI unit test failure causes #2096 (peppy)
  • Expose SliderBody’s snaking and border colour #2094 (smoogipoo)
  • Combine border radiuses of selection and capture boxes #2092 (smoogipoo)
  • Remove osu! playfield scale from the editor #2091 (smoogipoo)
  • Fix editor layers not respecting playfield aspect ratios + scales #2090 (smoogipoo)
  • Move manual OsuPlayfield aspect adjustment into the RulesetContainer method #2088 (smoogipoo)
  • Improve testability of API #2075 (peppy)
  • Collapse visual settings by default in player #2074 (peppy)
  • Give storyboards a BeatmapInfo to reduce weird method calls #2073 (peppy)
  • Update framework (and fix left/right arrow control of textboxes) #2071 (peppy)
  • Update framework with GameThread fixes #2066 (smoogipoo)
  • Fix drag handling in line with framework changes #2064 (peppy)
  • Rewrite editor hitobject selections #2058 (smoogipoo)
  • Restore nunit ruleset + waveform test cases #2034 (smoogipoo)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Focus was on fixing some CI issues, such as web requests timing out at the remote end in web tests. Nothing really extraordinary here.

Other Changes

  • Fix Bindable’s GetBoundCopy using MemberwiseClone #1407 (peppy)
  • Remove WebRequest workaround for mono bug which has since been resolved #1406 (peppy)
  • Allow resource managers to accept and return null #1405 (peppy)
  • Revert retry test case changes #1404 (peppy)
  • Avoid test cases failing on directory cleanup exception #1403 (peppy)
  • Add a timeout for thread exiting #1402 (peppy)
  • Allow web request tests to re-run on failure #1401 (peppy)
  • Fix dynamically compiled test cases disappearing from old assembly #1400 (FreezyLemon)
  • Fix elements being out of order in PropertyDisplay #1398 (smoogipoo)
  • Fix backspace not working in some textboxes #1396 (peppy)
  • Fix PropertyDisplay ignoring protected and internal properties #1395 (smoogipoo)
  • Various improvements to textbox input #1394 (smoogipoo)
  • Fix thread race in path segment construction #1392 (smoogipoo)
  • Fix GameThread exits not running on the encapsulated thread #1391 (smoogipoo)
  • Fix regression in frame statistics display thread names #1390 (peppy)
  • Make Path receive input only on the path bounds #1383 (smoogipoo)

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

You may have noticed that we have begun pushing people to try out the new site more recently. There’s now a new prominent banner on every page on the old site which has a newer counterpart, offering you quick access to switch across.

I also upgraded the server running the new site to a more production-ready server. There were previously some slowdowns during peak usage. This should no longer be the case!

Show genre and language and fix styles #2386 (nanaya)

Bigger stat icon and fixed spacings #2381 (nanaya)

These icons are now large enough to actually be recognisable and useful.

Add ‘show more’ for recent activity on user profiles #2379 (nekodex)

Not sure why this wasn’t a thing from the start, but you can now see more than the last six things a user did (up to a month, like the old site).

Less whitespace #2375 (nanaya)

We’ve listened to your feedback and adjusted paddings in multiple areas:

Best performance is more compressed

Beatmap panels on the listing are less tall than before (they will eventually get even shorter, but that’s in a future design iteration)

Don’t include results that didn’t match the username matchers #2373 (notbakaneko)

Searching for users no longer returns results that make you “wtf”. Although… brownpeppy? really?

Increase per-page topics listing #2362 (nanaya)

Forum now shows 30 topics per page, up from 15.

Scoreboard friend/self highlighting #2345 (nekodex)

Discussion navigation history #2270 (nanaya)

Finally you can link people to the exact view you are looking at in beatmap discussions. This includes the filters you have applied, such as difficulty, game mode and resolved status.

Different icon for unread topic #2449 (nanaya)

We added back icons to better differentiate read status of forum topics. The colours we were using were not so colour-blind friendly, it would seem!

Allow setting default playmode in profile page #2448 (nanaya)

You can now see which game mode a user has set as their default, denoted by a star next to it.

You can also change your own default. On the old site, this used to be an implicit action whenever you switched tabs while looking at your own profile, which was confusing to some. Now, you must click the new button to change your own default. Hopefully this should make a bit more sense and avoid confusion.

Recommended difficulty is back, with some huge performance improvements this time around. Converted toggle also available. Woo!

Country flags site-wide now link to country rankings. Eventually we hope to improve the country landing page with more than just rankings, but this’ll do for now.

Profile tooltips #2422 (nekodex)

Explaining what user details actually are.

Add a supporter promo to changelogs #2412 (LiquidPL)

We don’t really advertise supporter in many places, but I like to have a message on the changelogs when users update their osu! builds. If they like something that has been added, they may feel the urge to throw us some bucks.

This was already present on the old site.

Add experience bar to user profiles #2409 (LiquidPL)

Hover the level badge to see your experience bar!

Other Changes


dev changelog 20180213

published 15 Feb 2018

Hello and happy chocolate day. Back at you with updates since the last post, albeit two days delayed from changelog generation. Hopefully my brief commentary is worth the wait!

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

Improvements to EF context handling and BeatmapManager #2054 (peppy)

This was a big refactor of how the beatmap import and databasing process was structured. It was one of the largest thorns in lazer’s otherwise pristine code base, and I finally took the initiative to fix it up before moving on to skin import support.

While there’s nothing to show from this, it fixed a lot of scenarios where imports could result in lost files or incorrect state of beatmaps, while also improving readability of database usage game-wide. It resolved all the problems mentioned in this issue, which has been around since October 2017. Phew.

Fix ApproachRate not inheriting OverallDifficulty when it is undefined #2049 (sunghwan2789)

It turns out that very old beatmaps (before we separated out AR as a difficulty setting) would fallback to their OD setting. This wasn’t correctly being respected, resulting in older maps behaving weirdly. All fixed!

Unify hit windows between all rulesets #2035 (smoogipoo)

Until now, each ruleset had its own definition of hitwindows (which in some cases was completely broken!). We now use a unified implementation, which gives much more predictable results. They are currently based on mania windows, which makes things every so slightly more lenient than on stable. We’ll tweak this as necessary.

Improve the visual appearance of repeat points #1960 (ColdVolcano)

They are now arrows (and snake a lot better). Goodbye eercast logo, you served us well. Note that this is not the final design.

Other Changes

  • Fix drag handling in line with framework changes #2064 (peppy)
  • Add confirmation dialog to Delete in beatmap context menu #2060 (swoolcock)
  • Fade slider ticks with hidden mod #2057 (Aergwyn)
  • Fix pressing escape quickly unexpectedly exiting gameplay #2044 (UselessToucan)
  • Fix a few code styling issues #2042 (smoogipoo)
  • Update user object to match new standardised api #2039 (peppy)
  • Fix non-visual tests not cleaning up previous executions #2038 (peppy)
  • Fix visual settings checkboxes playing sounds in bindable binding #2037 (peppy)
  • Make slider tails not play hitsounds #2036 (smoogipoo)
  • Always put attributes on a separate line to their target #2031 (peppy)
  • Make sure the import tests exit their hosts #2030 (smoogipoo)
  • Use bindable precision for OsuSliderBar’s tooltip value #2029 (smoogipoo)
  • Add support for country rank #2027 (tgi74)
  • Fix revert-to-default hiding visual settings at beatmap load #2026 (swoolcock)
  • Fix skip button not receiving screen-wide input #2023 (peppy)
  • Make NUnit tests run locally again #2021 (smoogipoo)
  • Raw input improvements #2020 (peppy)
  • Stopping non-url text from being hyperlinks #2017 (Imnooby)
  • Update in-line with framework changes #2012 (smoogipoo)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Combine drag and click lenience into a single variable #1389 (peppy)

Until now, it was possible to trigger a drag and a click event in the same mouse down/up combination. Now, the leniences for dragging and clicking are combined. This also resolves slider bars being hard to drag in settings (where you’d accidentally trigger a vertical scroll instead).

Debounce config saves #1388 (peppy)

We pushed out a build that completely destroyed performance when dragging slider bars in settings. This fixed it.

Raw input improvements #1371 (peppy)

Tablet support is here! It mostly behaves as it did on stable for the moment, but I do have big plans on improving the way tablets can be configured to make the experience much less painful (and make the wacom control panel area settings obsolete).

Other Changes

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

As I mentioned on twitter, we’re approaching the point where we are going to push the new web live. We’ve received some great feedback since then and are working to apply all the changes necessary to make this as painless of an experience as possible! More updates to follow on that.

Better spoiler arrows #2340 (nanaya)

Spoiler boxes on the forums weirdly pointed up and down.

They now point right then down, as expected.

Add support for wiki page tags #2331 (nanaya)

Wiki articles can now have tags added, which can be used to search for articles by words not necessarily contained by the article (like OWC2017 for “osu! world cup 2017” etc.)

Improve display of time fields in modding discussions #2307 (nanaya)

All time fields on the modding system are now using proper time classes, so you will see them in your local timezone.

Other Changes


dev changelog 20180206

published 06 Feb 2018

Trying to keep these coming once a week is pretty tough, but here we are (only a couple of days late!). Huge appreciation as always to those who contributed this time around.

As a side note: full tablet support is only days away from being deployed live to lazer, so for those of you that have been holding off due to not being able to play with your tablet, make sure to check back soon!

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

Implement Catmull-Rom curve approximator #2003 (smoogipoo)

Everyone’s (least) favourite slider curve type is now supported by lazer. Play through more of the old classic beatmaps that you love so much, without the sliders taking on smooth curved shapes.

Update design of “revert to default” button #2011 (peppy)



Store and show SSPlus and SPlus statistics on user page #2004 (tgi74)

Just like the new site, you can now see hidden/flashlight SS/S counts separate from normal ones

Fix osu!catch never reaching the result screen #1999 (peppy)

You can now complete catch beatmaps. Oops.

Add the ability to duck volume when the game is inactive #1997 (peppy)

While the transitions are not yet as smooth as you’d expect, you now have complete control over how much sound osu! is going to generate when it’s not the active window.

Update taiko hitsounds (courtesey of cYsmix) #1994 (peppy)

cYsmix has done it again, providing a new default sound set that does wonders to give osu!taiko a fresh feel.

Ability to mute the game using F4 (or button on volume control) #1921 (aQaTL)

Simple yet effective. Design is obviously not final (get a preview of that here).

Add URL handling to chat #1667 (FreezyLemon)

This has been in and out of the release builds as I had it manually cherry-picked for releases (felt it was pretty important), but is now here to stay! You can now freely open up web links in chat. In the cases there’s an in-game view for what you are looking at, it’ll prefer that over opening the site. The number of in-game overlays will expand as time goes by.

Implement a gameplay visual settings overlay #1879 (UselessToucan)

You can now adjust settings before entering gameplay (at the “loading” screen). For now a preview is not available, but this will be added in the future.

Other Changes

  • Fix PlayerSettingsOverlay not able to reappear after being hidden #2005 (tgi74)
  • Fix osu!catch autoplay missing bananas when running above 1x playback speed #2001 (peppy)
  • Fix clock not incrementing beyond last frame of replay #2000 (peppy)
  • Fix IsMaskedAway not being up-to-date when fastfowarding replays #1998 (smoogipoo)
  • Make slider tails count towards the slider’s judgement #1993 (smoogipoo)
  • Rename “InputManager” to “Container” where keybindings are involved #1992 (smoogipoo)
  • Update framework #1991 (peppy)
  • Fix incorrect case on migration file #1986 (peppy)
  • Add JetBrains.Annotations NuGet package #1984 (FreezyLemon)
  • Remember mod selection when re-entering song select #1983 (peppy)
  • Fix osu star rating calculation #1981 (thomastanck)
  • Fix taiko and mania missing when fast-forwarding replays #1980 (smoogipoo)
  • Fix slider ticks appearing too late #1977 (Aergwyn)
  • Fixed holding retry hotkey at end of map causing hard crash #1944 (ThePyrotechnic)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Code quality, performance and bug fixes. Nothing exceptional to see here!

  • Fix up recent IsMaskedAway regressions #1364 (smoogipoo)
  • Use a concurrent dictionary for custom transforms to avoid incorrect thread access #1361 (peppy)
  • Fix FrameworkActionContainer input ordering #1360 (smoogipoo)
  • Use AlmostEquals for CircularContainer test cases #1358 (peppy)
  • Make better use of generics in DependencyContainer #1356 (jorolf)
  • Add a fill property to CircularProgress #1355 (jorolf)
  • Add JetBrains.Annotations NuGet package #1354 (FreezyLemon)
  • Make sure that IsMaskedAway is always up-to-date #1353 (smoogipoo)
  • Stop ConfigManager from setting a default when calling GetOriginalBindable #1352 (peppy)
  • Make AutoSize transform non-rewindable #1345 (smoogipoo)
  • Store only drawables up to the one that handled mouse down in mouseDownInputQueue #1337 (UselessToucan)

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

Elasticsearch 6 support #2262 (notbakaneko)

With some backend redesign, we were finally able to migrate off an ancient Elasticsearch 1.x instance to the latest version. We still have some improvements to make to the way we are interacting with elasticsearch, but the old site needs to die before this can happen. Needless to say, this is a step in the right direction for improving search quality game-wide.

Add playtime to user profiles #2290 (LiquidPL)

Due to popular request, play time is back on profiles. This time precise to the second!

Beatmap scoreboard revamp #2292 (nekodex)

After reading through all the feedback you guys threw at us regarding leaderboard design, flyte got to work trying to make sure he could please everyone. The design is now implemented and live at the new site and has so far received some very positive feedback. Glad you guys like it!

Other Changes


dev changelog 20180128

published 28 Jan 2018

Another week of solid progress! Hoped to get this post up on Friday but alas, things got busy. As a side-note the new t-shirt designs will be available on the store today, so look out for if you are interested in new wearable swag!

osu The osu!lazer project. The future of the osu! client. Download preview releases from here and follow along!

Implement ruleset-specific config managers and attach them to the global OnScreenDisplay #1929 (smoogipoo)

Individual rulesets can now have configuration settings (which are stored permanently to the database). The first use-case for this is osu!mania’s scroll speed setting, which is now remembered per key variant!

Add new default hitsounds (thanks to cYsmix) #1975 (peppy)

cYsmix has been hard at work on creating a fresh set of hitsounds to become the lazer defaults. Aiming for a more punchy set which are both nice to the ears but also give instant feedback - something a lot of higher level players require from hitsounds.

Here’s two examples, but I highly recommend you go check your favourite hitsounded beatmaps to see how they sound (and provide feedback if possible!):

Add more human-like catch autoplay support #1952 (peppy)

Overall difficulty #1938 (Shawdooow)

Following variable approach rate, overall difficulty has now been implemented. For the time being, it affects judgement windows.

Other Changes

  • Make MusicController draggable again #1973 (UselessToucan)
  • Make mania play the next note’s sounds if no note is hit #1972 (smoogipoo)
  • Fix settings button #1965 (Aergwyn)
  • Fix storyboard using incorrect path separator #1959 (james58899)
  • Clean up off-by-one offsets from repeat-related properties #1957 (smoogipoo)
  • Allow user choice of the quick retry hotkey #1956 (peppy)
  • Update license year #1955 (fangerm)
  • Fix RepeatPoint animations #1953 (Aergwyn)
  • Use obtained value for displayed name. #1950 (ThePyrotechnic)
  • Disable TestCaseWaveform #1949 (smoogipoo)
  • Don’t show error messages when a download is user-cancelled #1948 (peppy)
  • Keep downloads active until their associated import operation finishes #1947 (peppy)
  • Continue showing progress bar on direct panels when importing #1946 (peppy)
  • Update usage of DI in-line with framework changes #1945 (smoogipoo)
  • Allow re-downloading of beatmaps pending deletion in osu!direct #1939 (Aergwyn)
  • Ensure previews stop playing when they are removed from the draw hierarchy #1937 (peppy)
  • Split the playfield columns and change the key number by mod #1908 (andy840119)
  • Do not assign hudOverlay’s and breakOverlay’s members in Player class #1898 (UselessToucan)

osu-framework The game framework behind osu!lazer. Written from scratch with osu! in mind, but very extensible.

Improvements to audio subsytem disposal logic #1340 (peppy)

Allows for better handling of nested audio components, making stopping osu!direct panel tracks (and muting global sound at the same time) much cleaner than previously possible.

Add a way to generate tracked settings from ConfigManager #1339 (smoogipoo)

Allows for the osu! game to more easily extract on-screen display parameters from configuration stores directly.

Other Changes

  • Stop ConfigManager from setting a default when calling GetOriginalBindable #1352 (peppy)
  • Bindable parsing fixes #1351 (smoogipoo)
  • Make ini based config manager its own class #1349 (peppy)
  • Stop bindings from interrupting each other when in unique mode #1344 (ThePyrotechnic)
  • Allow dependency injection caching by specific type #1343 (smoogipoo)
  • Make Tooltip a VisibilityContainer instead of OverlayContainer #1335 (peppy)
  • Fix DllResourceStore not being able to handle hyphens in file path #1327 (FreezyLemon)
  • Allow setting the filtering mode of textures loaded by TextureStore #1292 (jorolf)

osu-web The new web front-end. Already live but hasn’t yet replaced the old site, pending feature parity.

Nomination tweaks #2276 (nekodex)

Based on bug reports and feedback, we resolved some issues involving the nomination limit. Speaking of which, the daily limit has also been raised from 2 to 10 after it was determined that two is now too low (as “first” nominations are counted where previously only “second” or “qualifying” nominations were counted).

Other Changes