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


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