77290 Commits

Author SHA1 Message Date
LA
019c64618d [皮肤]修复ASIO设置后加载参数设置 2026-3-14 2026-03-14 11:26:31 +08:00
LA
b0116df88d Ez组件增加释放,尝试解决潜在的内存泄露
解绑原因:组件中没有使用GetBoundCopy()绑定副本,释放组件会保持内部绑定回调
2026-03-14 10:34:05 +08:00
LA
e79da264a3 [皮肤]ManiaPlayfieldAdjustmentContainer增加切换来解决光效混合模式与斜轨功能的兼容问题 2026-03-13 00:33:27 +08:00
LA
9a621d6315 Merge remote-tracking branch 'upstream/HEAD' into dev
# Conflicts:
#	osu.Game/Screens/Menu/MainMenu.cs
#	osu.Game/osu.Game.csproj
2026-03-12 21:22:08 +08:00
Bartłomiej Dach
28fbb83cc6 Fix Simplified Rhythm mod breaking diffcalc when applied to some maps (#36947)
- closes https://github.com/ppy/osu/issues/36942
- fixes https://osu.ppy.sh/community/forums/topics/2187041?n=1

## [Ensure Simplified Rhythm mod does not produce beatmaps with objects
out of
order](f4807b3a42)

This is a last ditch safety.

This mod has more apparent issues (see below) but this is a first step
of restoring sanity.

Aside than the other fix described below I have not attempted to figure
out further why this is happening because the conversion logic is in
over my head. I just want hard breakage to not be possible. Why this
extra sort is necessary can be investigated by @Hiviexd if he's so
inclined.

## [Fix `GetClosestBeatDivisor()` not working correctly with negative
time
instants](88dc0d8a73)

This was causing the 1/3 -> 1/2 conversion in Simplified Rhythm to
engage on some maps that weren't even mapped in waltz time. Those maps
had the common trait of having a timing point with a negative start
time.

Notably this could feasibly affect other places as well, like mania beat
snap colouring, or the Synesthesia osu! mod.

<details>

<summary>testing</summary>

Tested with Simplified Rhythm engaged, with 1/6 -> 1/4 and 1/3 -> 1/2
conversion enabled

[BULANOVA - NE PLACH'
[oni]](https://osu.ppy.sh/beatmapsets/1740291#taiko/3664995) (1/8 snap):
- No mods: 5.18*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 3.48*
- Simplified Rhythm @ 933de7ab: 5.18*

[BULANOVA - NE PLACH' [inner
oni]](https://osu.ppy.sh/beatmapsets/1740291#taiko/3648625) (1/8 snap):
- No mods: 5.84*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 4.13*
- Simplified Rhythm @ 933de7ab: 5.84*

[BULANOVA - NE PLACH' [don't
cry]](https://osu.ppy.sh/beatmapsets/1740291#taiko/3557681) (1/8 snap):
- No mods: 6.91*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 4.84*
- Simplified Rhythm @ 933de7ab: 6.91*

[Mili - Peach Pit and Cyanide [nik's
Normal]](https://osu.ppy.sh/beatmapsets/2468654#osu/5405909) (1/6 snap):
- No mods: 1.63*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 1.10*
- Simplified Rhythm @ 933de7ab: 1.10*

[Mili - Peach Pit and Cyanide [Ix's
Hard]](https://osu.ppy.sh/beatmapsets/2468654#osu/5405906) (1/3 snap):
- No mods: 2.50*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 1.71*
- Simplified Rhythm @ 933de7ab: 1.71*

[Mili - Peach Pit and Cyanide [nomi's Hidden
Insane]](https://osu.ppy.sh/beatmapsets/2468654#osu/5405910) (1/3 snap):
- No mods: 3.93*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 2.59*
- Simplified Rhythm @ 933de7ab: 2.59*

[Within Temptation - The Unforgiving [Stairway To The
Skies]](https://osu.ppy.sh/beatmapsets/29157#osu/172617) (1/3 snap in
editor):
- No mods: 1.53*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 1.48*
- Simplified Rhythm @ 933de7ab: 1.48*

[Within Temptation - The Unforgiving
[Iron]](https://osu.ppy.sh/beatmapsets/29157#osu/172612) (1/6 snap in
editor):
- No mods: 2.76*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 1.75*
- Simplified Rhythm @ 933de7ab: 1.75*

[Within Temptation - The Unforgiving
[Marathon]](https://osu.ppy.sh/beatmapsets/29157#osu/156352) (1/4 snap
in editor, but has 1/3 / 1/6 sections for sure):
- No mods: 2.96*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 2.75*
- Simplified Rhythm @ 933de7ab: 2.75*
	
[Halozy - Genryuu Kaiko [Higan
Torrent]](https://osu.ppy.sh/beatmapsets/180138#osu/433005) (1/4 snap):
- No mods: 5.37*
- Simplified Rhythm @ master: 0.00*
- Simplified Rhythm @ f4807b3a: 3.95*
- Simplified Rhythm @ 933de7ab: 5.37*

</details>
2026-03-12 22:05:39 +09:00
LA
24fc814859 同步fw更新asio音频设置,增加缓冲区设置 2026-03-12 21:02:56 +08:00
LA
831d94e337 [皮肤]Column中的Ez注入绑定上移到滚动容器级,并切改部分Ez组件的代码质量 2026-03-12 21:02:56 +08:00
LA
8585ff59ac Ez组件增加释放,尝试解决潜在的内存泄露 2026-03-12 20:54:18 +08:00
LA
c47726392a [内存调试]解决延迟追踪和虚拟音轨的内存泄露风险。 2026-03-12 20:54:18 +08:00
Dean Herbert
365b88b4a9 Ensure folder migration screen uses a blank background to avoid readability issues (#36948)
https://github.com/ppy/osu/issues/36941
2026-03-12 13:48:22 +01:00
LA
06b3f1fc82 [内存调试]主动释放PoolableSkinnableSample 2026-03-12 20:22:28 +08:00
LA
57781baed7 KPS折线尺寸刷新更及时 2026-03-12 19:56:51 +08:00
LA
074a929cb5 ManiaModSpaceBody 增加固定时间 2026-03-12 19:56:51 +08:00
LA
ff7e614c33 EzPreviewTrackManager 在切换set后主动释放采样, LRU缓存3首歌 2026-03-12 19:56:51 +08:00
LA
bd74aa83f9 完善Column皮肤相关绑定 2026-03-12 19:56:51 +08:00
LA
abc89f6927 修改Ez2ConfigManager的保存 2026-03-12 19:56:51 +08:00
LA
0b9f9f70d6 主要为代码质量更新
1. 匹配新版按钮控件的自动宽度写法

2. 统一Ez日志写入方向

3.移除历史修改:缓存启用mod列表,切换mod时保持通用mod开启状态

4.代码格式化、

5.修改文件名称表意,更直观
2026-03-12 19:29:55 +08:00
Dean Herbert
94c9f16b27 Update editor hitsound icons with new designs from Adarin (#36940)
| Before | After |
| :---: | :---: |
| <img width="584" height="672" alt="2026-03-12 00 56 58@2x"
src="https://github.com/user-attachments/assets/f1714f4d-ba78-4e41-a8f8-1a22dac01d9f"
/> | <img width="584" height="672" alt="2026-03-12 01 06 04@2x"
src="https://github.com/user-attachments/assets/4fc2d7ed-c9e0-45c7-8ff7-394d7ee2eff8"
/> |
2026-03-12 08:03:01 +01:00
cdwcgt
390fc521e9 Fix avatar sometimes showing as guest in beatmap detail comment container (#36935)
- close https://github.com/ppy/osu/issues/34969

The solution here is shown in the issue.

I don't think this needs a test... if need I will write one
2026-03-11 13:06:01 +01:00
Dean Herbert
d0d5d97cfe Add replay / spectator mode scrolling text back (#36911)
As mentioned in https://github.com/ppy/osu/discussions/36883.

This has caught me off-guard a few times.

Was a quick one to make this work like it does on stable. It doesn't fit
as well as stable because we have a lot of elements at the top of the
screen, but I think it's better than nothing, as it lets you know you're
in a replay quick obviously.

I don't think we can easily localise strings with formatting in them
yet. Maybe using a `MarkdownContainer` or something?
2026-03-11 11:08:26 +01:00
Dan Balasescu
4c0657f4ca Ranked Play: Add countdown timer to all screens (#36930)
There's been [some
feedback](https://discord.com/channels/90072389919997952/1476979671886205060/1477868178775216148)
that there's no timer during some screens. Personally I feel like some
screens shouldn't require it, but I get it.

The results screen is going to be the most controversial one, where I've
decided to shift the content down a bit - it would otherwise overlap
with the progress bar. Another option is to make the progress bar
shorter, but I feel like that makes things inconsistent.

<img width="1922" height="1035" alt="image"
src="https://github.com/user-attachments/assets/ec4ba01e-bb13-45ff-8a1b-b39d7765c1f4"
/>

Regarding implementation, I'm not entirely sure on it being added to
every subscreen via `RankedPlaySubScreen` instead of just a single
component at a top level. I did it this way because the colour scheme
seems annoying to change without recreating the entire component (or
otherwise all of its children) anyway.
2026-03-11 17:04:51 +09:00
Dan Balasescu
ce571e328d Ranked Play: Fix casing inconsistency in results screen (#36931)
This is kind of annoying...

Some hit results are given custom names (e.g. "slider tick"):


87b37fd386/osu.Game.Rulesets.Osu/OsuRuleset.cs (L301-L320)

While others go through that `base` call which uses the enum
descriptions (e.g. "Great"):


87b37fd386/osu.Game/Rulesets/Scoring/HitResult.cs (L53-L56)
2026-03-11 15:48:04 +09:00
MayoCollector
87b37fd386 Fix volume slider title text horizontal scaling on some languages (#36915)
closes #36892.

|master|This PR|
|---|---|

|![osu_2026-03-10_18-37-55](https://github.com/user-attachments/assets/15defef7-e1b8-485b-928b-886bb79215e2)|![osu_2026-03-10_18-43-40](https://github.com/user-attachments/assets/df4926f8-d960-45e2-ab98-1b455dc789b5)|
2026-03-11 02:27:03 +09:00
Dean Herbert
14743a14eb Fix "Deselect all" mods button becoming enabled when system mods are applied (#36913)
Closes https://github.com/ppy/osu/issues/36906.

---------

Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2026-03-10 12:40:54 +01:00
Dean Herbert
9105fc15b2 Fix editor not updating titlebar with new difficulty name after rename (#36908) 2026-03-10 09:57:25 +01:00
Denis Titovets
1b488949e1 Localise some more PopupDialogs (#36890)
changes can be reviewed commit by commit

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-03-10 16:28:27 +09:00
Krzysztof Gutkowski
054ae2983d Extract user overlay actions button component (#36236)
This PR extracts the classes used for the actions dropdown on the user
profile overlay to separate components, in preparation to be used on the
team overlay (#32584).

Kinda RFC since I'm not sure if this is the best way to do this.

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-03-10 16:28:06 +09:00
Bartłomiej Dach
321e698906 Improve support for import & export flows on Android via using system file picker & share sheet (#36901)
https://github.com/user-attachments/assets/57d0bc9d-f081-4d04-8cb6-422a83f1a1d3


https://github.com/user-attachments/assets/208f0676-a735-4055-a422-e6a2c3847220

---

- [x] Depends on https://github.com/ppy/osu-framework/pull/6717 to work
- Closes https://github.com/ppy/osu/issues/21076
- Closes https://github.com/ppy/osu/issues/22676
- Closes https://github.com/ppy/osu/issues/28666

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-03-10 16:02:13 +09:00
Bartłomiej Dach
caffc7238b Do not forcibly log out user if user retrieval fails with a server error code (#36897)
* Do not forcibly log out user if user retrieval fails with a server error code

This behaviour caused users to get forcibly logged out of the game
during yesterday's redis outage.

From one case where logs were provided
(https://discord.com/channels/188630481301012481/1097318920991559880/1480201862610423933):

- User had repeated timeouts on API requests; consequently, API went
  into failing state
- On one of the login retries `/api/v2/me` returned a 500 with no error
  details (`{"error":"null}` JSON response) which resulted in
  an instant logout as per

  7263551aa8/osu.Game/Online/API/APIAccess.cs (L323-L324)

This PR intends to only forcibly log the user out if the returned error
code indicates a client error. If it is a server error, the login is
preserved and a normal retry loop proceeds.

This can be tested with a local web instance via following steps:

1. Start `osu-web` and a client instance connected to it.
2. Log in on the client instance.
3. Kill (`^C`) `osu-web`.
4. Trigger a few requests in the client and wait for enough of them to
   fail for the API to change to `Failing` state.
5. Apply

```diff
diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php
index db34639abf2..392a844882a 100644
--- a/app/Http/Controllers/UsersController.php
+++ b/app/Http/Controllers/UsersController.php
@@ -581,6 +581,8 @@ class UsersController extends Controller
      */
     public function me($mode = null)
     {
+        abort(500);
+
         $user = \Auth::user();
         $currentMode = $mode ?? $user->playmode;

```

6. Start `osu-web` again.
7. On master this will log the user out forcibly. On this PR, the user
   will remain in `Failing` state.
8. Undo patch from step (5) (restarting web is not required).
9. On this PR, the client will be logged back in.

* Update framework

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-03-10 15:12:43 +09:00
Rudi Herouard
14bde85263 Fix song select navigation with home/end keys (#36879)
It's a continuation of https://github.com/ppy/osu/pull/36293, but for
the home and end keys.

Now when using home or end keys, it selects respectively the first or
last item in the carousel, instead of just scrolling.

## Before: 


https://github.com/user-attachments/assets/6ab08d2f-1da4-4740-9d9e-574d7a8a10c9

## After:


https://github.com/user-attachments/assets/30bab836-0006-4830-b4e9-2d85017a15e6
2026-03-10 14:20:59 +09:00
Arthur Araujo
277d53a4f1 Adjust all selected hold notes if they have the same StartTime and Duration (#36656)
Addresses #36267

The drag now checks all the selected objects in the blueprint container
to see if they have the same `StartTime` and `Duration` as the dragged
note, and if so, adjust them accordingly.

---------

Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2026-03-10 12:36:32 +09:00
Dean Herbert
3378e6017a Merge pull request #36898 from bdach/oops 2026-03-09 23:54:27 +09:00
Bartłomiej Dach
a7860dd4c1 Fix timeline selection box showing rotation handles
closes https://github.com/ppy/osu/issues/36888.

oooooooops.
2026-03-09 11:58:58 +01:00
Dan Balasescu
3b86d15572 Mute warning samples during stage fast forwards (#36894)
In particular, the discard stage fast forwards using a 3s timer:
9cb1dd35c6/osu.Server.Spectator/Hubs/Multiplayer/Matchmaking/RankedPlay/Stages/CardDiscardStage.cs (L46-L48)

Play stage changes are only to conform to this new implementation.
2026-03-09 16:14:31 +09:00
Dan Balasescu
a34440888e Fix possible exception (#36895)
Randomly encountered this one. Not sure how it behaves in
practice/whether this is the correct fix, but it should be quite rare?

```
System.ArgumentOutOfRangeException: duration ('-199.99999999999955') must be a non-negative value. (Parameter 'duration')
Actual value was -199.99999999999955.
   at System.ArgumentOutOfRangeException.ThrowNegative[T](T value, String paramName)
   at System.ArgumentOutOfRangeException.ThrowIfNegative[T](T value, String paramName)
   at osu.Framework.Graphics.TransformableExtensions.PopulateTransform[TValue,TEasing,TThis](TThis t, Transform`3 transform, TValue newValue, Double duration, TEasing& easing)
   at osu.Framework.Graphics.TransformableExtensions.MakeTransform[TThis,TEasing,TValue](TThis t, String propertyOrFieldName, TValue newValue, Double duration, TEasing& easing, String grouping)
   at osu.Framework.Graphics.TransformableExtensions.TransformTo[TThis,TValue,TEasing](TThis t, String propertyOrFieldName, TValue newValue, Double duration, TEasing& easing, String grouping)
   at osu.Framework.Graphics.TransformableExtensions.ScaleTo[T,TEasing](T drawable, Vector2 newScale, Double duration, TEasing& easing)
   at osu.Framework.Graphics.TransformableExtensions.ScaleTo[T,TEasing](T drawable, Single newScale, Double duration, TEasing& easing)
   at osu.Framework.Graphics.TransformSequenceExtensions.<>c__DisplayClass42_0`2.<ScaleTo>b__0(T o)
   at osu.Framework.Graphics.Transforms.TransformSequence`1.Append(Generator childGenerator)
   at osu.Framework.Graphics.TransformSequenceExtensions.ScaleTo[T,TEasing](TransformSequence`1 t, Single newScale, Double duration, TEasing easing)
   at osu.Game.Screens.OnlinePlay.Matchmaking.RankedPlay.Card.RankedPlayCard.SongPreviewContainer.PulseContainer.OnNewBeat(Int32 beatIndex, TimingControlPoint timingPoint, EffectControlPoint effectPoint, ChannelAmplitudes amplitudes)
```
2026-03-09 15:49:07 +09:00
Joseph Madamba
e4f7bd5443 Fix score delete dialog not using user-facing rank terminology (#36861)
- Resolves https://github.com/ppy/osu/issues/36859

| Before | After |
| --- | --- |
| <img width="187" height="41" alt="image"
src="https://github.com/user-attachments/assets/4fd10043-38ba-46c3-a7be-3ee957652ef4"
/> | <img width="241" height="43" alt="image"
src="https://github.com/user-attachments/assets/94646620-536d-48ad-b09a-3fbf66dc1684"
/> |

While we're here, should there be more statistics shown? At least score,
and maybe max combo too. Not doing for now.

Proposed order: User (Score, Max Combo, Accuracy, Rank)

Order is derived from the leaderboard score left to right, but
prioritizes score first as I believe that is the most important in
differentiating what score is which.
2026-03-09 14:50:50 +09:00
Dean Herbert
7227afebbb Fix missed using statement 2026-03-09 08:22:16 +09:00
Dean Herbert
e3a0464e90 Update a few sample playback usages to use new helper method 2026-03-07 23:39:20 +09:00
Dean Herbert
14ae2312ff Fix a few flaky tests
See failures on https://github.com/ppy/osu/runs/66073876886#r3s1.
2026-03-07 23:19:13 +09:00
Dean Herbert
c4402e9ce5 Fix potential crash due to handling scores in leaderboard post-disposal (#36860)
Closes https://github.com/ppy/osu/issues/36858. Classic.
2026-03-07 04:40:25 +09:00
Dean Herbert
de9cf751d2 Fix LoadingLayer centering
oops.
2026-03-07 02:51:50 +09:00
Dan Balasescu
0988552567 Implement ranked play (#36819)
I don't really have much to say here. Instead, I'll give a brief history
rundown that lists many pages of documentation you can read, if
interested.

- Started off as BTMC + Happy24 (Vivi)'s ["The
Vision"](https://docs.google.com/document/d/1p1IpPmd2RICp8G4OqkCSs7u8Ug8FbFv8qqP0mfSrHf0/edit?tab=t.0#heading=h.fol093d9f9xi)
- Initial
[designs](https://www.figma.com/design/f5qqC57t9jFlgpzhRqUNVX/The-Vision?node-id=0-1&p=f)
were led by Vivi.
- Designs
[morphed](https://www.figma.com/design/vtFmLrXKvWNyYiRjTezFTM/Untitled--Copy-?node-id=0-1&p=f)
during development into what's currently present, led by @minetoblend.
- There is some more ongoing work creating a [game design
document](https://docs.google.com/document/d/1iffJFCsIBfYF0D4ogItSBEj6YBmbp-rdCpItAeaJiTA/edit?tab=t.0).

**tl;dr:** Create something with the mechanics of a trading card game
within osu!. The name of this is "ranked play".

---

To be frank, a lot of stuff is missing here. Some of it I don't want to
mention, because the point of this exercise is to get the system into
the hands of players, gather feedback especially around mechanics, and
discuss any further direction with the team.

I am expecting a blanket approval on all of the new code, with
particular attention to changes in existing components that I'll point
out in a self review.

There is also some [ongoing
work](https://github.com/smoogipoo/osu/pulls) that may arrive in this
branch prior to being merged.

---------

Co-authored-by: maarvin <minetoblend@gmail.com>
Co-authored-by: Marvin <m.schuerz@hautzy.com>
Co-authored-by: Jamie Taylor <me@nekodex.net>
Co-authored-by: ArijanJ <arijanj@proton.me>
Co-authored-by: Dean Herbert <pe@ppy.sh>
Co-authored-by: Tim Oliver <git@tim.dev>
Co-authored-by: Joseph Madamba <madamba.joehu@outlook.com>
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
Co-authored-by: nil <25884226+voidstar0@users.noreply.github.com>
Co-authored-by: Ботников Максим <mr.botnikoff@ya.ru>
Co-authored-by: Denis Titovets <den232titovets@yandex.ru>
Co-authored-by: Michael Middlezong <119022671+mmiddlezong@users.noreply.github.com>
Co-authored-by: SupDos <6813986+SupDos@users.noreply.github.com>
Co-authored-by: failaip12 <86018517+failaip12@users.noreply.github.com>
2026-03-07 02:30:50 +09:00
复予
0fd0bd3580 Consider comments in wiki's front matter YAML (#36758)
This PR makes front matter items with comments able to be parsed
correctly by the client, for example:

```markdown
---
tags:
  - keyboard
  - tap
  - hybrid
  - play style
needs_cleanup: true  # https://github.com/ppy/osu-wiki/issues/9919
---

# Hybrid

...
```

The front matter YAML used by osu!wiki not complicated, so simply
splitting with `#` is possible.

---------

Co-authored-by: Dean Herbert <pe@ppy.sh>
2026-03-07 01:41:59 +09:00
LA
67543806dc BMSDrawableNote闭合判断 2026-03-06 23:53:38 +08:00
Bartłomiej Dach
16bc1de9fd Allow changing addition bank button state when objects are selected even if the selection has no addition sounds (#36808)
Before:


https://github.com/user-attachments/assets/d87bd7e3-37f8-4634-9e6a-5859d5bade57

After:


https://github.com/user-attachments/assets/4de940af-1e30-4266-9aac-5ccd12f38742

---

The title is convoluted but basically I'm angling to close
https://github.com/ppy/osu/issues/36705 with this.

The point is that on current `master`, the keyboard-hotkey-based toggles
on the left of the screen get disabled if you select a range of objects
which contains no addition samples. The report linked above finds this
annoying because it means you basically always need to add an addition
sound *first* and *then* pick a bank.

This is not necessary, and this commit changes the behaviour such that
the bank selection toggles are no longer blocked when you select a range
of objects without additions. Choosing an addition bank when there are
no additions still does nothing to the selected object, *but* adding a
sound *after* that bank preselection will use the preselected bank
rather than auto.
2026-03-07 00:47:35 +09:00
Bartłomiej Dach
0d74983551 Fix rotation of certain objects breaking change states (#36852)
Closes https://github.com/ppy/osu/issues/36830.

This is a regression from https://github.com/ppy/osu/pull/36681.

Due to the aforementioned pull request's changes, rotating an object
that could not scale on the X or Y axis (due to having that dimension
zero) would trigger `CanScale{X,Y}` to change as said rotated object's
width or height became not zero. This in turn would cause `SelectionBox`
to *fully recreate* all of its handles and buttons, *including* the
rotation handle that initiated the rotation operation, therefore
dropping the ongoing rotation operation completely and leaving the
editor in a half-broken state.

The suggested solution here is to recreate handles more granularly to
prevent this from happening. (I've probably not improved it as much as I
could have, but this is as far as I'm willing to go for now unless
review finds it unpalatable.)
2026-03-07 00:20:10 +09:00
LA
0b6808b724 完善谱面导出,谱包全套转换 2026-03-06 22:31:48 +08:00
Dean Herbert
b46656e7d3 Fix loading spinner not being centered correctly (#36849)
One of those things you can't un-see.

Closes https://github.com/ppy/osu/issues/36832.
2026-03-06 12:11:16 +01:00
Dean Herbert
482d31d598 Fix "no tablet" settings display not updating after language change (#36848)
Closes https://github.com/ppy/osu/issues/36833.

Schedule is unfortunate but I'm not really wanting to go down a rabbit
hole right now.
2026-03-06 12:11:04 +01:00
Bartłomiej Dach
f9e863af01 Remove "copy labels from linked issues" github workflow (#36854)
[It still doesn't
work.](https://github.com/ppy/osu/actions/runs/22759488243/job/66012293202)

Looking at the [job
output](https://github.com/ppy/osu/actions/runs/22759488243/job/66012293202#step:1:21)
it appears that the permissions of the `GITHUB_TOKEN` are
*automatically* constrained to `read` even if you request more scopes.
Would be nice if that was *actually documented* somewhere!

Also given supply-chain attacks that people are running on github [via
*issue titles* these
days](https://grith.ai/blog/clinejection-when-your-ai-tool-installs-another)
I'm not sure we want any automation near where it can reach code. Sure,
much of the fault in the aforementioned attack was the fault of meatbags
trusting clankers *WAY* too much, which is a mistake we *would not* do,
but given everpresent software degradation *from unknown sources and for
unknown reasons* let's not ~~COPILOT~~ *ahem* tempt fate...
2026-03-06 19:54:44 +09:00