Skip to content
CAI
Software that uses CAICheck a score

ppy/osu

44.2

Weak · 5 August 2026

334.7k

lines of production code

C#

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is a cross-platform rhythm game client that manages gameplay across four distinct rulesets (osu!, Taiko, Catch the Beat, and Mania) with significant overhauls to scoring, mechanics, and visual presentation. The system provides comprehensive desktop and mobile interfaces, featuring real-time online connectivity for social interactions, multiplayer rooms, and live leaderboards. It also includes robust local data management for beatmaps, user settings, and replay statistics, supported by a modernized UI framework and extensive localization.

How it got here

2016–2017 — Modernization and architecture overhaul

87 changes.

This period focused on a comprehensive modernization of the codebase, introducing a new Realm-based configuration system and a robust database infrastructure. The team significantly refactored core gameplay, UI, and online services, while also overhauling the multiplayer and chat systems to support a new hub-based architecture.

2018–2020 — UI modernization and mobile porting

96 changes.

This period focused on a comprehensive UI overhaul, introducing a modernized design language across settings, overlays, and the editor. Simultaneously, the codebase expanded to support iOS and Android platforms, integrating platform-specific features like file imports and update notifications.

2021–2025 — Online play and matchmaking overhaul

77 changes.

This period focused on a comprehensive overhaul of the online play and matchmaking systems, introducing structured room states, dedicated matchmaking flows, and a new multiplayer spectator architecture. The work also significantly expanded the UI with new card-based layouts, a redesigned wiki and chat overlays, and extensive localisation support.

2026 — Ranked Play mode implementation

13 changes.

This period focused on the end-to-end implementation of the new Ranked Play multiplayer mode, including backend data models, matchmaking requests, and full screen/UI implementations for card selection and gameplay. Concurrently, the dashboard was enhanced with real-time online user lists and search functionality, while the desktop client added macOS installation verification and local score broadcasting via WebSocket.

Features

Add Android test apps for all game rulesets

New Android test application projects have been added for each of the five game rulesets (Catch, Mania, Osu, Taiko, and the main test suite). Each new project includes an AndroidManifest.xml and a MainActivity.cs that configures the Android activity with Exported = true and targets SDK 34, enabling the test browser to run on Android devices.

(repo-wide) · high confidence

Add CONTRIBUTING.md and .git-blame-ignore-revs

The repository now includes a comprehensive CONTRIBUTING.md file that outlines the guidelines for reporting bugs, providing feedback, and submitting pull requests, including specific instructions about AI usage and testing expectations. Additionally, a .git-blame-ignore-revs file has been added to exclude specific commits from git blame output, normalizing line endings and other non-code changes.

(repo-wide) · high confidence

Add Clicks Per Second (CPS) HUD counter

A new Clicks Per Second counter has been added to the game's HUD, displaying the number of clicks per second during gameplay. The implementation includes a \ClicksPerSecondController\ to calculate the rate based on a 1-second rolling window and a \ClicksPerSecondCounter\ UI component that renders the value with '/sec' text.

osu.Game/Screens/Play/HUD/ClicksPerSecond · high confidence

Add PositionAndColourVertex struct for OpenGL rendering

A new PositionAndColourVertex struct is introduced in the OpenGL graphics layer, defining a vertex layout that carries both position and color data. This enables the rendering pipeline to process vertices with combined spatial and color attributes, supporting visual features such as correct flashlight occlusion behavior.

osu.Game/Graphics/OpenGL · medium confidence

Add catch beatmap statistics for fruits, juice streams, and banana showers

The CatchBeatmap class now exposes specific statistics for the number of fruits, juice streams, and banana showers in a beatmap. These statistics are used to populate the beatmap info wedge, allowing players to see the composition of the map (e.g., how many sliders or bananas are present) in the editor and pre-gameplay screens.

osu.Game.Rulesets.Catch · high confidence

Add circle and scrolling gameplay modes to the latency certifier

The latency certifier now offers two new visualisation modes—circle gameplay and scrolling gameplay—allowing users to test latency using interactive hit-object patterns rather than just static boxes. These modes are selectable within the LatencyCertifierScreen, which also includes settings for BPM, visual spacing, and approach rate to customise the test environment.

osu.Game/Screens/Utility · high confidence

Add contracted score panel UI components

A new contracted view for the score panel has been introduced, featuring a compact display of the player's avatar, username, and key statistics (combo, accuracy, total score) along with difficulty and mod icons. The implementation includes dedicated components for the top header (showing rank position) and middle content (showing user and score details), providing a more space-efficient way to view score information.

osu.Game/Screens/Ranking/Contracted · high confidence

Add detailed statistics to beatmap cards

The beatmap card now displays several new statistics on hover, including play count, favourite count, hype count, nomination count, and release date. Each statistic is rendered as a dedicated component (e.g., PlayCountStatistic, FavouritesStatistic) that updates dynamically based on the beatmap's online status and user interactions.

osu.Game/Beatmaps/Drawables/Cards/Statistics · high confidence

Add elevated privileges warning for macOS users

The application now detects when it is running with elevated privileges (as root or Administrator) and displays a warning notification. This change introduces a new \ElevatedPrivilegesChecker\ component that checks \Environment.IsPrivilegedProcess\ and posts a \SimpleNotification\ to inform users about the risks of running with elevated privileges, including potential issues with integrations.

osu.Desktop/Security · high confidence

Add empty freeform ruleset template for custom ruleset development

A new template for generating a minimal, empty freeform ruleset is now available. Users can install the \ppy.osu.Game.Templates\ package and use \dotnet new ruleset\ to scaffold a new project, which includes the necessary project structure, test scenes, and configuration files to begin developing a custom ruleset.

Templates · high confidence

Add historical profile sections for play history, replays, and most played beatmaps

The profile overlay now includes a new Historical section that displays user activity charts and lists. This includes a line chart for monthly play counts, a chart for replays watched, and a paginated list of the user's most played beatmaps with cover art and metadata. The implementation introduces new components such as ProfileLineChart, UserHistoryGraph, and DrawableMostPlayedBeatmap to render these historical data points.

osu.Game/Overlays/Profile/Sections/Historical · high confidence

Add history list and tabbed playlist view for multiplayer

The multiplayer playlist screen now features a tabbed interface that lets users switch between the active 'Queue' and a 'History' list of previously played items. The new MultiplayerHistoryList component displays historical playlist items sorted by their played-at date, while the MultiplayerPlaylistTabControl provides the UI to toggle between the current queue and the history view. This change allows users to view results and past items from the multiplayer session.

osu.Game/Screens/OnlinePlay/Multiplayer/Match/Playlist · high confidence

Add iOS test application entry points and configuration

Added the iOS application entry point (Program.cs) and delegate (AppDelegate.cs) for the osu! Game.Tests.iOS project, establishing the runtime startup for iOS-based visual tests. The Info.plist was created to configure the test bundle, setting the minimum supported iOS version to 13.4, restricting iPhone orientations to landscape modes, and enabling indirect input events for proper mouse support on iOS devices.

osu.Game.Tests.iOS · high confidence

Add intro animation screen for matchmaking

A new intro screen has been added to the matchmaking flow, providing a brief animated introduction that displays the current pool type (e.g., 'Quick Play' or 'Ranked Play') with a scaling title and accompanying audio cues.

osu.Game/Screens/OnlinePlay/Matchmaking/Intro · high confidence

Add legacy IPC support via TCP

A new TCP-based inter-process communication (IPC) provider has been introduced for legacy clients, enabling them to request difficulty calculations. The implementation includes request and response models (LegacyIpcDifficultyCalculationRequest and LegacyIpcDifficultyCalculationResponse) and a message wrapper (LegacyIpcMessage) that handles JSON serialization of the payload. The provider listens on port 45357 and routes incoming messages to calculate star ratings for specified beatmaps and rulesets.

osu.Desktop/LegacyIpc · high confidence

Add new structures for receiving new medal data

New C\# classes have been introduced in the WebSocket events and requests directories to handle specific server-side notifications. These include UserAchievementUnlock for displaying achievement unlocks, NewPrivateNotificationEvent for private notifications, and NewChatMessageData for chat messages. Additionally, StartChatRequest and EndChatRequest classes were added to manage the client's subscription to chat streams. These changes enable the client to correctly deserialize and display new types of online notifications and manage chat connectivity.

osu.Game/Online/Notifications/WebSocket/Events · high confidence

Add placeholder for the design mode screen

A new DesignScreen has been introduced in the editor, providing a placeholder for the design mode. Currently, it displays an 'Under Construction' message, indicating that this part of the editor is not yet fully implemented.

osu.Game/Screens/Edit/Design · high confidence

Add point visualisation for timeline summary

A new PointVisualisation component has been introduced to render individual points on the summary timeline. This adds a visual indicator for each beat or event, displayed as a small circle (FastCircle) with a fixed width and height, anchored to the timeline's horizontal axis. This change enhances the visual feedback of the timeline summary by explicitly showing each point's position.

osu.Game/Screens/Edit/Components/Timelines/Summary/Visualisations · high confidence

Add real-time online user list with search and display style options

The Dashboard now includes a new 'Currently Online' section that displays a live list of online users. Users can search for specific users and toggle between card and list display styles. The component manages real-time presence updates and handles spectating state based on user activity.

osu.Game/Overlays/Dashboard/CurrentlyOnline · high confidence

Add team-based state and request models for multiplayer Team Versus matches

The multiplayer Team Versus match type now includes dedicated models for team management and user state. A new \MultiplayerTeam\ class tracks team identity and name, while \TeamVersusRoomState\ maintains a list of teams (defaulting to 'Team Red' and 'Team Blue'). User state (\TeamVersusUserState\) and a \ChangeTeamRequest\ are added to support switching teams during a match. These changes enable clients to track and modify team assignments within the room state.

osu.Game/Online/Multiplayer/MatchTypes/TeamVersus · high confidence

Add user search functionality to the dashboard

A new user search feature has been added to the dashboard, allowing users to find other players by name. The implementation includes a search text box and toolbar in the UserSearchDisplay, which triggers an API request to search for users. Results are displayed in a new UserPanelList component that supports card, list, and brick display styles. The search is debounced by 500ms to avoid excessive requests, and no search is performed if the query is empty.

osu.Game/Overlays/Dashboard/UserSearch · high confidence

Add user statistics change rows to the solo results screen

The solo results screen now displays a two-column layout showing changes to global rank, performance points, maximum combo, accuracy, ranked score, and total score. Each metric is presented as a dedicated row that updates dynamically via the UserStatisticsWatcher, with clear visual indicators for improvements or declines.

osu.Game/Screens/Ranking/Statistics/User · high confidence

Added Android battery stats permission

The osu.Android project now includes an AssemblyInfo.cs file that requests the BATTERY stat permission, enabling the application to access battery information on Android devices.

osu.Android/Properties · high confidence

Added Android test application for visual testing

A new Android application project (osu.Game.Tests.Android) has been introduced to support visual testing on the Android platform. This includes a new AndroidManifest.xml configuring the app with a target SDK of 34 and a MainActivity that launches the OsuTestBrowser, explicitly loading the four core game rule sets (Osu, Taiko, Catch, and Mania) to facilitate Android-based visual tests.

osu.Game.Tests.Android · high confidence

Added animated intro sequence for Ranked Play matches

A new animated intro screen has been added for Ranked Play matchmaking, featuring a 'VS' sequence that displays player avatars and names with sliding and fading effects, followed by a star rating calculation animation that refines the difficulty range for the two players. The intro includes audio cues (windup, impact, swoosh) and displays the chat during the sequence.

osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Intro · high confidence

Added bottom ornament to ranked play screens

A new bottom ornament component has been introduced for ranked play matchmaking screens. This visual indicator, which displays a progress bar and the 'Ranked Play' label, is now applied to the queue screen as well. The implementation includes a custom container to handle inverse scaling for UI size preservation and specific styling for the bottom overlay.

osu.Game/Screens/OnlinePlay/Matchmaking · high confidence

Added high-performance session management for desktop

The desktop application now manages high-performance sessions, allowing nested sessions to be active simultaneously. When a session begins, the garbage collector is switched to LowLatency mode to reduce pauses, and reverts to the original mode when the last session ends. This change introduces the HighPerformanceSessionManager to handle these transitions.

osu.Desktop/Performance · high confidence

Added local score statistics broadcasting via WebSocket

The desktop client now runs an internal WebSocket server (default port 49727, configurable via OSU\_WEBSOCKET\_SERVER\_PORT) that broadcasts the player's current hit count for the most recent local score. External integrations can connect to this server to receive real-time updates about the user's gameplay performance.

osu.Desktop/IPC · medium confidence

Added macOS app location checker

A new component has been introduced to verify that the game is installed in the correct macOS directories (the root /Applications folder or the user's \~/Applications folder). If the application is found outside these locations, a warning notification is displayed to the user, helping ensure proper installation practices on macOS.

osu.Desktop/MacOS · high confidence

Added matchmaking room state and scoring model types

Introduced new model classes for the multiplayer matchmaking system, including MatchmakingRoomState, MatchmakingUser, MatchmakingRound, and related list/collection types. These classes define the structure for tracking user placements, scores, and room stages (such as WaitingForClientsJoin, UserBeatmapSelect, and Gameplay). The implementation includes logic for recording scores, calculating placements, and handling user abandonment times, providing the backend data structures required for server-side matchmaking logic.

osu.Game/Online/Multiplayer/MatchTypes/Matchmaking · high confidence

Added multiplayer spectator screen and components

Introduced a new multiplayer spectator system, including the MultiSpectatorScreen which displays a grid of all players, each with their own player area, clock, and leaderboard. The implementation includes a MasterClockState enum, SpectatorPlayerClock for individual player timing, and a SpectatorSyncManager to handle synchronization and catch-up logic.

osu.Game/Screens/OnlinePlay/Multiplayer/Spectate · high confidence

Added new performance benchmarks for game logic

The osu.Game.Benchmarks project now includes a suite of new benchmarks to measure performance across various game systems. These cover beatmap parsing, carousel filtering, difficulty calculation for all four game modes (osu!, Taiko, Catch the Beat, and Mania), hit object property access, mod retrieval and hashing, score multiplier calculation, string comparison, unstable rate calculation, and ruleset instance creation. This provides a baseline for tracking performance regressions or improvements in these areas.

osu.Game.Benchmarks · high confidence

Added playlist collection and results screens

Users can now add all beatmaps from a playlist to a local collection via a new 'Add to Collection' button in the playlist footer. Additionally, new results screens have been introduced to display scores and leaderboards for individual playlist items and user bests, allowing players to view historical multiplayer and playlist performance.

osu.Game/Screens/OnlinePlay/Playlists · high confidence

Added seasonal theme components for the Christmas event

The game now includes a new 'Seasonal' namespace containing the core visual and audio assets for the Christmas event. This includes a custom intro screen (IntroChristmas) that plays a specific beatmap and audio track, a modified OsuLogo (OsuLogoChristmas) that displays a festive hat, and a menu lighting system (MainMenuSeasonalLighting) that renders dynamic, beatmap-synced light effects on the main menu. The theme's color palette is defined in SeasonalUIConfig, and the menu's side flashes and logo visualisation are overridden to use these seasonal colors. All components are gated behind a SeasonalUIConfig.ENABLED flag, which is currently set to false.

osu.Game/Seasonal · high confidence

Added support for avatar actions in matchmaking rooms

New models have been introduced to handle avatar interactions within matchmaking rooms. This includes the \MatchmakingAvatarAction\ enum, which currently defines a 'Jump' action, alongside the corresponding \MatchmakingAvatarActionEvent\ and \MatchmakingAvatarActionRequest\ classes to facilitate these interactions.

osu.Game/Online/Matchmaking/Events · medium confidence

Adds new UI components for the Ranked Play mode

The Ranked Play mode now includes dedicated UI components for the game screen, including a background music manager that cross-fades between the global track and a specific ranked play BGM, a chat display that integrates with the multiplayer channel, a score counter with animated digit transitions, a stage display showing progress and headings, a card flow for horizontal layout, and user display elements showing health, beatmap state, and damage multipliers.

osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Components · high confidence

Complete rewrite of the settings overlay with new UI components

The settings overlay has been rebuilt from the ground up, introducing a new modular architecture for settings items, headers, footers, and sidebars. This includes new controls like SettingsNumberBox, SettingsColour, and SettingsDropdown, alongside a dedicated component for displaying contextual notes and warnings. The sidebar now features distinct buttons for each section with hover and click sound effects, while the footer displays the current build version and ruleset icons. Additionally, a 'Revert to Default' button is now available for settings that support classic default values, and the interface supports keyword-based filtering and localisation.

osu.Game/Overlays/Settings · high confidence

Desktop-specific features and platform integrations

The desktop build now includes a new Discord Rich Presence system that displays user activity, multiplayer room status, and beatmap links in Discord, while also handling Discord URI scheme registration and join events. The application enforces a minimum Windows version (8.1) with a user-facing error message if the OS is too old or running in compatibility mode. It also integrates with NVIDIA's NVAPI to manage threaded optimizations and GPU profiles, and implements a Velopack-based update manager for package-managed builds. Additionally, the desktop client supports multiple instances in debug mode, handles file associations and uninstaller registry operations via Squirrel, and provides battery status information for desktop platforms.

osu.Desktop · high confidence

Editor overhaul: new UI, controls, and workflow

The editor has been completely restructured with a new bottom bar containing playback controls, a summary timeline, and a test gameplay button. A new bookmark system allows users to add, remove, and jump to bookmarks using keyboard shortcuts. The editor now features a dedicated change handler for beatmap editing, a dialog to discard unsaved changes, and a confirmation dialog for deleting difficulties. The background dimming in the editor is now configurable via a new menu item. The editor's clock is decoupled from the global track, and the UI has been updated to use a new design language with aquamarine colors.

osu.Game/Screens/Edit · high confidence

Enable Android file import via system share sheet and file manager

Android users can now import beatmaps, skins, and replays directly from the system's file picker or share sheet. The app registers for content URIs and common MIME types (ZIP, OCTET-STREAM, and specific osu! archive types), allowing files shared from other apps or selected from the Downloads directory to be imported seamlessly. This replaces the previous, more limited import mechanism with a unified approach that supports multiple file types and handles URI-based file access via ContentResolver.

osu.Android · high confidence

Expanded online API request coverage for social and content features

The online API layer now supports a broader range of social and content interactions, including adding and deleting friends, blocking and reporting users, managing comments (posting, voting, deleting, and reporting), and creating or managing private message channels. Additionally, the client can now fetch user-specific data such as kudosu history, most played beatmaps, and country rankings, alongside standard content retrieval like news, spotlights, and seasonal backgrounds. These changes enable the client to fully interact with the updated server-side API endpoints for social features and user profiles.

osu.Game/Online/API/Requests · high confidence

Expanded score panel UI components

The expanded score panel now features dedicated UI components for displaying the player's avatar and username, the total score with tick sounds, and the middle content area showing accuracy, combo, performance, and hit statistics. A new 'Played on' text component handles date and time formatting based on user settings.

osu.Game/Screens/Ranking/Expanded · high confidence

Extensible ruleset filtering for song select

A new interface, IRulesetFilterCriteria, has been introduced to allow each game ruleset to define its own custom filtering criteria within the song select screen. This enables rulesets to implement specific search keywords and mod-based filter conditions, ensuring that beatmaps are correctly filtered according to ruleset-specific logic.

osu.Game/Rulesets/Filter · medium confidence

Extensive localisation support added across the game

A comprehensive set of new localisation files has been added to the osu.Game/Localisation directory, covering UI strings for account creation, audio settings, beatmap carousel filters, leaderboards, offset controls, overlays, statistics, submission, bindings, breaks, button system, catch actions, chat, collections, and common strings. This enables full translation of these interface elements into other languages.

osu.Game/Localisation · high confidence

Initial iOS platform support

This change introduces the initial iOS build for osu!, enabling the game to run on iPhone and iPad devices. The implementation includes a custom \AppDelegate\ to manage screen orientation and interface support, along with platform-specific overrides for storage, battery status, and update notifications. The app is configured to support landscape and portrait orientations on iPad, while restricting iPhone to landscape mode. Additionally, the configuration enables indirect input events for proper mouse support, disables minimum frame durations, and registers file associations for .osr, .osk, .osz, and .olz files, allowing users to open and share osu! related content directly from other apps or the file system.

osu.iOS · high confidence

Introduce "Argon" skin components for gameplay HUD

Added a new set of "Argon" themed HUD components for gameplay, including counters for accuracy, combo, score, and performance points, as well as a new health display and song progress bar. These components feature a distinct wireframe digit style, configurable wireframe opacity, and label visibility settings, providing a modernized visual alternative to the legacy HUD elements.

osu.Game/Screens/Play/HUD · high confidence

Introduce "osu! classic" bundled skin

A new bundled skin named "osu! classic" has been added to the game. This skin is designed to replicate the visual style of the original osu!stable client, providing a nostalgic aesthetic for players who prefer the classic look and feel.

osu.Game/Skinning · high confidence

Introduce Daily Challenge screen with full UI and gameplay support

A new Daily Challenge screen has been added to the Online Play section, featuring a dedicated intro sequence, a carousel for beatmap selection, a leaderboard, a score breakdown chart, an event feed, and a totals display. The implementation includes a custom player for the challenge, a time remaining ring, and support for joining/leaving rooms via the multiplayer server. This adds a complete client-side experience for the daily challenge mode, including animations, sound design, and real-time updates.

osu.Game/Screens/OnlinePlay/DailyChallenge · high confidence

Introduce OnlineMetadataClient for real-time online status and beatmap updates

Added a new \OnlineMetadataClient\ and supporting models (such as \BeatmapUpdates\, \DailyChallengeInfo\, and \MultiplayerRoomScoreSetEvent\) to handle real-time metadata streams. This enables the client to receive live updates for user online presence, beatmap changes, and multiplayer room scores, replacing previous polling or disconnected update mechanisms with a persistent hub connection.

osu.Game/Online/Metadata · high confidence

Introduce Ranked Play game mode

Added the foundational models, interfaces, and replay structures for the new Ranked Play multiplayer mode. This includes the client and server interfaces for managing card states and actions, as well as the data structures required to track and replay card hand interactions such as dragging, selecting, and playing cards.

osu.Game/Online/RankedPlay · high confidence

Introduce Ranked Play match state and data models

Added new C\# classes to support the Ranked Play multiplayer mode. This includes \RankedPlayStage\ to track match progression (e.g., card selection, gameplay, results), \RankedPlayRoomState\ to hold the global state of a match (including user info, active user, and stage), \RankedPlayUserInfo\ to track individual player stats (rating, life, hand, damage info), and \RankedPlayDamageInfo\ to record combat metrics like direct damage, multipliers, and bonus damage. These models enable the backend to synchronize the state of a Ranked Play match between clients.

osu.Game/Online/Multiplayer/MatchTypes/RankedPlay · high confidence

Introduce Ranked Play mode with full screen implementations

A new Ranked Play multiplayer mode is added, providing complete screen implementations for the match lifecycle. This includes a DiscardScreen for card selection, a GameplayWarmupScreen displaying beatmap details and metadata, a GameplayScreen placeholder, and an EndedScreen showing results and exit options. The implementation also includes a HamburgerMenu for in-match actions and integrates audio samples for card interactions, warnings, and match outcomes.

osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay · high confidence

Introduce Realm-based data models for files and users

Added new Realm database models (RealmFile, RealmNamedFileUsage, RealmUser) to support native queries and improve performance when cleaning up files. The RealmUser model now stores the user's country code and implements IEquatable for better equality checks, while RealmNamedFileUsage includes a note about indexing limitations for embedded objects.

osu.Game/Models · medium confidence

Introduce animated medal splash display

Adds a new animated overlay for displaying unlocked medals, featuring a fade-in and scale-up animation for the medal icon, followed by the appearance of the 'Medal Unlocked' header, name, and description text. The component handles its own loading state and visual transitions.

osu.Game/Overlays/MedalSplash · high confidence

Introduce database-backed configuration for game rulesets

The \osu.Game.Rulesets.Configuration\ namespace now provides a \RulesetConfigManager\ that persists settings to a Realm database. This change allows each game ruleset to have its own specific configuration storage, with settings keyed by the ruleset's short name and variant. The implementation includes a new \IRulesetConfigManager\ interface and a generic \RulesetConfigManager\<TLookup\>\ class that handles loading, saving, and tracking changes to ruleset-specific settings.

osu.Game/Rulesets/Configuration · medium confidence

Introduce dedicated matchmaking beatmap selection UI

Added a new set of components in the matchmaking screen to handle beatmap selection and randomization. This includes a \BeatmapSelectGrid\ to display available maps, specialized panels (\MatchmakingSelectPanelBeatmap\ and \MatchmakingSelectPanelRandom\) that render beatmap cards and a random 'dice' option respectively, and a \CardContent\ system that shows user avatars and vote status. The implementation adds a rolling animation for the random selection and integrates with the multiplayer client to handle item selection and deselection events.

osu.Game/Screens/OnlinePlay/Matchmaking/Match/BeatmapSelect · high confidence

Introduce dedicated solo score submission requests

Added new request classes, CreateSoloScoreRequest and SubmitSoloScoreRequest, to handle solo score submissions. CreateSoloScoreRequest now sends beatmap hash, ruleset ID, and version hash, while SubmitSoloScoreRequest handles the actual score submission with a 60-second timeout. This isolates solo score submission logic from the general score submission flow.

osu.Game/Online/Solo · high confidence

Introduce editor gameplay test player with autoplay and pause controls

Added \EditorPlayer\ and \EditorPlayerLoader\ in the \osu.Game.Screens.Edit.GameplayTest\ namespace to enable testing gameplay within the editor. The new player implements autoplay and quick-pause toggles, prevents misses on previous hit objects to ensure gameplay completes, and propagates clock state back to the editor. It also disables replay recording and failure conditions for the test environment.

osu.Game/Screens/Edit/GameplayTest · high confidence

Introduce generic editor infrastructure for beatmap verification and composition

The editor now features a new, ruleset-agnostic \BeatmapVerifier\ that runs a suite of checks (e.g., for audio, metadata, and timing) against beatmaps. This is supported by a \BeatmapVerifierContext\ that provides the necessary context for these checks. Additionally, a generic \HitObjectComposer\ and \HitObjectPlacementBlueprint\ have been introduced to handle hit object composition and placement, providing a shared foundation for all rulesets to build upon.

osu.Game/Rulesets/Edit · high confidence

Introduce interactive card hand UI for Ranked Play

Added the \HandOfCards\ component and its subclasses (\PlayerHandOfCards\, \OpponentHandOfCards\) to render and manage the player's and opponent's card hands in Ranked Play. This includes the \HandCard\ base class for visual states, \HandReplayPlayer\ and \HandReplayRecorder\ for synchronizing and recording card movements, and \HandSelectionMode\ to control selection behavior. Users can now see and interact with their cards, including dragging, selecting, and playing cards via a 'Play' button.

osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Hand · high confidence

Introduce legacy beatmap data models and enums

Added a new \Legacy\ namespace containing strongly-typed enums for legacy beatmap data, including \LegacyMods\, \LegacyHitObjectType\, \LegacyEffectFlags\, \LegacyEventType\, \LegacyHitSoundType\, \LegacyOrigins\, \LegacySampleBank\, and \LegacyStoryLayer\. A new \LegacyControlPointInfo\ class was introduced to manage sample and difficulty control points using sorted lists, providing specific methods like \SamplePointAt\ and \DifficultyPointAt\ for retrieving active control points at a given time. These changes support the parsing and representation of older beatmap formats within the game.

osu.Game/Beatmaps/Legacy · high confidence

Introduce legacy hit object types for beatmap parsing

The codebase now includes a new set of classes in the \osu.Game.Rulesets.Objects.Legacy\ namespace to represent legacy hit objects (circles, sliders, spinners, and holds) specifically for parsing beatmaps. These \Convert\*\ classes implement the \IHasLegacyHitObjectType\ interface and are designed solely for parsing, not for active gameplay. The \ConvertHitObjectParser\ has been updated to instantiate these new types, ensuring that legacy beatmap data is correctly mapped to the appropriate internal representations.

osu.Game/Rulesets/Objects/Legacy · high confidence

Introduce legacy serialization framework

Added new \ILegacySerializable\ interface and \SerializationReader\/\SerializationWriter\ classes to the \osu.Game.IO.Legacy\ namespace. This provides a custom binary serialization mechanism that handles nulls, arrays, and generic collections, enabling objects to be read from and written to streams using the \ReadFromStream\ and \WriteToStream\ methods.

osu.Game/IO/Legacy · high confidence

Introduce new Ranked Play matchmaking queue screen

The matchmaking queue has been restructured with a dedicated screen for Ranked Play, featuring a new visual interface for selecting game pools, viewing rating distributions, and managing queue status. This update adds a cloud-based visualisation of other players in the queue, a rating distribution graph, and a match panel for head-to-head duels. The changes also include sound effects for enqueueing and match-finding, improved notification handling for backgrounded queue states, and safeguards against crashes during the queueing process.

osu.Game/Screens/OnlinePlay/Matchmaking/Queue · high confidence

Introduce new ScreenFooter and ScreenBackButton components

Added new \ScreenFooter\, \ScreenBackButton\, \ScreenFooterButton\, and \ScreenStackFooter\ classes in the \osu.Game.Screens.Footer\ namespace. These components provide a modernized footer UI for game screens, featuring a dedicated back button with expanded hitbox, dynamic button management, and integration with the screen stack to show/hide the footer based on screen state.

osu.Game/Screens/Footer · high confidence

Introduce new beatmap and storyboard format decoders and encoders

The osu.Game/Beatmaps/Formats directory now includes a new abstract \Decoder\<T\>\ base class and a \Decoder\ registry that manages decoder instantiation via magic strings and fallbacks. This enables \LegacyBeatmapDecoder\, \JsonBeatmapDecoder\, and \LegacyStoryboardDecoder\ to register themselves and be retrieved dynamically. The \LegacyBeatmapEncoder\ and \LegacyStoryboardEncoder\ classes are introduced to serialize beatmaps and storyboards into the legacy \.osu\ and \.osb\ text formats. Additionally, interfaces \IHasComboColours\ and \IHasCustomColours\ are added to support custom color data in the format.

osu.Game/Beatmaps/Formats · high confidence

The song select screen now uses a new \BeatmapCarousel\ component to display and manage beatmap sets and difficulties. This change replaces the previous implementation with a more robust carousel that supports grouping, sorting, and filtering of beatmaps. The new carousel handles selection, scrolling, and visual updates, providing a smoother and more responsive user experience when navigating through large beatmap libraries.

osu.Game/Screens/Select · high confidence

Introduce new beatmap submission wizard

Added a new multi-step wizard for submitting beatmaps, including a settings screen to choose the submission target and notification preferences, a permissions and FAQ screen, and a progress tracker that displays each stage of the submission process with audio feedback.

osu.Game/Screens/Edit/Submission · high confidence

Introduce new chat channel listing overlay

A new chat channel listing overlay has been added, featuring a scrollable list of public channels with join/leave functionality. Each channel item displays the name, topic, and user count, and includes an animated checkbox indicator that fades and scales when the user joins or leaves a channel. The implementation includes specific styling for hover states, sound effects for join/leave actions, and filtering support via LocalisableString terms.

osu.Game/Overlays/Chat/Listing · high confidence

Introduce new music playback and playlist overlay components

Added MusicKeyBindingHandler to manage global music playback actions (play/pause, next, previous) and display corresponding on-screen toasts. Added Playlist, PlaylistItem, and PlaylistOverlay components to display and manage the music playlist, including selection handling and beatmap updates.

osu.Game/Overlays/Music · high confidence

Introduce new online API architecture and request handling

The online API layer has been refactored with a new \APIAccess\ component that manages connection state, authentication, and request queuing on a dedicated background thread. This introduces a more robust handling of API requests, including support for two-factor authentication, improved error handling for network issues, and better state management for the local user. The change also adds support for downloading files via the API and provides a \DummyAPIAccess\ for testing purposes.

osu.Game/Online/API · high confidence

Introduce new participant list UI for multiplayer rooms

A new participant list UI has been added to the multiplayer screens, featuring a \ParticipantsList\ that supports both standard and slot-based room configurations. Each participant is displayed in a \ParticipantPanel\ that shows the user's avatar, country flag, username, global rank, and mods. The list pins the room host to the top and includes a \TeamDisplay\ for team-based modes, allowing players to swap teams. A \StateDisplay\ component provides real-time status updates (e.g., ready, loading, spectating) and beatmap availability for each participant.

osu.Game/Screens/OnlinePlay/Multiplayer/Participants · high confidence

Introduce new scoring model and manager classes

Added new classes to handle score data and management, including \ScoreInfo\ as the primary data model for scores, \ScoreManager\ to handle import, export, and deletion of scores, and \ScoreImporter\ to process \.osr\ replay files. The \Score\ class now wraps \ScoreInfo\ and \Replay\ data, while \IScoreInfo\ defines the interface for score metadata. Additional support classes include \HitResultDisplayStatistic\ for hit counts, \RankingTier\ for tiered badge colors, and \ScoreRank\ for grade display. These changes lay the groundwork for improved score persistence and import functionality.

osu.Game/Scoring · high confidence

Introduce new scrolling architecture for hit object rendering

The scrolling ruleset UI has been refactored into a new, modular system. A new \DrawableScrollingRuleset\ and \ScrollingPlayfield\ provide the base infrastructure for scrolling gameplay, while \ScrollingHitObjectContainer\ and \IScrollingInfo\ manage the state and layout of hit objects. This change introduces support for multiple scrolling algorithms (such as sequential and overlapping) and allows for user-adjustable scroll speeds, improving the flexibility and performance of scrolling-based game modes.

osu.Game/Rulesets/UI/Scrolling · medium confidence

Introduce new spectator state and frame data structures

The spectator system now uses new data models to transmit and process gameplay state. \SpectatorState\ and \SpectatedUserState\ define the current status of a playing user (e.g., Idle, Playing, Passed, Failed), while \FrameDataBundle\ and \FrameHeader\ carry replay frames and score statistics (score, accuracy, combo, hit statistics, and active mods) to the client. A \SpectatorScoreProcessor\ on the client side uses this data to calculate and display scores without needing the original beatmap. These changes enable more robust and accurate spectator features, including real-time score and combo tracking for watched users.

osu.Game/Online/Spectator · high confidence

Introduce room-specific mod selection and background screen

Added three new files in the OnlinePlay Match directory: RoomBackgroundScreen, RoomModSelectOverlay, and UserModSelectButton. RoomBackgroundScreen manages the room's background and selected playlist item. RoomModSelectOverlay handles mod selection for the room, computing active mods by combining room-required mods with user-selected mods. UserModSelectButton provides a reusable button component for mod selection. These changes enable room-specific mod selection functionality within the online play match screen.

osu.Game/Screens/OnlinePlay/Match · high confidence

Introduce structured matchmaking system with pools and duels

The matchmaking system has been replaced with a new architecture supporting distinct matchmaking pools and types. Users can now join specific matchmaking queues based on pool type (QuickPlay or RankedPlay) and receive invitations to rooms or duels. The interface now includes specific status updates for lobby and queue states, and supports raising or removing candidate playlist items for selection.

osu.Game/Online/Matchmaking · high confidence

Introduce the skin layout editor for customizing skin elements

A new skin layout editor has been added, allowing users to visually arrange, scale, and rotate skin components within the game. This feature includes a component toolbox for adding elements, a blueprint-based selection and manipulation system, and an external editing workflow that exports skin files to the user's file system for external modification. The editor also supports undo/redo for layout changes and integrates with the main game's skin manager.

osu.Game/Overlays/SkinEditor · high confidence

Introduces ReplayInputHandler for structured replay input events

A new abstract ReplayInputHandler class has been added to the input handling system, introducing a structured approach to replay data. This includes a generic ReplayState class that emits ReplayStateChangeEvent to track pressed and released actions, as well as specific classes (ReplayStatisticsFrameInput and ReplayStatisticsFrameEvent) to handle replay statistics frames. This change shifts replay input processing from raw key simulation to explicit state change events, allowing consumers to react to specific replay data points rather than simulated inputs.

osu.Game/Input/Handlers · medium confidence

The IO subsystem now supports migrating game data to a different folder, with a new \MigratableStorage\ base class handling recursive copy and cleanup. Hard link creation is supported on Windows, Linux, and macOS via a new \HardLinkHelper\ utility. A \LineBufferedReader\ is added for efficient line-based stream reading, and \OsuStorage\ is refactored to support custom storage paths and error states. Additionally, \StableStorage\ is introduced to locate osu-stable beatmap directories, and \WrappedStorage\ provides a reusable wrapper for storage paths.

osu.Game/IO · high confidence

Introduces legacy score simulation and attributes

A new legacy scoring system has been added to the game, introducing the ILegacyScoreSimulator interface and LegacyScoreAttributes struct to handle old-style (Score V1) score calculations. The LegacyBeatmapConversionDifficultyInfo class now exposes object counts (EndTimeObjectCount and TotalObjectCount) and difficulty parameters (DrainRate, ApproachRate, CircleSize, OverallDifficulty) to facilitate beatmap conversion between legacy rulesets. This change enables the calculation of legacy score multipliers and maximum scoring values for beatmaps, supporting the display of legacy score details in the UI.

osu.Game/Rulesets/Scoring/Legacy · high confidence

Introduces new UI components and refactors existing controls

Adds several new UI components including BackButton, Bar, BarGraph, BasicSearchTextBox, BreadcrumbControl, CommaSeparatedScoreCounter, and DangerousRoundedButton. Refactors OsuSliderBar to support custom tooltips and introduces a new ShearedSliderBar variant. Updates the framework to use new event handlers and input handling methods. Fixes various bugs related to slider bars, dropdowns, and text boxes.

osu.Game/Graphics/UserInterface · high confidence

Introduces new scoring and health processing architecture

The scoring system has been refactored with new core components: a \ScoreProcessor\ that handles scoring logic, a \HealthProcessor\ base class for managing player health, and specific implementations like \DrainingHealthProcessor\ for continuous health drain and \AccumulatingHealthProcessor\ for rulesets with different health mechanics. The \HitWindows\ class now provides timing windows for hit results, and \HitResult\ has been expanded to include new judgement types such as \SliderTailHit\, \SmallTickHit\, and \LargeTickHit\. Additionally, a \ScoreMultiplierCalculator\ is introduced to compute score multipliers based on mods and difficulty, and the \HitEvent\ struct is added to track hit statistics for unstable rate calculations.

osu.Game/Rulesets/Scoring · high confidence

Introduces new screen architecture with OsuScreen and background stack

The screen hierarchy has been restructured with the introduction of a new \OsuScreen\ base class and an \OsuScreenStack\ for managing screen navigation. This change brings a dedicated \BackgroundScreen\ and \BackgroundScreenStack\ to handle background transitions and parallax effects more robustly. The \Loader\ now precompiles shaders and manages the initial intro sequence, while interfaces like \IOsuScreen\ and \IHandlePresentBeatmap\ provide a standardized way for screens to control user exit, overlay visibility, and beatmap/rule changes.

osu.Game/Screens · high confidence

Introduces new utility classes in osu.Game.Utils

Adds a collection of new utility classes to the \osu.Game.Utils\ namespace, including \BatteryInfo\ for power status, \ColourUtils\ for gradient sampling, \FileUtils\ for retrying IO operations, \FilesystemSanityCheckHelpers\ for path traversal and directory checks, \FormatUtils\ for formatting accuracy, rank, and star ratings, \GeometryUtils\ for vector and quad calculations, \HumanizerUtils\ for date/time formatting, \IDeepCloneable\ interface, \LegacyRandom\ for legacy RNG behavior, \LegacyUtils\ for color interpolation, \LimitedCapacityQueue\ for FIFO storage, \MobileUtils\ for screen orientation, \ModUtils\ for mod validation and compatibility checks, \NamingUtils\ for unique naming, and \Optional\ for value wrapping.

osu.Game/Utils · high confidence

Introduces the Ranked Play card UI and audio preview system

Adds the complete UI for the Ranked Play matchmaking cards, including the card back design, cover art, metadata display (title, artist, mapper), star rating, and attribute listings. It also implements the song preview functionality, allowing users to hear audio previews when hovering over cards, with a dedicated overlay to display beatmap details and user tags.

osu.Game/Screens/OnlinePlay/Matchmaking/RankedPlay/Card · high confidence

Major overhaul of osu!mania gameplay, visuals, and scoring

This update introduces a comprehensive rework of the osu!mania ruleset, significantly altering gameplay mechanics and visual presentation. Key changes include a new hold note implementation with distinct head, body, and tail pieces, alongside updated argon skin assets for notes, explosions, and the key area. The scoring system has been revamped to use the new ScoreV2 architecture, adjusting accuracy and combo weightings (85% accuracy, 15% combo) and introducing progressive score multipliers for certain mods. Visually, the playfield now supports arbitrary column counts, dual stages, and proper scroll direction handling. The update also includes a new difficulty calculator structure, support for mobile touch controls, and various bug fixes related to hold notes, barlines, and editor blueprints.

osu.Game.Rulesets.Mania · high confidence

The song select screen now uses a new \Carousel\ component to manage the vertical list of beatmaps. This introduces a dedicated \Carousel\ class that handles scrolling, filtering, and selection logic, replacing the previous implementation. The new component supports features like group expansion, keyboard navigation, and debounced filtering, providing a more efficient and flexible way to display and interact with the song list.

osu.Game/Graphics/Carousel · high confidence

New DifficultyHitObject class for difficulty calculation preprocessing

A new \DifficultyHitObject\ class has been introduced in the difficulty preprocessing layer to wrap raw \HitObject\s and provide additional context for difficulty calculations. This class stores metadata such as the object's index, the previous and next objects in the sequence, time deltas, start/end times, and clock rate. It also includes logic to retrieve hit windows, ensuring that nested hit objects (like slider heads) are correctly accounted for in difficulty calculations.

osu.Game/Rulesets/Difficulty/Preprocessing · medium confidence

New FileImportScreen for importing files and directories

A new FileImportScreen has been added to the game, providing a dedicated interface for importing individual files or all files from a selected directory. The screen features a file selector, an 'Import Selected File' button, and an 'Import All Files from Directory' button, allowing users to easily bring external media into the game.

osu.Game/Screens/Import · high confidence

The game now supports handling archive imports and \osu://\ deep links via Inter-Process Communication (IPC). This allows external applications to trigger local file imports or open specific links within the game. A new \WebSocketServer\ has been added to facilitate external integrations, such as streaming overlays, by listening on localhost for WebSocket connections. The implementation includes dedicated IPC channels (\ArchiveImportIPCChannel\, \OsuSchemeLinkIPCChannel\) and a \WebSocketChannel\ for managing the underlying communication.

osu.Game/IPC · high confidence

New Maintenance settings section for bulk data management

A new Maintenance section has been added to the game's settings, providing users with bulk management tools. This includes options to delete all beatmaps, beatmap videos, scores, skins, and collections, as well as restore recently deleted items and reset all offset values. The update also introduces a data migration tool that allows users to move their user data to a new folder, and adds functionality to import beatmaps and scores from a legacy osu! (Stable) installation.

osu.Game/Overlays/Settings/Sections/Maintenance · high confidence

New News overlay components for displaying posts

The News overlay now features a new NewsCard component that displays a news post's title, preview text, author, and header image, with a clickable date container that shows a tooltip. A NewsHeader component manages the header with tab control for switching between the front page and individual articles. A NewsPostBackground class handles loading and displaying the header image for each news post. These components work together to provide a structured view of news content within the game's overlay system.

osu.Game/Overlays/News · high confidence

New User Interface settings sections

The settings menu now features dedicated subsections for User Interface, Main Menu, and Song Select options. Users can now adjust cursor rotation, menu cursor size, parallax, hold-to-confirm delay, menu tips, intro sequence, background source, seasonal backgrounds, converted beatmaps, random selection algorithm, mod select hotkey style, and background blur directly from these new UI-focused settings pages.

osu.Game/Overlays/Settings/Sections/UserInterface · high confidence

New account creation flow with multi-account warning and email verification

The account creation process has been restructured into a multi-step flow. Users now encounter a warning screen about the one-account-per-person policy before proceeding to the registration form (ScreenEntry), which collects username, email, and password. The flow also includes a new email verification step (ScreenEmailVerification) and a welcome screen (ScreenWelcome) that initiates the process. This replaces the previous single-screen registration method.

osu.Game/Overlays/AccountCreation · high confidence

New accuracy circle visualization on the results screen

The results screen now features a new 'AccuracyCircle' component that visually represents the player's accuracy with a circular progress indicator. This includes a central rank text display and surrounding rank badges (D through X) that are positioned around the circle. The implementation introduces new classes (AccuracyCircle, GradedCircles, RankBadge, RankText) to handle the rendering and animation of these elements, replacing previous logic with a more structured approach to displaying rank-based accuracy feedback.

osu.Game/Screens/Ranking/Expanded/Accuracy · high confidence

New and refactored UI container components

The osu! client introduces several new UI container components to improve layout and interaction handling. A new BeatSyncedContainer fires callbacks on beat changes, while ConstrainedIconContainer automatically scales icons to fit their bounds. ExpandingContainer and HoldToConfirmContainer add expandable panels and hold-to-confirm patterns respectively. LinkFlowContainer is introduced to handle clickable text links, and LogoTrackingContainer manages logo positioning. Existing containers like OsuClickableContainer, OsuFocusedOverlayContainer, and OsuHoverContainer are refactored to support new sound effects, input handling, and state management.

osu.Game/Graphics/Containers · high confidence

New audio filter component with smooth cutoff transitions

A new \AudioFilter\ component has been introduced in the \osu.Game.Audio.Effects\ namespace to manage audio filtering effects. This component exposes a \Cutoff\ property that controls the filter's frequency threshold and includes logic to automatically attach or detach the effect from the audio mixer based on the cutoff value. Additionally, an \ITransformableFilter\ interface and extension methods (\CutoffTo\) are provided, allowing users to smoothly animate the filter's cutoff frequency over time using the framework's transform system.

osu.Game/Audio/Effects · medium confidence

New audio settings controls and automatic offset suggestions

The audio settings section has been refactored with new UI components. A new AudioOffsetAdjustControl allows players to manually adjust the global audio offset, with an automatic suggestion feature that calculates the ideal offset based on the player's last play's hit errors. The VolumeSettings subsection now exposes sliders for master, inactive, effect, and music volumes. Additionally, the AudioDevicesSettings file introduces a legacy audio checkbox for Windows users to toggle between experimental and legacy audio backends.

osu.Game/Overlays/Settings/Sections/Audio · high confidence

New beat divisor and snap grid components for the editor

The editor now features a dedicated BeatDivisorControl for selecting and cycling through beat divisor presets (common, triplets, and custom), alongside new abstract base classes for snap grids (BeatSnapGrid, DistanceSnapGrid, PositionSnapGrid) and their concrete implementations (CircularDistanceSnapGrid, CircularPositionSnapGrid). These components provide visual feedback for beat and distance snapping, allowing users to see and interact with the grid lines and rings that guide object placement and selection in the composition screen.

osu.Game/Screens/Edit/Compose/Components · high confidence

New beatmap UI components for song select and overlays

A suite of new drawable components has been added to the game's UI layer, introducing visual elements for beatmap sets and difficulty. This includes status pills for online beatmap sets, a difficulty icon with an extended tooltip showing star rating and other attributes, a spectrum display for grouping difficulties by ruleset, and a download button with progress tracking. These components provide the visual foundation for displaying beatmap information, download states, and difficulty statistics in the song select and related overlays.

osu.Game/Beatmaps/Drawables · high confidence

New beatmap card UI components

The \osu.Game/Beatmaps/Drawables/Cards\ directory now contains a complete set of new UI components for displaying beatmap sets in a modern card-based layout. This includes the abstract \BeatmapCard\ base class and concrete implementations (\BeatmapCardNano\, \BeatmapCardNormal\, \BeatmapCardExtra\) that support different display sizes. The update introduces a collapsible card state, allowing users to expand cards to view additional details like difficulty lists and statistics. It also adds a download progress bar, a thumbnail component with a play button, and helper components for displaying extra information rows and difficulty lists. These components are designed to replace older, less flexible UI elements with a more consistent and interactive experience.

osu.Game/Beatmaps/Drawables/Cards · high confidence

New beatmap verification checks for audio, backgrounds, and timing

The editor now includes several new verification checks to improve beatmap quality. A new \CheckAudioQuality\ ensures audio files meet bitrate requirements, while \CheckAudioPresence\ and \CheckBackgroundPresence\ verify that required files exist. Additional checks detect delayed hitsounds, concurrent hit objects, and inconsistent metadata or settings across difficulties. The system also validates break timing, background resolution, and audio-in-video consistency, providing more detailed feedback on potential issues during editing.

osu.Game/Rulesets/Edit/Checks · high confidence

New classic and sequential mod hotkey styles for the mod select overlay

The mod select overlay now supports two distinct hotkey interaction styles: a 'Classic' style that maps specific keyboard keys to specific mods (e.g., Q for Easy, W for No Fail), and a 'Sequential' style that cycles through mods in each difficulty column using the top row of the keyboard. This change introduces new handler classes (\ClassicModHotkeyHandler\, \SequentialModHotkeyHandler\) and an enum (\ModSelectHotkeyStyle\) to configure this behavior, allowing users to choose between the traditional 1:1 keybindings and a more modern sequential navigation method.

osu.Game/Overlays/Mods/Input · high confidence

New collection management interface and data model

The game now features a dedicated 'Manage Collections' dialog for organizing beatmaps. This update introduces a new \BeatmapCollection\ data model that stores beatmap MD5 hashes rather than full object references, improving data persistence and import handling. The UI includes a scrollable list of collections with search filtering, inline renaming, and deletion confirmation dialogs. Users can now create, rename, and delete collections directly from this interface, with the list automatically scrolling to highlight newly created items.

osu.Game/Collections · high confidence

New comment reply and expansion UI components

The comments overlay now features a suite of new UI components for managing reply visibility and loading states. A new \ChevronButton\ provides a toggleable chevron icon that scales and rotates to indicate expanded/collapsed states. The \CommentRepliesButton\ abstract base class introduces a styled button with a background, text, and icon, supporting hover color transitions and text visibility toggling. Specific implementations include \ShowRepliesButton\ for displaying the reply count and expanding/collapsing the reply list, \LoadRepliesButton\ for loading states, and \ShowMoreRepliesButton\ for pagination or additional content. These components replace previous hardcoded or less structured approaches, offering consistent styling, localization support, and interactive feedback for users navigating comment threads.

osu.Game/Overlays/Comments/Buttons · high confidence

New configuration enums and settings infrastructure

The game introduces a suite of new configuration enums to define user preferences, including BackgroundSource, DiscordRichPresenceMode, HUDVisibilityMode, IntroSequence, RandomSelectAlgorithm, ScalingMode, ScreenshotFormat, ScrollVisualisationMethod, SeasonalBackgroundMode, and ToolbarClockDisplayMode. These are supported by new configuration manager classes like InMemoryConfigManager, StorageConfigManager, and the updated OsuConfigManager, alongside helper classes like ModSettingChangeTracker and SessionStatics to manage transient and persistent settings.

osu.Game/Configuration · high confidence

New date display and tooltip components

Added \DrawableDate\ and \DateTooltip\ to render and display relative dates in the game. \DrawableDate\ automatically updates to show humanized relative time (e.g., "2 hours ago") and provides a tooltip showing the exact date and time. The tooltip is styled with a grey background and blue time text, and the date text is bold while the time text is regular weight.

osu.Game/Graphics · high confidence

New debug settings for memory management and stable imports

A new 'Debug' settings section has been added to the game's options, introducing controls for memory management and legacy imports. The 'Memory' subsection allows users to manually trigger garbage collection, clear all caches, and switch the garbage collector's latency mode between 'Default' and 'Interactive'. It also provides buttons to manually compact the database realm and temporarily block realm operations for maintenance, with a 10-second safety timeout to prevent permanent blocking. Additionally, a 'Batch Import' subsection offers direct buttons to import beatmaps, skins, collections, and scores from a stable installation of the game.

osu.Game/Overlays/Settings/Sections/DebugSettings · high confidence

New editor UI components for playback, timing, and sidebar

The editor now features a new bottom bar with playback controls (play/pause, speed adjustment), a timestamp display showing BPM and progress percentage, and a new sidebar for sectioned content. These components provide a more structured and visually consistent editing experience.

osu.Game/Screens/Edit/Components · high confidence

New editor radio button components

Added new \EditorRadioButton\ and \EditorRadioButtonCollection\ components in the edit screen to render and manage a list of radio buttons. Each button displays a label, an optional icon, and supports selection state and disabling. The underlying \RadioButton\ model now uses a \string\ for the label and includes a \TooltipText\ property for hover descriptions, improving the editor's tool selection interface.

osu.Game/Screens/Edit/Components/RadioButtons · high confidence

New extended statistics panel on the results screen

The results screen now features a new, scrollable statistics panel that displays detailed breakdowns of player performance. This includes a hit timing distribution graph, an average hit error metric, an unstable rate statistic, and a performance breakdown chart. The panel is designed to be more informative and visually distinct, providing players with deeper insights into their gameplay data.

osu.Game/Screens/Ranking/Statistics · high confidence

New extension methods for collections, UI elements, and data models

The osu.Game.Extensions namespace now includes several new static extension classes to centralize common logic. CollectionExtensions adds an efficient AddRange method for lists. DrawableExtensions provides utilities for shaking UI elements, converting screen-space deltas, and applying game-wide clocks. LanguageExtensions handles culture code conversion and parsing. ModelExtensions introduces methods for generating display strings, validating filenames, and comparing online IDs across various game models. NumberFormattingExtensions standardizes numeric and percentage formatting. StringDehumanizeExtensions offers case-conversion helpers. TaskExtensions introduces sequential task chaining. TimeDisplayExtensions formats durations and relative times. TypeExtensions provides invariant type identification. WebRequestExtensions adds pagination cursor support.

osu.Game/Extensions · high confidence

New form control components for settings and editor screens

A new set of 'form' style UI controls has been introduced in the V2 graphics namespace, including FormButton, FormCheckBox, FormDropdown, FormFileSelector, FormNumberBox, FormPasswordTextBox, FormSliderBar, and FormColourPalette. These components provide a consistent, modernized appearance and behavior for settings, editor setup, and other configuration screens, featuring improved visual feedback, standardized styling via FormControlBackground, and better integration with the OverlayColourProvider.

osu.Game/Graphics/UserInterfaceV2 · high confidence

New gameplay clock and frame-stability architecture

The gameplay clock and frame-stability logic have been refactored into a new \FrameStabilityContainer\ and \IGameplayClock\ interface, providing a stable time source for gameplay components. This change introduces a dedicated \DrawableRulesetDependencies\ container to manage ruleset-specific resources (textures, samples, shaders) and centralizes the handling of replay frames and audio adjustments, ensuring consistent timing and improved performance during gameplay.

osu.Game/Rulesets/UI · high confidence

New gameplay leaderboard system for real-time score tracking

The game now features a new internal structure for displaying live leaderboards during gameplay. This change introduces a dedicated \GameplayLeaderboardScore\ model and a provider interface (\IGameplayLeaderboardProvider\) that feeds live score data (total score, accuracy, combo) to the UI. Specific implementations are provided for solo play, multiplayer, and playlist modes, ensuring that the local player's score updates in real-time alongside other competitors or friends.

osu.Game/Screens/Play/Leaderboards · high confidence

New graphics settings sections for layout, renderer, screenshots, and video

The graphics settings have been reorganized into dedicated subsections: LayoutSettings (for window/monitor/resolution/scaling), RendererSettings (for selecting the graphics renderer, frame limiter, threading mode, and FPS display), ScreenshotSettings (for format and cursor capture), and VideoSettings (for hardware video decoding and acceleration). This restructure groups related options together, making it easier for users to find and adjust graphics-related preferences.

osu.Game/Overlays/Settings/Sections/Graphics · high confidence

New grouping and sorting options in song select

The song select screen now supports grouping beatmaps by various attributes including favourites, collections, ranked status, and source, while also offering new sorting modes for last played, date submitted, and source. These changes introduce new enum types (GroupMode, SortMode) and an Operator enum for search filters, enabling users to organize and filter their library in more ways.

osu.Game/Screens/Select/Filter · high confidence

New high-performance session management interface

A new interface, IHighPerformanceSessionManager, has been introduced in the osu.Game.Performance namespace. This interface allows for the creation of temporary high-performance sessions, which on desktop platforms enable low-latency garbage collection modes to avoid performance spikes during gameplay.

osu.Game/Performance · high confidence

New hit error meter UI components

Added two new hit error meter implementations for the gameplay HUD: BarHitErrorMeter, which displays a vertical bar with adjustable thickness, colour bar visibility, moving average arrow, and centre marker style; and ColourHitErrorMeter, which shows a stack of coloured shapes representing recent judgements with configurable count, spacing, and shape style. Both meters are skinnable, support pooling for performance, and expose settings for visual customization.

osu.Game/Screens/Play/HUD/HitErrorMeters · high confidence

New hit object type interfaces for improved game logic separation

Added a suite of new interfaces in the \osu.Game.Rulesets.Objects.Types\ namespace to better define hit object capabilities. These include \IHasColumn\ for column-based gameplay, \IHasCombo\ and \IHasComboInformation\ to separate combo state and index tracking from the object itself, \IHasDisplayColour\ for editor timeline visualization, \IHasDistance\ for positional length, \IHasDuration\ for end time and duration, \IHasGenerateTicks\ to control slider tick generation, \IHasHold\ for legacy hold notes, \IHasPath\ and \IHasPathWithRepeats\ for curve and path data, \IHasPosition\ and its X/Y counterparts for coordinates, \IHasRepeats\ for slider node samples, \IHasSliderVelocity\ for speed multipliers, \IHasTimePreempt\ for approach speed timing, and \PathType\ to define spline types (Catmull, B-spline, Linear, Perfect curve).

osu.Game/Rulesets/Objects/Types · high confidence

New home page news feed components

Added new UI components for the home page news feed, including FeaturedNewsItemPanel, NewsGroupItem, NewsItemGroupPanel, NewsTitleLink, and ShowMoreNewsPanel. These changes introduce a redesigned news display on the home dashboard, featuring grouped news items with date headers, title links, and a 'See More' button to navigate to the full news page.

osu.Game/Overlays/Dashboard/Home/News · high confidence

New input tracking and keybinding storage components

Added new components to handle input state and keybinding persistence. The \IdleTracker\ and \GameIdleTracker\ classes track user inactivity based on keyboard, mouse, and global actions, with the game-specific tracker excluding background mouse movements. The \ConfineMouseTracker\ manages mouse confinement settings, supporting a new \OsuConfineMouseMode\ enum (Never, DuringGameplay, Always) that overrides the framework's confine mode based on the user's playing state. Additionally, \RealmKeyBindingStore\ provides a Realm-backed implementation for storing and retrieving keybindings, including logic to deduplicate conflicting bindings and insert default keybindings for all rulesets.

osu.Game/Input · high confidence

New interactive buttons and panels on the results screen

The results screen now features a new UI for managing beatmap collections and user favourites. A CollectionButton and its associated popover allow users to add or remove beatmaps from their local collections. A FavouriteButton enables users to like or unlike a beatmap set directly from the results screen, with visual feedback and API updates. Additionally, a RetryButton provides a quick way to restart the beatmap or replay, and a ReplayDownloadButton handles downloading or playing back replays. The screen also introduces a ScorePanel for displaying individual score details, a ScorePanelList to manage the list of scores, and a UserTagControl for managing and voting on user tags associated with the score.

osu.Game/Screens/Ranking · high confidence

New interactive buttons for beatmap cards

The beatmap card UI has been refactored to use a new set of dedicated button components for download, favourite, play, and navigation actions. Users will see a play button that initiates a preview track with a loading spinner, a download button that tracks and displays download progress, a favourite button that updates the heart icon and count, and a 'go to beatmap' button that navigates to the beatmap details. These components replace the previous inline implementations, providing more consistent styling, touch input support, and state management for each action.

osu.Game/Beatmaps/Drawables/Cards/Buttons · high confidence

New interface for replay frame conversion

A new interface, IConvertibleReplayFrame, has been introduced to standardize how replay frames are converted from legacy formats. This interface defines methods to populate a replay frame from a LegacyReplayFrame and to export it back, facilitating the migration and storage of replay data in a more structured way.

osu.Game/Rulesets/Replays/Types · medium confidence

New latency testing components for visual feedback

Added LatencyCursorContainer, LatencyMovableBox, and LatencySampleComponent to the utility sample components. The cursor container now displays a latency indicator that changes color based on mouse button state, while the movable box allows users to test input latency by moving a square with keyboard or mouse, with visual feedback on key presses.

osu.Game/Screens/Utility/SampleComponents · medium confidence

New leaderboard components for score display and management

The osu.Game/Online/Leaderboards directory now contains a complete set of new classes for rendering and managing leaderboards, including \Leaderboard\, \LeaderboardManager\, \LeaderboardScore\, \DrawableRank\, \UpdateableRank\, and \UserTopScoreContainer\. These components handle fetching, sorting, and displaying score lists, user top scores, and rank badges with updated visual styling and localisation support.

osu.Game/Online/Leaderboards · high confidence

New login and authentication UI components

The login overlay now features dedicated forms for standard username/password login, two-factor authentication (including TOTP and email verification), and user status selection. Users will see a structured login panel with error handling, a second-factor code input, and a dropdown to manage online status.

osu.Game/Overlays/Login · high confidence

New main menu button system and intro sequence

The main menu now features a redesigned button system that dynamically shows or hides buttons based on the current state (e.g., top-level, play, edit, or multiplayer). This includes a new \ButtonArea\ and \ButtonSystem\ that manage the layout and visibility of menu options like Solo, Multiplayer, and Settings. Additionally, the game now includes a new \IntroScreen\ that plays an introductory animation and sound effect before transitioning to the main menu, improving the initial game load experience.

osu.Game/Screens/Menu · high confidence

New matchmaking request and response models for duels and lobby joining

Added new message-pack serializable request and response classes to the matchmaking system: MatchmakingAcceptDuelRequest, MatchmakingIssueDuelRequest, and MatchmakingJoinLobbyRequest, along with their corresponding empty response counterparts (MatchmakingAcceptDuelResponse, MatchmakingIssueDuelResponse, MatchmakingJoinLobbyResponse). These models provide the data structures required for players to accept duels, issue duels, and join matchmaking lobbies.

osu.Game/Online/Matchmaking/Requests, osu.Game/Online/Matchmaking/Responses · high confidence

New mod preset management and mod attribute display in the mod select overlay

The mod select overlay now includes a dedicated column for managing user-created mod presets, allowing players to save, edit, and delete their preferred mod combinations. A new 'Add Preset' button and associated popovers facilitate the creation and modification of these presets. Additionally, the overlay now displays beatmap attributes (such as BPM and star rating) and shows tooltips indicating which mods are incompatible with the current selection, providing clearer feedback on mod interactions.

osu.Game/Overlays/Mods · high confidence

New mod settings control and bindable infrastructure

A new \DifficultyAdjustSettingsControl\ UI component and \DifficultyBindable\ helper class have been introduced to manage difficulty adjustment settings. This change provides a standardized way for mods to expose and adjust numeric settings (like approach rate or drain rate) with support for extended limits and precision control. Additionally, a suite of new mod interfaces (such as \IApplicableToBeatmap\, \IApplicableToDrawableHitObject\, and \IApplicableToScoreProcessor\) has been added to define how mods apply changes to various game systems.

osu.Game/Rulesets/Mods · high confidence

New multiplayer match control and countdown UI

The multiplayer match footer now features a dedicated \MatchStartControl\ that manages the ready button, countdown button, and spectate button. Users can now start or abort matches, initiate and cancel timed countdowns with audio cues, and spectate rooms with automatic download support. The settings overlay allows editing room name, game type, queue mode, and password, while the mod selection overlay validates and debounces mod changes. These changes consolidate the match state management and improve the responsiveness and clarity of the multiplayer lobby and in-match UI.

osu.Game/Screens/OnlinePlay/Multiplayer/Match · high confidence

New multiplayer room and playlist score submission models

Added new client-side models and API request classes for multiplayer rooms, including \Room\, \PlaylistItem\, \MultiplayerPlaylistItem\, and \MultiplayerScore\. These changes introduce support for submitting scores to multiplayer rooms, fetching room leaderboards, and managing room states. The \Room\ model now includes properties for password, duration, start/end dates, and participant counts. The \PlaylistItem\ and \MultiplayerPlaylistItem\ classes handle playlist data, including required and allowed mods, freestyle settings, and expiration status. New request classes like \CreateRoomRequest\, \JoinRoomRequest\, \SubmitRoomScoreRequest\, and \GetRoomLeaderboardRequest\ enable interaction with the multiplayer server. Additionally, \ItemAttemptsCount\ and \PlaylistAggregateScore\ track user attempts and aggregate scores for playlist items.

osu.Game/Online/Rooms · high confidence

New online multiplayer components for room creation and management

The online multiplayer screen now includes dedicated components for creating and managing rooms, including a keyboard-accessible CreateRoomButton, a MatchChatDisplay that automatically joins and leaves the multiplayer channel, and a MatchLeaderboard that fetches and displays scores. Additionally, the UI provides a MatchTypePicker for selecting game modes, a RoomAvailabilityPicker for privacy settings, and a RoomSettingsOverlay for configuring room details, all of which contribute to a more integrated and accessible multiplayer experience.

osu.Game/Screens/OnlinePlay/Match/Components · high confidence

New online play room components

Added a suite of new UI components for the online play system, including \BeatmapTitle\, \DrawableGameType\, \OnlinePlayBackgroundScreen\, \ParticipantCountDisplay\, \ParticipantsDisplay\, \ParticipantsList\, \PlaylistHeader\, \ReadyButton\, \RoomLocalUserInfo\, \StarRatingRangeDisplay\, and \StatusColouredContainer\. These components handle the display of room metadata, participant lists, star rating ranges, and status-based coloring, providing the visual interface for multiplayer rooms.

osu.Game/Screens/OnlinePlay/Components · high confidence

New per-round results screen for matchmaking matches

A new SubScreenRoundResults component has been added to display individual round results during the matchmaking stage of online play. This screen fetches and renders score panels for each player in a round, allowing users to view detailed results for specific rounds within a match.

osu.Game/Screens/OnlinePlay/Matchmaking/Match/RoundResults · high confidence

New placeholder components for online states

Added new UI components in the Online namespace to handle online-related states: a base Placeholder class, a MessagePlaceholder for displaying error or informational text, a ClickablePlaceholder for interactive states, and a LoginPlaceholder that triggers the login overlay. These components support localisation and provide consistent styling for online connectivity issues.

osu.Game/Online/Placeholders · high confidence

New profile header components for daily challenges, matchmaking, and user statistics

The profile overlay now features dedicated components for displaying daily challenge statistics, matchmaking stats, and extended user statistics. Users can see their daily challenge play count and completion status, view matchmaking performance metrics, and access a new 'Hits Per Play' statistic alongside other detailed performance data. These components integrate with the existing profile header to provide richer, localized insights into user activity and achievements.

osu.Game/Overlays/Profile/Header/Components · high confidence

New rankings table components for country, score, and performance data

The Rankings/Tables directory now contains new implementations for displaying country statistics, user scores, and performance metrics. The base RankingsTable class provides the layout and header logic, while specific subclasses (CountriesTable, ScoresTable, PerformanceTable) render the respective data. Additionally, the UserBasedTable subclass introduces a visual fade-out effect for inactive player rows in the user ranking table.

osu.Game/Overlays/Rankings/Tables · high confidence

New scrolling algorithm interface and implementations

The scrolling logic for the game has been refactored to use a new \IScrollAlgorithm\ interface, which defines a standardized contract for scrolling calculations. This change introduces three concrete implementations: \ConstantScrollAlgorithm\ for uniform scrolling, \OverlappingScrollAlgorithm\ for handling overlapping hit objects with variable speeds, and \SequentialScrollAlgorithm\ for sequential hit object timing. These algorithms now expose a \TimeAt\ method to calculate the time corresponding to a specific spatial position, enabling more accurate and flexible scrolling behavior for different gameplay modes.

osu.Game/Rulesets/UI/Scrolling/Algorithms · high confidence

New serialization converters for improved type handling

Added two new JSON serialization converters: a SnakeCaseStringEnumConverter that formats enum values as snake\_case strings, and a TypedListConverter that serializes lists of objects alongside a type lookup table to preserve original types during deserialization. The TypedListConverter also enforces type inheritance checks to prevent instantiation of unrelated types, addressing previous serialization issues.

osu.Game/IO/Serialization/Converters · high confidence

New skinnable HUD and display components

Added new skinnable components for the gameplay HUD and skin editor: ArgonJudgementCounter and ArgonJudgementCounterDisplay, which render hit results with configurable wireframes, label visibility, and display modes (e.g., misses only). Also added BeatmapAttributeText to display beatmap attributes (e.g., star rating, BPM, length) with mod-inclusive values and a customizable template. A generic TextElement and a test bed BigBlackBox are also included. These components support font, colour, and layout customisation via settings.

osu.Game/Skinning/Components · high confidence

New sprite text and drawable components for UI

Added several new UI components in the Sprites namespace: a reusable GlowingDrawable base class and GlowingSpriteText for rendering text with a glow effect; a TruncatingSpriteText that automatically displays the full text in a tooltip when truncated; a SpriteIconWithTooltip and SpriteTextWithTooltip for attaching tooltips to icons and text; a SizePreservingSpriteText container that expands to fit content but never shrinks; and a LogoAnimation sprite with a custom vertex shader for rendering the logo animation. These changes introduce new capabilities for text display, tooltips, and animations in the game's UI.

osu.Game/Graphics/Sprites · high confidence

New toolbar with clock, music, and overlay toggles

The game now features a new toolbar at the top of the screen, replacing the previous layout. This toolbar includes a clock display (with analog, digital, and runtime options), a ruleset selector, and buttons for home, settings, news, changelog, wiki, rankings, beatmap listing, chat, social, music, and notifications. The toolbar is toggleable and respects user preferences for visibility. The clock display supports 12/24 hour formats and shows the current game time. The music button includes a volume control. The toolbar also handles keyboard shortcuts for various actions.

osu.Game/Overlays/Toolbar · high confidence

New tournament UI components for team and match displays

Added a suite of new UI components for the tournament client, including a control panel, date text box, and various team display elements (headers, titles, seeds, flags, and player lists). These components support the updated visual design for team intros, match pairings, and the song bar, providing a more structured and visually consistent interface for tournament organizers and viewers.

osu.Game.Tournament · high confidence

New user profile and presence components

The user interface for displaying user information has been significantly expanded with new components. A \Badge\ model and \Medal\ class support displaying user achievements and icons. Country representation is standardized via a \CountryCode\ enum and \CountryStatistics\ model. User presence and activity are now tracked via \UserPresence\ and \UserActivity\ (including specific states like \InSoloGame\, \EditingBeatmap\, etc.), allowing the UI to show what a user is doing. Several new UI panels are introduced: \UserPanel\ serves as the base for all user displays, with specific implementations for \UserGridPanel\ (cards), \UserListPanel\ (list items), \UserBrickPanel\ (compact view), and \UserRankPanel\ (login overlay). These panels display avatars, flags, ranks, and status messages. Additionally, a \ConfirmBlockActionDialog\ provides a confirmation step before blocking or unblocking users.

osu.Game/Users · high confidence

New utility classes for difficulty calculation

Added DiffUtils, a static class providing mathematical helper functions for difficulty calculations, including BPM conversion, logistic and bell curve functions, vector norms, smoothstep interpolation, and error functions. Also added ReverseQueue, a generic queue implementation that allows indexed access to items in reverse order of insertion, featuring a custom enumerator to avoid allocations during enumeration.

osu.Game/Rulesets/Difficulty/Utils · high confidence

New visual components for the health display

The health display now uses dedicated background and bar components (ArgonHealthDisplayBackground and ArgonHealthDisplayBar) to render the health bar with custom shaders, allowing for rounded corners, glow effects, and color customization.

osu.Game/Screens/Play/HUD/ArgonHealthDisplayParts · medium confidence

New visual components for the v2 file selection interface

The file selection UI has been updated with new internal components to support the v2 interface, including a BackgroundLayer for hover effects, a HiddenFilesToggleCheckbox for filtering, and specific directory display classes (OsuDirectorySelectorDirectory, OsuDirectorySelectorParentDirectory, and OsuDirectorySelectorBreadcrumbDisplay) that define the visual styling and layout of the directory navigation breadcrumbs and list items.

osu.Game/Graphics/UserInterfaceV2/FileSelection · medium confidence

New volume control UI components

Added new components for the volume overlay: GlobalScrollAdjustsVolume to handle global scroll-based volume adjustment, MasterVolumeMeter for the main volume slider, MuteButton for muting, and VolumeMeter as the base class for volume meters. These files implement the visual and interactive elements of the volume control interface.

osu.Game/Overlays/Volume · high confidence

New wiki overlay with sidebar, header, and article rendering

The wiki overlay has been rebuilt with a new header, sidebar, and article page components. Users will see a header with a breadcrumb navigation and a GitHub edit link, a sidebar containing a table of contents that allows jumping to specific sections, and an article page that renders markdown content with a sidebar container. The main page displays panels and a blurb, while the sidebar dynamically updates based on the current wiki page's headings.

osu.Game/Overlays/Wiki · high confidence

Persist custom keybindings to the database

Custom keybindings are now saved to the local database, meaning user preferences for keybindings will be retained across sessions. This change introduces a new database-backed storage system for keybindings, ensuring that any changes made in the settings menu are remembered and applied automatically on subsequent launches.

osu.Game/Input/Bindings · high confidence

Redesign of the news sidebar with collapsible month sections and a year selection panel

The news sidebar has been restructured to improve navigation and readability. A new YearsPanel component allows users to select a specific year, with the current year highlighted. Below the year selector, news posts are now grouped into collapsible MonthSection components, which display the month and year in the header and can be expanded or collapsed to reveal the list of posts. This replaces the previous flat list of posts with a more organized, hierarchical view.

osu.Game/Overlays/News/Sidebar · high confidence

Redesign the editor setup screen with new sections and controls

The editor setup screen has been restructured into distinct sections: Metadata, Design, Difficulty, Colours, and Resources. Each section provides specific controls for editing beatmap properties, such as adjusting difficulty sliders, managing combo colours, and selecting audio, background, and video files. The new interface includes a file selector that allows users to apply resource changes to all difficulties or just the current one, and the layout adapts to show multiple columns on wider screens.

osu.Game/Screens/Edit/Setup · high confidence

Redesigned beatmap listing overlay with new filter and sort controls

The beatmap listing overlay has been completely restructured with new components for search, filtering, and sorting. Users can now filter beatmaps by category, genre, language, extra features (video/storyboard), score rank, and play status. The header includes a new search control, a sort direction toggle, and a card size tab control. The sort control dynamically adjusts available criteria based on the selected category, and the filter rows support multi-selection for items like score ranks and extra features. The 'Featured Artists' filter includes a disclaimer dialog and persists its state in the game config.

osu.Game/Overlays/BeatmapListing · high confidence

Redesigned beatmap set overlay with new header and stats components

The beatmap set overlay has been restructured with a new header section that includes a cover image, title, artist, and author information. A new 'Details' section displays basic stats (length, BPM, circle/slider counts), advanced stats (star rating, accuracy, etc.), and user ratings. The header also features a ruleset selector to filter beatmaps by game mode, and a difficulty picker for selecting specific beatmaps within the set. Additional components include a beatmap availability indicator, a fail/retry graph, and badges for explicit content and featured artists.

osu.Game/Overlays/BeatmapSet · high confidence

Redesigned changelog overlay with new component structure

The changelog overlay has been completely rewritten to use a new set of components (ChangelogBuild, ChangelogContent, ChangelogEntry, ChangelogHeader, ChangelogListing, ChangelogMarkdownContainer, ChangelogSingleBuild, ChangelogSupporterPromo, ChangelogUpdateStreamControl, and ChangelogUpdateStreamItem). This introduces a more structured and modular approach to displaying changelog entries, update streams, and supporter promotions. Users will see a cleaner, more consistent layout for browsing game updates, with improved handling of build details, entry types, and stream navigation.

osu.Game/Overlays/Changelog · high confidence

Redesigned comments overlay with new components

The comments overlay has been completely rebuilt with a new set of components including CancellableCommentEditor, CommentAuthorLine, CommentEditor, CommentMarkdownContainer, CommentReportButton, CommentsContainer, CommentsHeader, and others. This introduces a modernized UI for viewing, replying to, and managing comments, including support for pinned comments, sorting, and reporting.

osu.Game/Overlays/Comments · high confidence

Redesigned editor timeline with new blueprint and control point pieces

The editor timeline has been completely redesigned, introducing new components for displaying hit objects, sample points, difficulty points, and breaks. The \CentreMarker\ now features a custom triangle-based visual with smooth edges. Hit objects are represented by \HitObjectPointPiece\ and its subclasses (\NodeSamplePointPiece\, \SamplePointPiece\), which support popovers for editing sample banks and volumes. Difficulty points are shown via \DifficultyPointPiece\ with a dedicated popover for adjusting slider velocity. Breaks are rendered as \TimelineBreak\ components with draggable handles. The \Timeline\ and \TimelineArea\ classes have been updated to host these new pieces, with the \TimelineBlueprintContainer\ managing the selection and dragging of these blueprints. This change alters the visual appearance and interaction model of the editor's timeline, providing more granular control over beatmap elements directly from the timeline view.

osu.Game/Screens/Edit/Compose/Components/Timeline · high confidence

Redesigned first-run setup wizard with new screens and improved import flow

The first-run setup has been completely redesigned into a multi-step wizard, introducing dedicated screens for welcoming the user, selecting a language, adjusting the UI scale, choosing between standard and classic default settings, and importing content from the previous stable version. A new \ProgressRoundedButton\ component provides visual feedback during background downloads and imports. The import screen now supports hard links on Windows to save disk space, with clear messaging about file duplication on other platforms. The behavior screen allows users to apply standard or classic defaults and browse settings sections. The UI scale screen offers a live preview of the interface at the selected scale. These changes replace the previous single-screen setup with a more guided, step-by-step onboarding experience.

osu.Game/Overlays/FirstRunSetup · high confidence

The friends list overlay has been reworked to support sorting by last visit, rank, or username, and offers three display styles: card, list, and brick. A search textbox allows users to filter their friends, and the list dynamically updates to reflect online, offline, or all statuses. The new components include FriendDisplay, FriendsList, and associated controls, providing a more flexible and user-friendly way to manage and view friends.

osu.Game/Overlays/Dashboard/Friends · high confidence

Redesigned matchmaking room UI with new player panels and stage display

The matchmaking room view has been completely overhauled with new components: a \PlayerPanel\ that displays user avatars, ranks, and download progress; a \PlayerPanelOverlay\ that manages the layout of these panels in grid or split views; and a \StageDisplay\ that visualizes the current round, stage, and countdown timer. The main \ScreenMatchmaking\ screen now integrates these elements, providing a more structured and visually distinct experience for players waiting in a matchmaking lobby.

osu.Game/Screens/OnlinePlay/Matchmaking/Match · high confidence

Redesigned summary timeline with dedicated parts for bookmarks, breaks, control points, kiai, and markers

The editor's summary timeline has been restructured into distinct, reusable components for each visualisation type. Users will see improved rendering of bookmarks, breaks, control points, kiai sections, and the current position marker. The control point display now groups points to avoid visual redundancy, ensuring a cleaner timeline view. Additionally, the marker now supports direct seeking via drag or click, with debounced updates to improve performance.

osu.Game/Screens/Edit/Components/Timelines/Summary/Parts · medium confidence

Redesigned timing screen with new control point table and adjustment controls

The editor's timing screen has been completely redesigned, introducing a new \ControlPointTable\ for managing control point groups, alongside dedicated sections for group, timing, and effect attributes. The update adds a \DiscreteAdjustmentControl\ for precise BPM and offset adjustments, a \MetronomeDisplay\ for visual and audio feedback, and a \LabelledTimeSignature\ component for editing time signatures. These changes provide a more integrated and visually consistent experience for editing beatmap timing.

osu.Game/Screens/Edit/Timing · high confidence

Reorganize and expand gameplay settings

The gameplay settings have been reorganized into dedicated subsections (Audio, Background, Beatmap, General, HUD, Input, and Mods) to improve discoverability and structure. This change introduces several new user-facing options, including the ability to adjust positional audio strength, control background dimming and blur, toggle the visibility of the health bar and key overlay, and customize cursor behavior during touch input. Additionally, users can now adjust the first object's visibility in the Hidden mod and enable the 'hold for menu' button permanently.

osu.Game/Overlays/Settings/Sections/Gameplay · high confidence

Reorganize and introduce new player settings components

The player settings interface has been restructured into a new \PlayerSettings\ directory, introducing dedicated settings groups for audio, input, playback, and visual adjustments. This includes a new \BeatmapOffsetControl\ for adjusting beatmap timing, an \InputSettings\ group for gameplay input options, and a \PlaybackSettings\ group for replay controls. The \VisualSettings\ group now includes controls for background dimming, blur, storyboards, skins, and combo colour normalization. These changes provide a more organized and feature-rich settings experience during gameplay.

osu.Game/Screens/Play/PlayerSettings · high confidence

Replaced the legacy chat system with a new channel-based architecture

The chat system has been refactored from a single global channel model to a multi-channel architecture. Users can now join, leave, and switch between multiple channels (public, private, multiplayer, etc.) simultaneously. This change introduces a \ChannelManager\ to handle channel state, a \Channel\ class to represent individual chat rooms, and a new \IChatClient\ interface for communication. The old \ChatOverlay\ and \ChatManager\ have been replaced by \ChannelManager\ and \Channel\ classes, enabling better organization of different chat contexts like private messages, public channels, and multiplayer rooms.

osu.Game/Online/Chat · high confidence

Storyboards now render video, animation, and sprite elements during gameplay

The \osu.Game/Storyboards/Drawables\ directory introduces the drawable components required to render storyboards in-game. This includes \DrawableStoryboard\ as the container, \DrawableStoryboardSprite\ for static images, \DrawableStoryboardAnimation\ for animated sprites, \DrawableStoryboardVideo\ for video elements, and \DrawableStoryboardSample\ for audio cues. These components implement support for flipping, vector scaling, and skin-based texture loading, allowing full storyboard playback during gameplay.

osu.Game/Storyboards/Drawables · high confidence

Markdown footnotes now display styled, clickable links that allow users to navigate bidirectionally between the main text and the footnote section. The new OsuMarkdownFootnoteLink and OsuMarkdownFootnoteBacklink components provide visual feedback on hover and scroll the content into view when clicked. A custom tooltip displays the full footnote text on hover, and the footnote group styling ensures consistent presentation.

osu.Game/Graphics/Containers/Markdown/Footnotes · high confidence

Triangles skin provides custom performance points and unstable rate counters

The Triangles skin now includes dedicated UI components for displaying performance points and unstable rate during gameplay. These new counters feature a blue color scheme and apply a fade-to-0.3 alpha effect when the score is invalid, ensuring consistent visual feedback across the skin's HUD elements.

osu.Game/Skinning/Triangles · high confidence

Removals

Removal of obsolete test and menu components

The obsolete FieldTest and FontTest classes, along with the MainMenu and ButtonSystem components, have been removed from the game modes. This cleanup eliminates unused code and simplifies the main menu structure.

osu.Game/GameModes · high confidence

Architecture

New database infrastructure and interfaces for model management

The osu.Game/Database directory now includes a suite of new interfaces and classes that establish the foundation for the upcoming Realm database integration. This includes the \BackgroundDataStoreProcessor\ to handle startup data migrations and updates, alongside new interfaces like \IModelImporter\, \IModelManager\, and \ICanAcceptFiles\ to standardize how models are imported and managed. The addition of \IHasGuidPrimaryKey\ and \IHasOnlineID\ provides a consistent way to identify models, while \ImportParameters\ and \ExternalEditOperation\ support more flexible import workflows and external editing capabilities.

osu.Game/Database · high confidence

Refactored user profile header into modular components

The user profile header has been split into separate components (BadgeHeaderContainer, BannerHeaderContainer, BottomHeaderContainer, CentreHeaderContainer, DetailHeaderContainer, and TopHeaderContainer) to improve code organization and maintainability. Each component now handles a specific section of the profile header, making the codebase easier to navigate and modify.

osu.Game/Overlays/Profile/Header · high confidence

Behavioural changes

Add support for smoke state in legacy replay frames

Legacy replay frames now include a 'Smoke' state, allowing replays to record and replay the smoke button press. This is achieved by adding a new 'Smoke' flag to the 'ReplayButtonState' enum and exposing a 'Smoke' property on 'LegacyReplayFrame' to indicate when the smoke button is active during a replay.

osu.Game/Replays/Legacy · high confidence

Block Windows key during gameplay and improve file associations

The Windows key is now blocked while the game is active and playing, preventing accidental activation of the Start menu or other OS shortcuts during gameplay. Additionally, the application now registers file associations for .osz, .olz, .osr, and .osk files, as well as URI handlers (osu://, osump://), with localized descriptions and icons, ensuring proper integration with the Windows shell.

osu.Desktop/Windows · high confidence

Complete overhaul of the notification system with new types and behaviors

The notification overlay has been completely redesigned, introducing new notification types including ProgressNotification for tracking tasks, OutageNotification for server status, ScoreSubmissionFailureNotification for failed submissions, and UserAvatarNotification for user-related alerts. The base Notification class now supports transient, critical, and important states, with fling-to-dismiss gestures, sound effects, and a clear-all button. Progress notifications automatically generate completion notifications and support cancellation. The system now exposes unread counts, allows custom icons and colors, and handles localisation for all text.

osu.Game/Overlays/Notifications · high confidence

Enforce safer coding practices via new BannedSymbols and globalconfig rules

The codebase now enforces stricter coding standards through a new \CodeAnalysis/BannedSymbols.txt\ and \osu.globalconfig\. Developers are prohibited from using unsafe or culture-dependent APIs such as \Task.Wait()\, \Task.Result\, \Humanizer\ string methods, and \TagLib.File.Create()\, with the configuration explicitly directing replacements (e.g., \WaitSafely\, \StringDehumanizeExtensions\, \TagLibUtils\). Additionally, the global config enables recommended .NET code analysis rules (IDE and CA) as warnings or errors to improve code quality and safety.

CodeAnalysis · high confidence

Enhanced profile beatmap sections with new categories and improved layout

The profile overlay's beatmap sections now support additional categories including pending, graveyarded, nominated, and guest participation beatmaps, alongside existing ones like favourite and ranked. The layout has been adjusted to match the web version, with beatmap cards scaled down and centered, and missing text handling improved to prevent display errors during API requests.

osu.Game/Overlays/Profile/Sections/Beatmaps · medium confidence

Hide red failing layer in ranked play

The new ScreenGameplay class for online matchmaking gameplay now initializes the MultiplayerPlayer with showFailingOverlay set to false. This change ensures that the red failing overlay is hidden during ranked play sessions, providing a cleaner visual experience when a player fails a beatmap in this specific context.

osu.Game/Screens/OnlinePlay/Matchmaking/Match/Gameplay · medium confidence

Improved storyboard timing and rendering accuracy

Storyboards now correctly calculate element end times and start times, fixing issues where animations or videos would start too early, fade incorrectly, or cause extended drawable lifetimes. The \IStoryboardElementWithDuration\ interface and \GetEndTime()\ extension method ensure that all storyboard elements, including those with loops or transforms, are accounted for in the storyboard's total duration. Additionally, the \EarliestEventTime\ and \LatestEventTime\ calculations now exclude video and background events to match stable behavior, and sprite start times are determined by the first visible alpha command rather than any no-op transforms.

osu.Game/Storyboards · high confidence

Introduce ArmedState enum and refactor DrawableHitObject state management

The hit object rendering system now uses a new \ArmedState\ enum (\Idle\, \Hit\, \Miss\) to track the visual state of hit objects, replacing the previous boolean and string-based state tracking. This change centralizes state management within \DrawableHitObject\, ensuring that visual indicators and input handling are synchronized with the actual scoring result. Users will see more consistent visual feedback during gameplay, particularly when rewinding or editing, as the drawable state now correctly reflects the hit object's lifecycle and judgment status.

osu.Game/Rulesets/Objects/Drawables · high confidence

Introduce MultiplierControlPoint for beat length scaling

A new MultiplierControlPoint class has been added to the timing system, providing an aggregated multiplier based on the TimingPoint's BeatLength and the EffectPoint's SpeedMultiplier. This change enables scaling beat lengths relative to each other, which fixes issues where scrolling rulesets were not correctly accounting for slider multipliers.

osu.Game/Rulesets/Timing · medium confidence

Introduce new judgement rendering and scoring architecture

Replaces the previous judgement system with a new architecture that separates the logical \Judgement\ (scoring, health impact) from the visual \DrawableJudgement\ and \DefaultJudgementPiece\. This change introduces pooling for performance, adds skinning support for hit animations, and standardizes how hit results are displayed and animated across all game modes.

osu.Game/Rulesets/Judgements · high confidence

Introduce pooling and lifetime management for hit objects

The hit object rendering and pooling logic has been refactored into a new \HitObjectEntryManager\ and \PooledDrawableWithLifetimeContainer\ architecture. This change decouples the lifetime of pooled drawables from their underlying hit objects, instead linking them to a dedicated \HitObjectLifetimeEntry\. This ensures that synthetic or non-pooled hit objects are correctly linked to their parents, fixes issues where the follow point connection pool would fill up when points were hidden, and prevents lifetime setting errors during loading. Users will experience more stable rendering of hit objects, particularly with nested objects and replay rewinding, as the system now properly manages the lifecycle and pooling of drawable objects.

osu.Game/Rulesets/Objects/Pooling · high confidence

Introduce structured countdown events and requests for multiplayer rooms

Added new event classes (CountdownStartedEvent, CountdownStoppedEvent) and request classes (StartMatchCountdownRequest, StopCountdownRequest) to support managing active countdowns within a multiplayer room. This change enables the room to track and control multiple concurrent countdowns, allowing users to start or stop specific timed sequences during a match.

osu.Game/Online/Multiplayer/Countdown · medium confidence

Introduces BreakPeriod and TimeSignature classes for beatmap timing

The game now uses dedicated \BreakPeriod\ and \TimeSignature\ classes to manage beatmap timing data. \BreakPeriod\ defines the start and end times of musical breaks, including constants for minimum gaps and durations, while \TimeSignature\ stores the numerator of the time signature (e.g., 3/4, 4/4). This replaces previous implementations, providing a more structured way to handle break periods and time signatures in the beatmap system.

osu.Game/Beatmaps/Timing · medium confidence

Localised dashboard overlay header and tabs

The dashboard overlay header has been localised, with the title and description now sourced from the application's localisation resources. Additionally, the tab labels for Friends, Currently Playing, and User Search are now localised, ensuring the dashboard interface adapts to the user's language settings.

osu.Game/Overlays/Dashboard · high confidence

Major overhaul of beatmap data models and import logic

The \BeatmapInfo\ and \BeatmapSetInfo\ models have been significantly refactored to support a new local metadata caching system and improved import flows. Key changes include moving properties like \Breaks\, \Countdown\, \WidescreenStoryboard\, and \AudioLeadIn\ out of \BeatmapInfo\ into the \IBeatmap\ interface or separate classes. The import process now uses a dedicated \BeatmapImporter\ and \BeatmapUpdater\ to handle online metadata lookups, deduplication, and update flows more robustly. Additionally, the \WorkingBeatmap\ class has been simplified and its cache management improved to prevent threading issues and ensure proper invalidation. These changes improve the reliability of beatmap imports, fix several bugs related to metadata handling, and prepare the codebase for a switch to a different database backend.

osu.Game/Beatmaps · high confidence

Major overhaul of online API response models

The online API response models have been significantly refactored to align with the current osu-web API specification. This includes renaming classes (e.g., \User\ to \APIUser\, \APIScoreInfo\ to \APIScore\), moving properties to more appropriate model classes (e.g., online metrics and beatmap data), and implementing new interfaces (\IBeatmapInfo\, \IBeatmapSetInfo\) for better type safety. Additionally, new models have been added to support features like daily challenges, matchmaking pools, and user achievements, ensuring the client can parse all relevant data from the server.

osu.Game/Online/API/Requests/Responses · high confidence

Major overhaul of osu! gameplay mechanics, scoring, and editor tools

This update introduces a comprehensive rework of the osu! ruleset, significantly altering gameplay mechanics and user experience. Key changes include a new HP algorithm and combo end bonus, a complete rewrite of the scoring system (introducing ScoreV2 and legacy score simulation), and extensive adjustments to hit windows, slider leniency, and performance calculations. Editor tools have been overhauled with new placement blueprints, grid snapping, and control point management. Additionally, the update introduces the 'Argon' skinning support for spinners and hit circles, adds a 'Traceable' mod, and implements various quality-of-life improvements and bug fixes across the ruleset.

osu.Game.Rulesets.Osu · high confidence

Major overhaul of the multiplayer client architecture and state management

The multiplayer system has been completely rewritten to support a new hub-based messaging architecture, introducing a clear separation between the client, room server, and lounge server interfaces. This change introduces new models for countdowns, match states, and user states, enabling features like forced gameplay starts, match aborts, and vote-to-skip. The client now handles room invitations, user state changes, and playlist updates through a unified event system, while also supporting password-protected rooms and referee roles.

osu.Game/Online/Multiplayer · high confidence

Migrate game configuration and settings storage to Realm

The game's configuration system has been migrated from Entity Framework to Realm, with settings now persisted via the \RealmKeyBindingStore\ and \RealmContextFactory\. This change centralizes the storage of user preferences, including key bindings and other game-wide settings, ensuring thread-safe access and improved performance. Users will experience more reliable saving of their settings and key bindings, with the system automatically handling data migration from the previous storage mechanism.

osu.Game · high confidence

New difficulty and performance calculation architecture

The difficulty and performance calculation systems have been refactored into a new structure. A new \DifficultyAttributes\ class now holds beatmap difficulty data, while \PerformanceAttributes\ and \PerformanceBreakdown\ manage score performance metrics. The \DifficultyCalculator\ has been restructured to use these new classes, introducing a \TimedDifficultyAttributes\ for time-based difficulty data. This change also introduces a 10-second timeout for difficulty calculations and adds cancellation token support to prevent long-running tasks from blocking the UI.

osu.Game/Rulesets/Difficulty · high confidence

The home screen now displays two distinct lists of beatmaps: 'New' and 'Popular'. Each list is rendered using new components (DashboardBeatmapListing, DrawableNewBeatmapList, DrawablePopularBeatmapList) that utilize the updated APIBeatmapSet model. The UI features a consistent visual style with hover effects, truncated text with tooltips, and specific metadata displays (release date for new maps, favorite count for popular ones).

osu.Game/Overlays/Dashboard/Home · high confidence

New legacy score encoding and decoding infrastructure

The legacy scoring system has been refactored with new classes to handle the serialization and deserialization of score data. \LegacyReplaySoloScoreInfo\ now stores additional metadata (such as online ID, mods, statistics, and pause timestamps) at the end of \.osr\ replay files. \LegacyScoreEncoder\ and \LegacyScoreDecoder\ have been restructured to support this new format, including a version bump to 30000018 to trigger score reprocessing. A new \DatabasedLegacyScoreDecoder\ implementation retrieves beatmaps and rulesets from the database, while \ScoreInfoExtensions\ provides helper methods for converting between standardised and classic scoring modes.

osu.Game/Scoring/Legacy · high confidence

New toast-based OSD notifications with audio feedback

The on-screen display (OSD) has been refactored to use a new Toast system, replacing previous notification methods. This introduces a reusable Toast base class and specific implementations for clipboard copies, speed changes, and tracked settings. Users will now see consistent, localized toasts for settings changes, which include visual indicators (like option lights) and audio feedback (sound effects) to confirm actions. The change also fixes issues where toasts were spamming or showing incorrect text, ensuring a smoother and more informative user experience.

osu.Game/Overlays/OSD · high confidence

New update notification system for mobile and package-managed updates

The update checking and notification logic has been refactored into a new \UpdateManager\ base class, with specific implementations for different platforms. \MobileUpdateNotifier\ now handles update checks for iOS and Android, displaying notifications that allow users to manually install updates via external links (e.g., App Store, APK downloads). A new \NoActionUpdateManager\ is introduced for environments where updates are managed externally (such as package managers), which displays a notification without offering to download or install the update. Additionally, a \GitHubRelease\ model was added to parse GitHub API responses, and the system now supports reading the release stream from the assembly version and environment variables.

osu.Game/Updater · medium confidence

New visual components for timing and effect row attributes

The timing and effect row attributes in the editor now use dedicated UI components (AttributeText, AttributeProgressBar) to display control point data. This introduces a visual progress bar for scroll speed, a 'kiai' indicator, and a 'no barline' indicator, while hiding the scroll speed display if the ruleset does not support it.

osu.Game/Screens/Edit/Timing/RowAttributes · high confidence

Online settings reorganized into dedicated subsections

The online settings are now split into three distinct subsections: Alerts and Privacy (controlling notifications for mentions, private messages, and friend presence changes, plus an option to hide country flags), Integrations (allowing users to toggle Discord Rich Presence), and Web (featuring controls for external link warnings, preferring no video, automatic beatmap downloads, and explicit content visibility).

osu.Game/Overlays/Settings/Sections/Online · medium confidence

Overhaul of overlay management and UI components

Significant refactoring of the overlay system, introducing \OsuFocusedOverlayContainer\ to standardize focus and input blocking behavior across all overlays. The \MusicController\ has been reworked to handle track changes and audio ducking more safely, while the chat system has been refactored to use a new \Channel\ abstraction, improving how messages and tabs are managed. Additionally, the settings panel has been restructured into a \SettingsToolboxGroup\ for better modularity, and various visual regressions in overlays like the beatmap listing and user profile have been fixed.

osu.Game/Overlays · medium confidence

Page selector now omits intermediate pages and uses ellipsis

The page selector in the game UI has been refactored to improve usability when navigating through many pages. It now omits intermediate page numbers, replacing them with an ellipsis indicator, and displays only the current page, adjacent pages, and the first and last pages. The navigation buttons (previous/next) and page buttons have been restructured into dedicated components (PageSelector, PageSelectorPageButton, PageSelectorPrevNextButton, PageEllipsis) to support this new behavior, ensuring that users see a cleaner, less cluttered interface when browsing through large sets of content.

osu.Game/Graphics/UserInterface/PageSelector · high confidence

Redesign multiplayer lounge room panels with new status and info pills

The multiplayer lounge now features a complete visual overhaul of the room listing and individual room panels. Each room is displayed in a redesigned panel that includes new 'pill' components to show the room's status, category, match type, queue mode, and playlist count. The layout has been adjusted for better mobile support and includes indicators for pinned rooms, host information, and participant counts. These changes improve the clarity and visual hierarchy of the online play lobby.

osu.Game/Screens/OnlinePlay/Lounge/Components · high confidence

Redesign of the Kudosu profile section

The Kudosu section on user profiles has been updated to match the current web design. This introduces a new KudosuInfo component that displays the user's total kudosu count alongside a description and a link to the in-game wiki. The kudosu history list has been refactored into a new PaginatedKudosuHistoryContainer with a custom DrawableKudosuHistoryItem, improving layout consistency and text formatting to align with the web version.

osu.Game/Overlays/Profile/Sections/Kudosu · high confidence

Redesign of the control point system with specialized types and grouping

The control point architecture has been refactored to use specific subclasses (Timing, Effect, Difficulty, and Sample) instead of a generic type, each exposing their own properties as bindable values. Control points are now organized into groups by time, allowing for cleaner management of overlapping effects and improving the accuracy of gameplay calculations like slider velocity and beat snapping.

osu.Game/Beatmaps/ControlPoints · high confidence

Redesign of the in-game markdown renderer

The game's markdown rendering has been completely rewritten to use a new, game-specific component hierarchy. Headings now feature distinct font sizes and weights for each level, while list items display custom bullet markers and proper padding. Tables are styled with distinct borders for headers and body cells, and code blocks receive a background color. Additionally, the renderer now supports inline code styling, footnote links, and country flag rendering within text flows.

osu.Game/Graphics/Containers/Markdown · high confidence

Redesign of the input settings interface

The input settings have been restructured and restyled. The key binding configuration now features a new panel with a dedicated conflict resolution popover that allows users to choose between existing or new bindings. Mouse, joystick, pen, and tablet settings have been updated to use the new form controls and localisation strings. The layout of the settings sections has been adjusted to improve usability and visual consistency.

osu.Game/Overlays/Settings/Sections/Input · high confidence

Redesigned Rankings overlay with new header and filtering components

The Rankings overlay has been restructured with a new header component (RankingsOverlayHeader) that includes a country filter (CountryFilter) and ruleset selector. A new SpotlightSelector component displays spotlight details and sorting options, while the SpotlightsLayout manages the display of beatmap cards and scores. The change also introduces a RankingsScope enum to define the different ranking categories (Performance, Score, Country, Playlists, Kudosu) and a RankingsSortTabControl for sorting criteria.

osu.Game/Overlays/Rankings · high confidence

Redesigned beatmap set score display

The beatmap set overlay now features a completely rewritten score display, introducing a new \ScoresContainer\ that renders a \ScoreTable\ for the leaderboard and a \DrawableTopScore\ for the top score. This change brings the desktop client's leaderboard layout and styling closer to the osu-web interface, including updated column ordering, improved placeholder states for empty or restricted leaderboards, and visual enhancements like row highlighting and hover effects.

osu.Game/Overlays/BeatmapSet/Scores · high confidence

Redesigned break screen with new visual effects and info display

The break screen has been completely rewritten to feature a new visual style. The break overlay now includes animated parallax arrows with a dual-layer effect (glowing and blurred icons) that slide in and out during breaks. Additionally, the break info panel now displays the player's accuracy and grade using a new \BreakInfoLine\ component, with localised strings and correct decimal formatting for accuracy values.

osu.Game/Screens/Play/Break · high confidence

Redesigned chat channel list with grouped channels and new UI components

The chat overlay's channel list has been completely rebuilt to group channels by type (Announce, Public, Team, Private) using a new \ChannelGroup\ component. This update introduces a search box that automatically selects the first matching channel, adds hover and selection animations, displays mention pills, and allows closing team channels via a new close button. The layout now uses \SearchContainer\ for filtering and \OsuScrollContainer\ for scrolling, with specific styling for each channel type.

osu.Game/Overlays/Chat/ChannelList · high confidence

Redesigned chat overlay with improved scrolling, highlighting, and reporting

The chat overlay has been significantly updated with a new design, including a resizable interface with a drag bar on mobile, improved auto-scrolling behavior that keeps the user at the bottom when new messages arrive, and visual enhancements like alternating background colors for chat lines. Users will see a more robust message highlighting system that scrolls to and emphasizes specific messages, better username display with truncation and hover effects, and a streamlined reporting flow with localized success messages. The chat text bar now supports search functionality and displays the current channel context, while day separators and message formatting have been refined for better readability.

osu.Game/Overlays/Chat · medium confidence

Redesigned editor menus with new header, stateful items, and improved visual feedback

The editor's main menu has been rebuilt to match a new design language, featuring a dedicated header area displaying the 'osu! editor' title and icon. Menu items now support stateful rendering, including checkmarks for selected states and chevron indicators for submenus. The screen switcher control has been updated with a tabbed interface and hover effects, while the overall menu layout has been adjusted to prevent overflow and improve spacing.

osu.Game/Screens/Edit/Components/Menus · medium confidence

Redesigned editor summary timeline and bottom bar

The editor's summary timeline has been completely redesigned to better match the stable client's visual style, with adjusted visuals for breaks, kiai, control points, and bookmarks. The bottom bar now features a custom clock for seeking, a preview gameplay button, and improved visual feedback. Additionally, the timeline components have been restructured to use dependency injection for clocks and colors, and the test button's scale animation has been disabled during interaction.

osu.Game/Screens/Edit/Components/Timelines/Summary · high confidence

Redesigned editor ternary buttons with new controls

The editor's ternary buttons have been redesigned to improve appearance and functionality. A new \DrawableTernaryButton\ base class provides a consistent look and feel. Specific buttons like \NewComboTernaryButton\ now include a color picker for combo colors, and \SampleBankTernaryButton\ has been restructured to handle normal and addition states separately. The \SampleSetTernaryButton\ has also been updated to reflect the new design. These changes enhance the visual consistency and usability of the editor's control panel.

osu.Game/Screens/Edit/Components/TernaryButtons · medium confidence

Redesigned header buttons for beatmap sets

The header buttons in the BeatmapSet overlay have been refactored into new, distinct components: FavouriteButton, HeaderButton, HeaderDownloadButton, PlayButton, and PreviewButton. The FavouriteButton now handles the API request and updates the UI state, while the HeaderDownloadButton manages download states (downloading, importing, locally available) and displays a progress bar. The PlayButton and PreviewButton handle audio previewing, with the PreviewButton providing a visual progress indicator during playback. These changes improve the structure and functionality of the beatmap set header controls.

osu.Game/Overlays/BeatmapSet/Buttons · high confidence

Redesigned judgement counter with new display modes

The gameplay HUD's judgement counter has been refactored into a new component structure (JudgementCount, JudgementCountController, JudgementCounter, JudgementCounterDisplay) that supports multiple display modes: Simple, Normal, All, and Misses Only. Users can now choose which types of hits to show and configure the layout (horizontal/vertical) and whether to display hit names or maximum counts, with all options exposed in the game's settings.

osu.Game/Screens/Play/HUD/JudgementCounter · high confidence

Redesigned multiplayer gameplay screens and chat

The multiplayer and playlist room screens have been refactored into the new OnlinePlay structure, introducing dedicated components for gameplay chat, score display, and song selection. A new in-game chat display allows players to communicate during gameplay, while the score display now supports team-based scoring. The song selection interface has been updated to support freestyle mod selection and room-specific mod restrictions. Additionally, the lounge screen now includes filters to hide full or in-progress rooms, and the room creation flow has been streamlined to integrate directly with the multiplayer server.

osu.Game/Screens/OnlinePlay/Multiplayer · high confidence

Redesigned popup dialog system with new button types and confirmation flows

The popup dialog system has been refactored to support distinct confirmation flows. A new \ConfirmDialog\ provides standard confirmation, while a new \DangerousActionDialog\ (and its \DeletionDialog\ subclass) introduces a 'dangerous' button that requires a hold-to-confirm interaction, adding audio feedback and visual progress indicators for destructive actions. The base \PopupDialog\ and its button components (\PopupDialogOkButton\, \PopupDialogCancelButton\, \PopupDialogDangerousButton\) have been updated to support these new behaviors, including proper hiding before action invocation and improved input handling.

osu.Game/Overlays/Dialog · medium confidence

Redesigned profile ranks section with new score display components

The profile overlay's Ranks section has been rebuilt using new \DrawableProfileScore\ and \DrawableProfileWeightedScore\ components, replacing the previous implementation. This change updates the visual presentation of scores to better match the website's design, including adjusted styling, mod icon ordering, and performance point (PP) display logic. The \PaginatedScoreContainer\ now handles fetching and displaying best, first, recent, and pinned scores, with weighted scores for the 'Best' category. Users will see an updated look for their profile ranks, with improved consistency with the web version.

osu.Game/Overlays/Profile/Sections/Ranks · medium confidence

Redesigned quick play endgame results screen

The quick play endgame results screen has been redesigned to display player statistics and room awards in a new grid-based layout. This update introduces new UI components (PanelRoomAward, PanelUserStatistic) to show individual player stats and room-specific awards, providing a more structured and visually distinct view of the final match outcomes.

osu.Game/Screens/OnlinePlay/Matchmaking/Match/Results · high confidence

Redesigned recent activity feed with new icons and layout

The recent activity section on user profiles has been completely restyled to match the web version. This introduces new drawable components (DrawableRecentActivity, MedalIcon, RecentActivityIcon) that render activity items with updated icons, colors, and spacing. The layout now displays activity items inline with the web design, including relative dates, proper link handling for users and beatmaps, and distinct visual treatments for different activity types (ranks, achievements, beatmap updates, etc.).

osu.Game/Overlays/Profile/Sections/Recent · medium confidence

Redesigned user profile overlay with modular sections and reporting

The user profile overlay has been completely restructured into a modular header and distinct content sections. The header now features a new layout with separate containers for the user's banner, badges, and details, alongside a ruleset selector. A new 'ProfileSection' component provides a consistent, shadowed card style for displaying user data. Additionally, users can now report other users directly from their profile page via a new popover dialog that lists specific reasons for reporting.

osu.Game/Overlays/Profile · high confidence

Redesigned user profile overlay with new section components

The profile overlay has been refactored into a modular system of sections and subsections, introducing new UI components like CounterPill, ProfileSubsection, and ProfileItemContainer to display user data. This change restructures how profile information is presented, adding support for displaying various beatmap categories (favourite, ranked, loved, guest, pending, graveyard, nominated), recent activities, historical play data, kudosu history, and top ranks, all organized into distinct, localized sections within the user profile.

osu.Game/Overlays/Profile/Sections · high confidence

Refactor JSON serialization infrastructure

The codebase introduces a new static extension class, JsonSerializableExtensions, which centralizes JSON serialization and deserialization logic using Newtonsoft.Json. This includes a custom SnakeCaseKeyContractResolver that automatically converts property names to snake\_case during serialization, ensuring consistent key naming in JSON output. The implementation replaces previous, potentially defective Humanizer method calls with correct versions and removes the IJsonSerializable interface, streamlining the serialization process for users by providing a unified, reliable way to convert objects to and from JSON strings.

osu.Game/IO/Serialization · medium confidence

Refactor editor compose screen and introduce event buffering for hit objects

The editor's compose screen has been refactored to improve structure and reliability. A new \HitObjectUsageEventBuffer\ class is introduced to correctly order hit object usage events from the playfield hierarchy. The \ComposeScreen\ now explicitly creates and caches the \HitObjectComposer\ via dependency injection, ensuring it is available to child components like the timeline. Additionally, the \IPlacementHandler\ interface is extracted to manage placement states, and clipboard operations are centralized within the screen to prevent crashes when loading beatmaps for unsupported rulesets.

osu.Game/Screens/Edit/Compose · medium confidence

Refactor replay handling with new base classes

The replay handling logic has been refactored by introducing new base classes: \AutoGenerator\ for generating autoplay replays and \FramedReplayInputHandler\ for processing replay frames. These changes improve the robustness of replay playback, fix issues with frame accuracy and timing, and simplify the codebase by separating concerns between generation and input handling.

osu.Game/Rulesets/Replays · high confidence

Refactor storyboard command architecture and fix timing bugs

The storyboard command system has been refactored to use a new generic \StoryboardCommand\<T\>\ base class and an \IStoryboardCommand\ interface, introducing an \ApplyInitialValue\ method that ensures parameter commands (like flip and blending) apply their initial state immediately if they have zero duration. This change also fixes several bugs: the \HasCommands\ property is now correctly set, group start/end times are calculated accurately, and the initial value application logic has been corrected for parameter commands.

osu.Game/Storyboards/Commands · medium confidence

Refactored archive reading infrastructure with new base class and implementations

The archive reading system has been refactored to use a new \ArchiveReader\ abstract base class, which introduces a consistent interface for reading from various archive types. New concrete implementations include \ZipArchiveReader\ (which now uses pooled memory for better performance and includes a workaround for a rare SharpCompress bug), \DirectoryArchiveReader\, \SingleFileArchiveReader\, \ByteArrayArchiveReader\, and \MemoryStreamArchiveReader\. This change standardizes how archives are read, improves memory efficiency, and ensures correct handling of file names and encodings (e.g., Shift-JIS for osu!stable archives).

osu.Game/IO/Archives · medium confidence

Refactored audio subsystem with new PreviewTrack and SampleInfo models

The audio subsystem was refactored to improve audio management and sample handling. A new \PreviewTrack\ and \PreviewTrackManager\ were introduced to manage preview tracks, allowing for better control over audio playback and state management. The \HitSampleInfo\ and \SampleInfo\ classes were updated to support custom sample sets and improved lookup logic, enhancing the flexibility of audio sample selection and playback.

osu.Game/Audio · medium confidence

Refactored background rendering with new Drawable hierarchy

The background system has been restructured to improve performance and maintainability. A new \Background\ base class was introduced, from which \BeatmapBackground\, \SeasonalBackground\, and \SkinBackground\ now inherit, each implementing \IEquatable\ to prevent unnecessary background reloads. The legacy \Triangles\ component was replaced by \TrianglesV2\, which uses raw vertices and a dedicated shader for significantly reduced draw node overhead. Additionally, the \BeatmapBackgroundWithStoryboard\ class was added to manage the simultaneous display of beatmap backgrounds and storyboards, handling clock synchronization and visibility transitions.

osu.Game/Graphics/Backgrounds · high confidence

Refactored background screen architecture with new container and loading logic

The background system was restructured to improve how backgrounds are loaded, dimmed, and transitioned. A new \BackgroundScreenBlack\ class was added to handle black background states, while \BackgroundScreenCustom\ was introduced to support custom background textures. The core \BackgroundScreen\ hierarchy was reorganized: \BackgroundScreenBeatmap\ and \EditorBackgroundScreen\ were updated to use a new \DimmableBackground\ container for handling user settings (blur, dim, storyboard replacement) more robustly. \BackgroundScreenDefault\ was refactored to use a \SeasonalBackgroundLoader\ and manage background rotation logic more cleanly. These changes ensure that background transitions are smoother, user settings are applied correctly without race conditions, and the editor/song select backgrounds behave consistently.

osu.Game/Screens/Backgrounds · medium confidence

Refactored cursor and tooltip management

The cursor system has been refactored to use a new \IProvideCursor\ interface and a \GlobalCursorDisplay\ container, which centralizes the logic for showing, hiding, and overriding the main game cursor based on input source and focus state. Additionally, the \OsuTooltipContainer\ and \OsuContextMenuContainer\ have been updated to align with framework changes, including improved tooltip width constraints and context menu integration.

osu.Game/Graphics/Cursor · high confidence

Refactored difficulty calculation engine with new Skill abstractions

The difficulty calculation system has been refactored to use a new class hierarchy in the \osu.Game.Rulesets.Difficulty.Skills\ namespace. This introduces abstract base classes \Skill\, \StrainSkill\, \StrainDecaySkill\, \HarmonicSkill\, and \VariableLengthStrainSkill\. These changes encapsulate strain and harmonic logic, allowing for more modular and consistent API for implementing difficulty skills. The \VariableLengthStrainSkill\ is introduced to fix bugs present in the previous fixed-length section approach, offering dynamic section lengths and improved handling of queued strains. This refactoring changes how difficulty values are computed internally, which may result in different SR/PP values for maps.

osu.Game/Rulesets/Difficulty/Skills · high confidence

Refactored notifications WebSocket client into a dedicated interface and implementation

The notifications WebSocket client has been refactored to separate the raw WebSocket handling from the conjoined notifications client. A new \INotificationsClient\ interface and \WebSocketNotificationsClient\ implementation are introduced to manage the WebSocket connection, message parsing, and event dispatching. A \WebSocketNotificationsClientConnector\ is added to handle connection lifecycle and authentication. This change decouples the low-level WebSocket logic from the higher-level notifications system, improving testability and separation of concerns.

osu.Game/Online/Notifications/WebSocket · high confidence

Refactored online connectivity and download tracking

The online subsystem has been significantly refactored to improve stability and state management. A new \PersistentEndpointClient\ and \PersistentEndpointClientConnector\ architecture replaces the previous event-based connection handling, introducing robust exponential backoff for reconnections. Download tracking has been rewritten to use Realm database subscriptions instead of manual event hooks, ensuring consistent state updates. Additionally, a \PollingComponent\ base class has been introduced to manage periodic background tasks, and endpoint configuration is now centralized in dedicated \EndpointConfiguration\ classes for both production and development environments.

osu.Game/Online · high confidence

Refactored spectator screen architecture and state management

The spectator screen has been refactored to use an abstract base class (SpectatorScreen) and a new immutable state class (SpectatorGameplayState) to manage gameplay data. The implementation now utilizes realm subscriptions for user state updates and resolves beatmaps and rulesets via dependency injection, improving the handling of user presence and gameplay states.

osu.Game/Screens/Spectate · medium confidence

Refactored statistics display components for the expanded results screen

The statistics section of the expanded ranking screen has been refactored into a new set of dedicated display classes (AccuracyStatistic, ComboStatistic, CounterStatistic, HitResultStatistic, PerformanceStatistic, StatisticCounter, and StatisticDisplay). This change introduces a more structured and reusable component hierarchy for displaying score data, including dynamic performance point calculation and improved handling of unranked scores and mods.

osu.Game/Screens/Ranking/Expanded/Statistics · medium confidence

Refactored user and team flag/avatar components for improved interactivity and tooltips

The user and team flag/avatar components have been refactored to separate non-interactive display elements from interactive ones. New classes were introduced: ClickableAvatar, ClickableTeamFlag, ClickableUsername, DrawableAvatar, DrawableFlag, DrawableTeamFlag, StatusIcon, UpdateableAvatar, UpdateableFlag, UpdateableTeamFlag, and UserCardTooltip. These changes enable hover tooltips for user cards, external links for team profiles, and better handling of null or system users. The UpdateableAvatar and UpdateableFlag classes now support interactive modes with sounds and click actions, while the non-interactive versions (DrawableAvatar, DrawableFlag, etc.) are used for static displays. The UserCardTooltip now displays a user profile panel on hover, and the ClickableAvatar uses a NoCardTooltip for system users.

osu.Game/Users/Drawables · high confidence

Refactored verify screen into modular settings sections

The verify screen's settings panel has been split into distinct, reusable sections: Scope, Interpretation, and Visibility. This allows users to filter checks by scope, adjust interpretation difficulty, and toggle the visibility of specific issue types. The issue list now automatically refreshes when these settings change, providing a more responsive and organized verification experience.

osu.Game/Screens/Edit/Verify · high confidence

Refactors beatmap verification infrastructure and utilities

The beatmap verification system has been refactored to improve modularity and reusability. New utility classes (AudioCheckUtils, ResourcesCheckUtils, TimingCheckUtils) centralize logic for checking audio formats, storyboard elements, and timing points. The core verification interface has been renamed to ICheck, and the Issue class now carries richer context (timestamps, hit objects) and uses IssueTemplate for message formatting and color coding. Metadata for checks is now defined via the CheckMetadata class with a CheckCategory enum, allowing checks to be categorized (e.g., Timing, Audio, Resources). The verification context now passes a BeatmapVerifierContext instead of raw IWorkingBeatmap, providing a more structured way to access beatmap data during checks.

osu.Game/Rulesets/Edit/Checks/Components · high confidence

Renamed and refactored news article listing component

The \FrontPageDisplay\ component has been renamed to \ArticleListing\ to better reflect its purpose of listing articles in a vertical flow for a specified year. The class has been fully generated (partial) and refactored to pass the \fetchMorePosts\ action via the constructor, eliminating potential null reference issues. Additionally, the component now handles cancellation of background tasks during disposal.

osu.Game/Overlays/News/Displays · medium confidence

Replaced the update manager with a new Velopack-based implementation

The update manager has been replaced with a new \VelopackUpdateManager\ that handles update checks, downloads, and application. The new implementation avoids triggering update checks and notifications while the user is in gameplay, schedules background checks, and uses the Velopack library to manage the update lifecycle. This change also includes a fix for restart notifications appearing every 30 minutes and ensures that update checks are cancelled if the user is in gameplay, preventing interruptions.

osu.Desktop/Updater · medium confidence

Replaces online play lounge with a new multi-mode architecture

The online play lounge has been refactored into a new \LoungeSubScreen\ that serves as the base for both multiplayer and playlists modes. This change introduces a new \IOnlinePlayLounge\ interface and a \LoungeBackgroundScreen\ to manage the selected room's background. A dedicated \LoungeListingPoller\ handles room listing updates, while \LoungeRoomPanel\ and \LoungeSubScreen\ handle the UI and logic for the lounge. This allows the lounge to support both multiplayer and playlists, with specific behaviors like closing playlists within a grace period and filtering out full rooms.

osu.Game/Screens/OnlinePlay/Lounge · high confidence

Replay model gains deep cloning and completeness tracking

The Replay class now supports deep cloning via the IDeepCloneable interface, allowing safe duplication of replay data without shared references. Additionally, a new HasReceivedAllFrames boolean field has been added to indicate whether all replay frames have been fully received, enabling the application to handle incomplete replays appropriately.

osu.Game/Replays · medium confidence

Restructures General settings into dedicated subsections

The General settings section has been refactored into four distinct subsections: Installation, Language, Quick Actions, and Update. This change organizes related settings—such as folder location, language preferences, log export, and update checks—into their own dedicated UI components, improving navigation and clarity within the settings menu.

osu.Game/Overlays/Settings/Sections/General · high confidence

Restructures hit object and path handling for improved performance and correctness

The hit object system has been refactored to improve performance and fix several edge-case bugs. A new \HitObjectProperty\<T\>\ struct is introduced to reduce memory allocations by lazily initializing bindables. The \HitObject\ class now manages its own \Judgement\ and \HitWindows\ directly, removing the need for external storage. \HitObjectLifetimeEntry\ is updated to track nested hit objects and their judgment states, ensuring proper lifecycle management. Path handling is overhauled with a new \PathControlPoint\ class and a \BezierConverter\ to manage control points and segment types, fixing issues with slider path reversal and length calculation. Additionally, a \BarLineGenerator\ is introduced to centralize bar line generation, and the \SliderEventGenerator\ is updated to handle tick generation more accurately, including a 36ms leniency for the final tick. These changes collectively reduce allocations, fix incorrect slider path calculations, and improve the overall stability of the hit object system.

osu.Game/Rulesets/Objects · high confidence

Revised scoring and difficulty calculations for osu!taiko

The scoring system for osu!taiko has been updated to use a new, more accurate algorithm that better reflects player performance. Additionally, the difficulty calculation has been adjusted to provide a more balanced rating, ensuring that maps are rated more consistently with the rest of the game. These changes aim to improve the overall gameplay experience by making scoring and difficulty ratings more precise and fair.

osu.Game.Rulesets.Taiko · high confidence

Rework online play playlist and mod selection UI

The online play screens now feature a redesigned playlist interface with improved selection, editing, and deletion controls for playlist items. A new freestyle mode allows players to select any beatmap from the same set as the host's choice, with a dedicated overlay for mod selection that supports selecting all mods at once. The header dynamically updates to show the current sub-screen title, and the background uses a blurred, full-screen effect. Additionally, an ongoing operation tracker prevents interaction while waiting for server responses, and the UI now correctly handles invalid or completed playlist items.

osu.Game/Screens/OnlinePlay · high confidence

Reworked gameplay screen architecture and state management

The \Player\ screen was refactored to improve state management, input handling, and clock synchronization. Key changes include introducing \SoloPlayer\ to handle solo gameplay logic, moving pause and fail state handling into dedicated containers (\PauseContainer\, \FailOverlay\), and centralizing the gameplay clock logic within \GameplayClockContainer\. The HUD overlay was restructured to use skinnable components and improved layout logic, while input handling was refined to prevent race conditions during exit and restart sequences. Additionally, the results screen flow was updated to correctly handle score submission and leaderboard display.

osu.Game/Screens/Play · high confidence

Reworked settings menu with new sections and controls

The settings menu has been reorganized into distinct sections including Audio, Gameplay, Graphics, Input, Maintenance, Online, Ruleset, Skin, and User Interface. Each section now uses new form controls and localised strings. Input settings now support toggleable handlers and dynamic subsections. Skin management includes rename, export, and delete buttons, along with a new dropdown for selecting skins. Debug and maintenance sections are also present, with some settings hidden on non-desktop platforms.

osu.Game/Overlays/Settings/Sections · high confidence

Ruleset loading and configuration are now handled by a new, robust store and cache system

The game now uses a new \AssemblyRulesetStore\ and \RealmRulesetStore\ to discover and manage available rulesets, replacing the previous database-backed approach. This change introduces a \RulesetConfigCache\ to manage per-ruleset configuration managers, ensuring that settings are correctly isolated and persisted. Additionally, a \RulesetLoadException\ and improved error logging help identify and handle broken or incompatible rulesets more gracefully, preventing crashes during startup.

osu.Game/Rulesets · high confidence

Standardized AssemblyInfo and exposed internal members to test projects

The AssemblyInfo.cs file has been migrated to the VS2017 project structure and standardized. The file now includes copyright and license headers and explicitly exposes internal members to specific test projects (osu.Game.Tests, osu.Game.Tests.Dynamic, osu.Game.Tests.iOS, osu.Game.Tests.Android, osu.Game.Tournament.Tests) and DynamicProxyGenAssembly2 (for Moq) via \[InternalsVisibleTo\] attributes.

osu.Game/Properties · high confidence

Wiki markdown rendering now supports notice boxes and image captioning

The wiki overlay now renders front-matter metadata (outdated, needs cleanup, stub) as visible notice boxes with appropriate styling and spacing. Additionally, standalone image blocks in markdown are now rendered with their captions displayed below the image, and image widths are constrained to prevent overflow. These changes improve the visual presentation and information hierarchy of wiki articles.

osu.Game/Overlays/Wiki/Markdown · medium confidence

Test coverage

Add ScoringTestScene base class for gameplay scoring tests; Add editor check tests and VSCode launch configurations for osu! ruleset; Add new base test classes for beatmap conversion and difficulty calculation; Added iOS test runners for all rulesets; Added test client for metadata service; Added test coverage for osu!catch gameplay and editor components; Added test coverage for spectator client functionality; Added test helper for GameplayState initialization; Added test infrastructure for score multiplier and ruleset config cache; Added visual and non-visual tests for tournament components and screens; Expanded test coverage across the game client; Expanded test coverage for osu!mania editor and gameplay features; Expanded test coverage for osu!taiko gameplay and editor components; New online play test infrastructure; New test infrastructure and utilities for the test suite; New visual test base classes for editor and mod testing; Refactored multiplayer test infrastructure.

Dependencies

Updated project dependencies and framework references

The project's dependencies have been updated across 36 manifests, including the \ppy.osu.Framework\ and \ppy.osu.Game.Resources\ packages, as well as various NuGet packages such as \Sentry\, \NUnit\, \Humanizer\, and \SharpCompress\. These updates ensure compatibility with the latest .NET and framework standards, resolving build issues and incorporating new features and fixes from the dependency ecosystem.

(dependencies) · medium confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 44.

Lenses

  • Code Health 67
  • Architecture 96
  • Maturity 56
  • Readiness 70
  • Security 20
  • Performance 81

Changes since last survey

  • 300 commits — 218 feature/other, 82 fixes

By area

  • osu.Game/Screens — 88 commits
  • osu.Game.Tests/Visual — 37 commits
  • osu.Game/Overlays — 25 commits
  • osu.Game/Online — 18 commits
  • (root) — 12 commits
  • osu.Game/Beatmaps — 11 commits
  • osu.Game/Graphics — 10 commits
  • osu.Game/Localisation — 9 commits
  • osu.Game/Rulesets — 7 commits
  • osu.Game/osu.Game.csproj — 7 commits
  • osu.Game/Database — 4 commits
  • osu.Game/Users — 4 commits
  • osu.Game.Rulesets.Catch/Edit — 3 commits
  • osu.Game.Rulesets.Osu/Edit — 3 commits
  • osu.Game.Rulesets.Osu/Skinning — 3 commits
  • osu.Game/Skinning — 3 commits
  • osu.Game/Utils — 3 commits
  • .github/workflows — 2 commits
  • osu.Desktop/IPC — 2 commits
  • osu.Game.Rulesets.Catch/Difficulty — 2 commits

Notable commits

  • fix: Apply different workaround to fix ranked play single thread audio issues (#37477)
  • fix: Attempt to fix flaky mania key count change test
  • fix: Fix "Click to see what's new!" notification no longer appearing (#37875)
  • fix: Fix "Member initialized value ignored" inspection (#38054)
  • fix: Fix Windows platform offsets not being applied (#38025)
  • fix: Fix HarmonicSkill's ObjectWeightSum causing discrepancies in timed calculations (#38276)
  • fix: Fix KeyboardStep precision in Accuracy Challenge (#37299)
  • fix: Fix MessageFormatter regex initialisation failing
  • fix: Fix a couple of cases where favouriting a beatmap resulting in error hits sentry (#38055)
  • fix: Fix another instance of already fixed flaky test
  • fix: Fix beatmap panels now showing "downloaded" green strip (#37566)
  • fix: Fix cases localisation classes are not static
  • fix: Fix changing difficulty in editor potentially seeking incorrectly in presence of user/platform offsets (#38042)
  • fix: Fix client not sending data relevant to replay to spectator server (#37919)
  • fix: Fix code inspection
  • fix: Fix converted beatmaps getting filtered out when Dual Stages and Ten Keys mods are active (#38228)
  • fix: Fix crash when dragging card as discard phase ends (#37419)
  • fix: Fix crash when fetching top local rank in song select (#37722)
  • fix: Fix crash when rewinding replay with rate-adjusted hit animations off (#37721)
  • fix: Fix crash when trying to scope to beatmap set in multiplayer freestyle select screen with sorting/grouping mode which has difficulties split apart (#37997)
  • …and 280 more

Architecture

  • 5 containers · 1 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ppy/osu was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit b11b274d1cb5c22eabe9dba5df14fa1e4ecc4e6d — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.