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

Fix repeat points not following slider snaking correctly #1934 (peppy)

Fix slider samples playing twice when additions are present #1932 (peppy)

Stop any playing preview when closing the direct overlay #1928 (peppy)

Minor preview fixes #1926 (Aergwyn)

Mute global track volume when a beatmap preview is playing #1924 (peppy)

Simplify some mouse/keyboard handling overrides #1920 (peppy)

Fix cursor not showing in visualtests #1919 (smoogipoo)

Use local functions #1917 (UselessToucan)

Cap ApproachRate in HardRock mod at 10 #1916 (aQaTL)

Individually bind OnJudgement from hitobjects in each Playfield #1915 (smoogipoo)

Move nested playfields to the base Playfield #1914 (smoogipoo)

Fix DrawableHitObject not binding nested hitobject events #1913 (smoogipoo)

Make judgements visually smaller #1912 (peppy)

Fix a few usages of AllJudged possibly not being correct #1910 (smoogipoo)

Expose “IsHit” on DrawableHitObject #1902 (Aergwyn)

Store handleability of input separate for keyboard and mouse #1901 (UselessToucan)

Slim down DrawableHitObject<T> #1899 (Aergwyn)

Remove unnecessary empty lines #1894 (Aergwyn)

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)

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)

Fix regression during merges #1779 (peppy)

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

Make Tooltip a VisibilityContainer instead of OverlayContainer #1335 (peppy)

Fix AutoSizeDuration not being cleared correctly in some cases #1334 (peppy)

Make CursorContainer not an OverlayContainer #1332 (smoogipoo)

Expose ManualInputManager for TestCases to use #1330 (smoogipoo)

Clean up tests #1329 (FreezyLemon)

Add IHandleGlobalInput to TooltipContainer #1324 (FreezyLemon)

Join null checks with assignment #1318 (UselessToucan)

Store handleability of input separate for keyboard and mouse #1317 (UselessToucan)

Don’t layout cells in GridContainer’s BDL #1323 (smoogipoo)

Allow global mouse bindings to work with OverlayContainers #1322 (smoogipoo)

Fix GridContainer not performing layout/loading children before Update #1321 (smoogipoo)

Fix precision not working for BindableInt/BindableLong #1320 (smoogipoo)

Update licence headers #1315 (peppy)

Expose a new method that is invoked after UpdateChildrenLife #1312 (smoogipoo)

Fix RepeatStepButton and RunAllSteps #1310 (LittleEndu)

Make precision transfer between bound bindables #1309 (smoogipoo)

Fix possible race condition where global Track/SampleManagers are unexpectedly null #1308 (peppy)

Populate filenames in dynamic compilation so errors make sense #1306 (peppy)

Fix cross-thread transform during dynamic compilation #1305 (peppy)

Revert “Merge pull request #1261 from default0/explicit-flow-order” #1303 (smoogipoo)

Fix incorrect null tooltip check #1302 (smoogipoo)

Don’t fail on UnbindBindings when there are no bindings #1301 (DrabWeb)

Use a non-broken opentk library #1300 (peppy)

More specific unbinding #1299 (DrabWeb)

Fix thread race condition in logger #1298 (peppy)

Explicit flow order #1261 (default0)

Add the ability to ignore a tooltip and get the below tooltip #1238 (ninjaprawn)

Update OpenTK nuget package #1293 (smoogipoo)

Fix TrackVirtual not respecting tempo adjustments #1289 (peppy)

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.

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