2026.621.0
Note
This release was built against NuGet package ppy.osu.Game 2026.621.0, but the published osu! lazer
at the time is 2026.620.0. The ruleset loads and runs correctly because
.NET assembly unification resolves the version at runtime, but the following
FileNotFoundException is logged at verbose level during ruleset registration:
Could not load file or assembly 'osu.Game, Version=2026.621.0.0, ...'
Impact: None. The ruleset functions normally. The log noise is cosmetic only
Features
- gauge — gameplay gauge with configurable health bar color
- gameplay — split Auto Scratch and Auto Scale mods
- ui — beautify beatmap attribute display
- skin — restyle the HP bar
- render — hide expired measure lines
Performance
- lifetime — precompute all lifetimes at load, recompute on scroll change
- render — skip expired mine rendering; cache skin lookup and texture
- skin — replace multicast delegate with O(1) slot-list event store
Refactor
- scroll — move HitObject management to per-column containers, simplify drawable hierarchy
- render — split drawable hit objects into note / LN / mine
- lifetime — move lifetime computation to
BmsHitObjectLifetimeEntry - skin — full refactor for maintainability (2-part)
- general — propagate compile-time column type through generic pipeline
- ui — move HP bar, combo, judgement to Playfield layer; make judgement display a HUD component
Fixes
- render — LN rendering issue on scroll < 0
- render — UI freeze between loading and play
- render — note
earliestVisibleTimebeing too late - gameplay — unsubscribe
BmsTextHudfrom staticBmsEventBus