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


dev changelog 20180120

published 21 Jan 2018

I promised more regular updated, but then the change of the year happened (and the rush to getting a new release of lazer out), but more importantly I ran into some issues with the tooling I made to create these posts.

After a long ordeal today, the tools are back in order and should be good going forward, so I’ll try and keep this coming at least once a week!

Excuse the length this time around; we’ve been busy.

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

A lot of fixes to replay playback #1923 (smoogipoo)

Replays can be dragged into the osu!lazer window again! Also fixes for replays playing unexpectedly at a large offset from their actual time values.

Improve game-wide cursor visualisation handling #1887 (smoogipoo)

The game cursor is now only used when actually targeting the playfield. This means when something like a skip button appears on top of the playfield, the menu cursor becomes visible again. Visually this still needs some tweaks (the playfield cursor trail stops a bit abruptly right now) but it’s a step in the right direciton.

Basic functionality completed for osu!catch

Basic autoplay (not yet humanlike) and completed gameplay have now been implemented! This marks all four game modes as complete. While there’s still much to be done, it’s a matter of tweaking from this point forward rather than reimplementing the rulesets themselves.

Sorry for the bad playing :P

  • Drop fruit when last in combo is not caught #1853 (peppy)
  • Fix catcher width and playfield scaling #1852 (peppy)
  • Improvements to osu!catch visuals #1848 (peppy)
  • Fixes to catching fruit #1889 (peppy)
  • Fix juice streams not propagating accent colours to nested objects #1886 (peppy)
  • Add osu!catch banana showers #1885 (peppy)
  • Add very basic osu!catch replay/autoplay handling #1884 (peppy)

Add setting to adjust background blur level during gameplay #1754 (ColdVolcano)

Pretty self-explanatory! Can be used in combination with background dim.

Add support for approach rate #1824 (Shawdooow)

Finally bringing map-specific difficulty to realisation. Next is overall difficulty, coming soon.

Add “Friends” tab to social browser #1740 (Aergwyn)

Implement osu! hidden mod #1782 (Aergwyn)

Make taiko use taiko-specific hitsounds #1760 (smoogipoo)

Currently using the same taiko-specific sample set as osu-stable. On a slightly related note, keep a look out for a brand new sample set for the default skin hitting later this week (osu! mode, not taiko).

Other Changes

v2018.113.0 (2018-01-12)

  • Remove volume reduction on song preview #1893 (Aergwyn)
  • Fix incorrect online conditional check in social browser logic #1883 (peppy)
  • Fix some mod interface discrepancies #1882 (peppy)
  • Fix background dim not being applied correctly #1881 (james58899)
  • Allow mouse wheel to change volume in overlays #1877 (smoogipoo)
  • Add support for loading storybaords from .osu files #1875 (james58899)
  • Rewrite the way in which HitObjects are scrolled in ScrollingPlayfields #1874 (smoogipoo)
  • Allow rulesets to create their own instantiation info #1873 (peppy)
  • Move mod implementations to individual files #1870 (peppy)
  • Add skip cutscene as “in game” keybinding #1869 (Aergwyn)
  • Minor standard hidden improvements #1865 (Aergwyn)
  • FIx incorrect licence header template #1864 (peppy)
  • Fix TestCaseManiaHitObjects exception on load #1862 (FreezyLemon)
  • Fix Leaderboard loading scores multiple times #1858 (Aergwyn)
  • Update licence headers #1857 (peppy)
  • Fix up replay playback speed slider having a different tooltip than the displayed number #1856 (smoogipoo)
  • Cleanup some possible CI errors #1855 (smoogipoo)
  • Fix storyboard variable parsing #1854 (james58899)
  • Implement osu!mania key mods #1847 (smoogipoo)
  • Cleanup osu!mania’s RulesetContainer and Beatmap conversion process #1845 (smoogipoo)
  • Fix storyboard file paths on Linux/macOS using incorrect path separators #1844 (james58899)
  • Fix slider follow circle instantly disappearing on slider ends #1840 (Aergwyn)
  • Fix TestCasePerformancePoints binding to global beatmap #1837 (peppy)
  • Don’t allow auto to fail #1836 (fangerm)
  • Change icon for audio settings #1832 (peppy)
  • Fix errors on import #1831 (peppy)
  • Check for supporter before displaying leaderboard loading animation #1829 (fangerm)
  • Extend TestCases for HitObjects #1828 (Aergwyn)
  • Fix song select dummy beatmap once and for all #1820 (peppy)
  • Don’t allow randomizer to select invisible maps #1819 (LittleEndu)
  • Create a LargeTextureStore for cached (but not atlased) global textures #1817 (peppy)
  • Permit BeatmapInfoWedge to display Unicode artist and title #1813 (ColdVolcano)
  • Remove search button on toolbar #1812 (peppy)
  • Clearly mark unimplemented mods and make them non-selectable #1811 (peppy)
  • QoL improvements to focused overlays #1807 (peppy)

v2017.1231.0 (2017-12-31)

  • Present results date and time in a more readable order #1816 (Aergwyn)
  • Fix result page from leaderboards not sorting hitcounts correctly #1810 (Aergwyn)
  • Add tooltip to country flags #1808 (Aergwyn)
  • Update framework with breaking flow changes reverted #1806 (smoogipoo)
  • Add Getting Started section to Readme and MonoDevelop IDE for Linux #1804 (Techno-coder)
  • Fix DrawableHitCircle accepting a base OsuHitObject parameter #1801 (smoogipoo)
  • Add tooltip text to supporter icon #1797 (jai-sharma)
  • Fix repeat points not scaling properly #1795 (Aergwyn)
  • Use a non-broken opentk library #1793 (peppy)
  • Use a more suiting (?) icon for import dialog #1789 (peppy)
  • Fix crash from being able to perform selection after entering play mode #1788 (peppy)
  • Fix crash on rapid selection at song select #1787 (FreezyLemon)
  • Select pause buttons only on mouse move #1785 (FreezyLemon)
  • Create a compilation guide #1784 (kiroma)
  • As it turns out, native directory separators are not supported #1780 (peppy)
  • Display the correct mod tooltips in mod selection #1669 (ninjaprawn)

v2017.1228.1 (2017-12-27)

v2017.1228.0 (2017-12-27)

  • Fix notification overlay layout and scheduled tasks being delayed #1777 (peppy)
  • Update opentk #1776 (smoogipoo)
  • Fix progress notifications not creating their completion notification early enough #1775 (peppy)
  • Fix random selection happening more than once on quick imports #1774 (peppy)
  • Fix taiko autoplay hitting drumroll ticks with the rims instead of centres #1773 (smoogipoo)
  • Fix beatmap wedge appearing with incorrect info on entering song select #1771 (peppy)
  • Fix crash when starting play mode with no beatmap #1770 (peppy)
  • Make TestCasePlayer more usable #1756 (peppy)
  • Add a bindable Enabled flag to NotificationManager #1746 (peppy)
  • Rate limit logged errors displayed as notifications #1745 (peppy)
  • Fix slider repeats playing sample twice #1737 (Shawdooow)

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

Nothing notable this time around, just a whole lot of minor improvements and bug fixes. Not a bad thing!

Other Changes

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

Alongside the changes below, a lot of effort has been going into optimising the site experience from a performance perspective, reducing load times and improving search results.

Paginate beatmap pack list and use the same sort on all types. #2248 (notbakaneko)

A bit of maintenance on the pack listing as the number of available packs continues to increase, including better default sorting, pagination and tidying up old download links to deprecated sites. We’ll be using this page more going forward as we do Mapper’s Guild releases and other special packs!

Add hype and nomination count to beatmapset search results #2203 (nekodex)

You can now sort pending beatmaps by nominations and hype counts to get a deeper insight into the status of beatmaps in the modding stage.

Better linkify for beatmapset discussions #2196 (nekodex)

Linking between issues in modding discussions is now supported, and will display in a more compact form.

You can now click the permalink link to copy to clipboard automatically.

Increase beatmapset discussion post character limit #2192 (nanaya)

Due to popular demand, we’ve increased the character limit per discussion post to 750 (previously 500).

Reduce menu delay and auto resize menu #2122 (notbakaneko)

The global menu should now behave a bit nicer. We know it can still feel a bit hidden and awkward, but are going to be addressing this in a larger design change coming later on. For now it should be a touch more usable.

As the number of localisations contributed continues to expand, the global menu was getting very tall. It now automatically resized based on the current displayed selection.

Add fancier tooltips in beatmap listing #2120 (LiquidPL)

Get difficulty star ratings on hover.

Allow beatmap discussions sorting by post or updated time #2113 (notbakaneko)

Another requested feature for the modding system.

Show correct star difficulty for converted beatmaps #2063 (notbakaneko)

Pretty self-explanatory, but star difficulty now shows correctly on the beatmap info pages.

Ensure that all suggestions/problems are resolved before allowing nomination #2062 (nekodex)

Just one extra automation to make life easier for beatmap nominators. Now, all pending issues are required to be resolved before further action can be taken, avoiding the need for manual checks and potential human error.

Limit loaded forum posts to 250 #2056 (nanaya)

To avoid huge memory consumption, posts are now unloaded when scrolling continuously in very long forum threads.

Other Changes


and so 2017 comes to an end!

published 31 Dec 2017

The text below is basically a transcript of the video. Choose your format!

Hey guys, peppy here.

I thought I’d take the last day of this year to take a moment to reflect on the state of osu! development, with focus on the lazer project.

Many of you will know of lazer as a project that started to manifest in mid-2015, teased with this video. At this point in development, lazer was in the early design stages and implementation had not started, but it was intended to be a revamp of the user interface to give it a new lease on life.

Development on this continued headed mostly by myself until late 2015. While plenty of progress was made, I also became increasingly aware of the amount of technical debt that had built up over the preceding 8 years. By the end of the year, I reached a breaking point and gathered the few developers who contributed substantial time into the development of osu! up until that point for an emergency meeting.

The outlook was grim on ever making the existing code base work how I wanted it to. I was also aiming to open-source the project as soon as possible, but there was just so much bad code that this did not seem like a viable prospect. I proposed a complete rewrite and sent out a plea for other developers to help with this effort.

Everyone involved seemed to agree with the direction, but unfortunately there were not many with the free time to help out in a big way. smoogipoo and Tom94, who some of you may be familiar with were the most active in the early days of the project and have been indispensable over the last couple of years.

We began laying out the framework for the rewrite in early 2016. This was done with quite a bit of pre-planning, to make sure we were all in agreement on the direction we wanted to take. We made a list of all the things we wanted osu! to be and set out to start work. This took form as a completely new project, available on github from day one, under the all-permissive MIT licence. This meant that anyone who wanted to watch on, help out, or use pieces of the code for their own projects could freely do so from day one.

And here we are, two years later. Jokes aside, we have come a long way. Progress has been slower than I hoped, so I’d like to touch on the various aspects which have contributed to this. Firstly, while there are other contributors, I am still the main developer of this project. As much as I’d love to spend my productive hours every day working on completing lazer, I have many other distractions including but not limited to:

  • Maintenance releases of osu!stable, including seasonal updates and bug fixes
  • Maintaining the infrastructure that runs osu!
  • Replying to every email I receive (I value direct communication with users)
  • Keeping track of other osu! development efforts, such as the new website (this is a topic for another day!)
  • Keeping the store running
  • Handling financials and accounting (as much as I dread this)
  • Keeping forward momentum on projects like Featured Artists and the wiki

Then we move on to the actual implementation of osu!lazer, where we are sparing no expense in areas of automated testing and scrutiny on code quality to ensure we don’t hit a dead-end down the track in a similar way to the existing stable release. This does not come without efficiency drawbacks, but we feel it is imperative to get things right this time around and create a code base which will serve us for many, many years forward.

We also made the decision to split the development effort into two distinct projects, separating out the game implementation from the framework which it runs on. In the process, not only have we been able to better document the low-level code, but have also created a 2D game engine which is amazingly flexible and capable of quickly iterating interfaces and animations in a way I have not seen done elsewhere. Everyone involved is very proud of what we have created so far.

Finally, we have developed lazer with cross-platform support in mind. While a downloadable installer is only available for windows, we are happy to have core developers — including myself — actively developing and testing on linux and macOS. We are also very close to having a working iOS branch with android not far behind. We are truly aiming for native cross-platform support, which doesn’t come without its overhead, but is something we value (because honestly, who wants to run osu! under wine?).

So where do we currently stand?

Lazer is in a very playable state, but missing some of the features which many users rely on. Therefore I am still hesitant to get more eyes on it just yet. We are so close, but here are some of the areas that may be an issue to those that are trying lazer:

  • Tablet support (especially with raw input enabled) is still not heavily tested.
  • Skin support is not yet present (but it is safe to say your existing skins will work early next year)
  • We have not iterated on the default skins in gameplay for high playability yet. They will improve over time.
  • Optimisations for lower end PCs have not yet been addressed.
  • There is no means of submitting scores (we are finishing everything else before considering compatibility with the existing ranking system)
  • Tens of other features that people rely on every day are not yet implemented

I can say that the team is insanely productive in recent weeks (as those that have been following along can likely attest to) and a lot of the missing pieces to the puzzle will quickly be filled in. If following the progress of lazer does interest you, I’d highly suggest following my blog, where I am now posting regular updates.

I did promise the release of lazer in 2017, even going as far as saying I’d quit if this didn’t happen. While lazer is by no means ready to take over and replace stable, it is available for download and will happily coexist with your existing osu! installation, automatically update multiple times a week and give you an insight into how fast we are making improvements. I would highly recommend downloading and giving it a try, then leaving it installed to check back on once in a while!

While continuously listening to and taking feedback on board, I have always strived to sail osu! in a direction that I can agree with. I’m glad to say that this is still the case. I truly hope you guys can take a moment to appreciate just how big of an ecosystem osu! is compared to other games and just how many facets need to be concurrently managed and maintained to keep everyone happy. For a team as small as we are, this is not an easy task, so please be kind to us when we fail to meet your expectations (and definitely don’t hesitate to bug me or other members of the team when this happens).

I’d like to end this by thanking everyone for making 2017 another very enjoyable year for osu!.

Thanks to everyone involved in the lazer project, including all the people that have contributed to it in some way. Thanks to everyone on the various osu! teams for keeping things running smoothly. Thanks to all the users out there — current and past — for mapping and playing the crap out of this game.

Here’s to many more years of osu!.


dev changelog 20171226

published 26 Dec 2017

I’ve said it elsewhere, but Merry Christmas everyone! We’re working hard to end this year on a good note and that does involve getting a relatively presentable build of lazer out to the wider public. A few days left so we are hard at work polishing what we have! You can already start following our progress starting with today’s release (although do note that repeat sliders are a bit bugged; will be fixed tomorrow).

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

Quieter notification overlay #1751 (peppy)

The notification overlay used to pop out every time a new notification arrived. Now it has a badge showing pending (unread) notifications instead, meaning the end user is no longer rudely interrupted.

Add a dialog offering to import beatmaps from stable #1749 (peppy)

A lot of people couldn’t seem to find the button in settings to import their beatmaps, so I went one step further to make importing your existing library more accessible. This dialog will appear at song select if you have no beatmaps loaded (and an osu-stable installation is found on your PC).

Let NotificationOverlay move the background #1735 (Aergwyn)

Until now, only the settings overlay has been able to push the background game content behind it. This always felt awkward, but will no more! Both overlays are now equal in their pushing abilities.

Other Changes

  • Yet another rework of sound handling in taiko #1733 (smoogipoo)
  • Fix notification read lamp and notification count #1759 (peppy)
  • Trigger null-selection in SongSelect when the last beatmap is hidden #1753 (FreezyLemon)
  • Fix null reference in release builds #1752 (peppy)
  • Fix many instances of non-osu-prefixed text classes being used #1750 (peppy)
  • Add word wrapping support for popup dialog text #1748 (peppy)
  • Fix supporter icon appearing incorrectly in user profile header #1747 (Aergwyn)
  • Add special logic to song select to avoid obvious clipping when notifications are displayed #1742 (peppy)
  • Hide unnecessary lines on empty BeatmapInfoWedge #1720 (Aergwyn)

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

Nothing really note-worthy in framework this time, but some good solid changes as follow:

Add keyboard controls to TestBrowser #1287 (peppy)

You can now use Ctrl-F to search for a specific visual test, Ctrl-H to hide the test listing and Ctrl+R to re-run tests. The little things matter!

Other Changes

  • Log exception content as Important rather than error #1288 (peppy)
  • Immediately unbind all bindings to OnLoadComplete after load is complete #1285 (peppy)
  • Add NUnit Itemgroup to csproj #1282 (Aergwyn)
  • Fix dynamic compilation not working when protected internals are overridden #1281 (smoogipoo)
  • Avoid deadlocks caused by audio thread blocking on queued items #1280 (peppy)

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

Use cached score ranks for display #2069 (notbakaneko)

We recently discovered a long-standing bug in the profile rank counts (SS/S/A) so rewrote the maintenance script on the new web system. There are a few reports of incorrect counts still, so consider this an ongoing effort.

This also improves performance on the new web profile pages, which were previously dynamically calculating these counts every page load(!).

Download page #2042 (LiquidPL)

A new less cringe download page is now availble on the new web. One step closer to pushing it live!

Ongoing work on the modding discussions system

We are listening to your feedback on the dev discord!

This week we will be addressing these two issues as top priority, as they seem to affect the most people. Make your voice heard on the discord. We are especially interested in hearing from mappers (but also modders, of course).

Other Changes