Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Feb 8, 2022

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Feb 8, 2022
peppy and others added 29 commits December 18, 2025 22:03
Improve manage collections dialog usability
Some are not immediately relevant to the stacking issue because they
fail both before and after it, just less so after the stacking issue
(half-)fix, and as such have been commented out for the time being.
In order of severity:

- You could actually click on the textbox portion of a disabled textbox,
  focus it, select text, input stuff, and commit, which would die
  on the spot.

- The slider part had no visual indication that it's not interactable
  anymore.
They all pass along with the last stacking threshold fix, so I see no
reason to keep them in.
Closes #36061.

Regressed in #35802.

It's either this or revert of aforementioned pull. I dunno.
Set `Ranked` to `true` for `ManiaModCover`
A few facts of life:

- Guest difficulties are at this point a staple of mapping.

- People are very much used to flinging `.osu`s around (because there's
  no better alternative).

- Currently there are two ways to get an `.osu` out of lazer. You can:

  - Export the beatmap as "compatibility" to an `.osz`, then
    transmogrify the `.osz` to a `.zip`, then extract the `.zip`, then
    pluck out the `.osu`. This is the "correct" way to make sure stable
    works, but is also stupidly arcane.

  - Use "edit externally" to mount the beatmap files to disk, then
    copy-paste out the `.osu`. This is the *wrong* way to make sure
    stable works, because the mounting process exposes the raw "for
    editing" format with features stable doesn't support, but it the
    actual easy one.

- Reports about guest difficulties exported from lazer "working wrong on
  stable" are prevalent. Probably mostly because of the preceding point.

What this PR does is introduce a *third* method to export an `.osu`,
which is designed to be both the easiest one yet *and* correct. I am
hoping this will curb the complaints until support for direct submission
of guest difficulties is added - which I still hope to see, but it will
be a significant effort *client-side* (the server side has been ready
for years now).

And yes, you will notice that much of the code added in
`LegacyBeatmapExporter` related to manipulation of the path is
copy-pasted from `LegacyExporter`. I don't care enough to invent
protected / abstract / whatever else OOP faff for something that may not
survive review and is mostly a weird semi-temporary wart.
The end of `Populate()` is too early to do any validation of online IDs,
as population happens in `PostImport()` via `ProcessBeatmap`.

Additionally, this modifies the check to also include the set's ID. This
is one part of curtailing issues like
https://osu.ppy.sh/community/forums/topics/2162457?n=8 - the featured
artist template beatmap in question has a single difficulty with a bogus
positive beatmap set ID and a beatmap ID of 0, and my opinion is that
this sort of situation should for all intents and purposes cause the
beatmap set's ID to be reset.
…t's validated

Even without the ID resetting logic before `Populate()` getting broken
and annotated with a TODO, this was kinda stupid. Why was purging logic
allowed to run *using a not-yet-completely-validated online ID of the
set*?

This is the other part of hopefully fixing scenarios like
https://osu.ppy.sh/community/forums/topics/2162457?n=8 (hopefully with
no babies poured out in the mean time, but only time will tell).
The test scene doesn't exercise the custom sample playback, but I hope I
can be forgiven for this as setting up a custom editor beatmap just for
this to work is rather cumbersome.
Implement new settings item component
bdach and others added 30 commits January 13, 2026 11:12
Clean up `HubClientConnector` configuration
Update form button UI/UX and support text wrapping
…" text and difficulty bars (#36345)

Fixes: #36312

I think that's exactly what needed to be done to fix this issue.

|master|this PR|
|:---:|:---:|
|<img width="943" height="272" alt="изображение"
src="https://github.com/user-attachments/assets/e6fb57bd-8393-4476-ac73-a8b559365e6d"
/>|<img width="950" height="270" alt="изображение"
src="https://github.com/user-attachments/assets/e09de911-0068-4a8b-9abb-f2aa04a87886"
/>|
|<img width="943" height="274" alt="изображение"
src="https://github.com/user-attachments/assets/637a86f5-ad26-441d-8fa2-bdf113bb636d"
/>|<img width="936" height="272" alt="изображение"
src="https://github.com/user-attachments/assets/d72f52a1-6c17-4156-a4eb-cca36e74f644"
/>|
|<img width="940" height="271" alt="изображение"
src="https://github.com/user-attachments/assets/cf6a5f18-34c8-4f51-867a-ba1fc30b64a5"
/>|<img width="941" height="270" alt="изображение"
src="https://github.com/user-attachments/assets/e21cda45-1a69-4623-b9a7-add3eb7c7013"
/>
|<img width="946" height="275" alt="изображение"
src="https://github.com/user-attachments/assets/e29647bb-c4aa-4d03-a46d-3bbcd43181b6"
/>|<img width="932" height="271" alt="изображение"
src="https://github.com/user-attachments/assets/1f777db2-d0f9-4c2a-91fa-e005b9704c9a"
/>

---------

Co-authored-by: Dean Herbert <[email protected]>
Just a couple of things I noticed in passing:

- When changing the configuration setting, things were not reset.
Likewise, if the setting was off the queues would still be added to but
never flushed.
- When the setting is toggled, a stale next notification time was still
present due to the `??=` and lack of resetting. This should no longer be
the case.
This can cause issues liek loss of replays, so it's worth notifying the
user and keeping things visible.
…notify

Fix notification spam on websocket connection handshake failures
Fix toasts showing "no key bound" for operations which can't have keys bound
…bindables when `TransferValueOnCommit` is true (#36354)

- Addresses #36346 (comment)

The inner slider bar binds its `Current` to
`currentNumberInstantaneous`:


https://github.com/ppy/osu/blob/1add946db486c866cc214c5eb3d728f308aad637/osu.Game/Graphics/UserInterfaceV2/FormSliderBar.cs#L225-L236

But the current bindable of the form component doesn't update because of
this.


https://github.com/ppy/osu/blob/1add946db486c866cc214c5eb3d728f308aad637/osu.Game/Graphics/UserInterfaceV2/FormSliderBar.cs#L285-L293

Fixed it by just moving the `ResetToDefault` action up another level.

---------

Co-authored-by: Dean Herbert <[email protected]>
(partially) Closes: #36233
Surpasses: #36244 

This PR meant to be one of the last steps that finally make editor use
the new forms. Initially it meant to only change one
SliderWithTextBoxInput in "Effects section" in timing screen, however
soon after it was obvious that there's many other places that still
using it. This currently won't affect
IndeterminateSliderWithTextBoxInput that is being used in hitsounds, for
example, since I think it needs more consideration.
Anyways, with this PR, SliderWithTextBoxInput, will no longer be used at
all, as it's going to be replaced with modern FormSliderBar

Comparison:
|master|this PR|
|:---:|:---:|
|<img width="510" height="316"
alt="532203751-eb965923-d3a8-441d-a7c8-5c364a6328ad"
src="https://github.com/user-attachments/assets/268b45b8-e235-494f-91a5-d00db057dba8"
/>|<img width="540" height="321"
alt="535466527-3a700a8b-bc3c-4610-998f-a4e55ee03eed"
src="https://github.com/user-attachments/assets/20cd4b58-b0bd-49bc-8c48-7de5cf8556b3"
/>|
|<img width="694" height="639"
alt="534509844-f00e4da4-53c4-45e8-80ea-1be62da6c83b"
src="https://github.com/user-attachments/assets/398c4484-a867-4df1-9de3-0940aa748a01"
/>|<img width="720" height="433" alt="изображение"
src="https://github.com/user-attachments/assets/b6359443-a224-4a55-b171-07e8f013cf46"
/>|
|<img width="715" height="353"
alt="534509421-a6ac950f-16e8-4a16-bca6-1a781f82135f"
src="https://github.com/user-attachments/assets/4854312b-772f-4b81-a800-89e58d4c715d"
/>|<img width="710" height="296" alt="изображение"
src="https://github.com/user-attachments/assets/a7fed53e-e006-4285-92c9-bb84cb603f60"
/>|
|<img width="717" height="374"
alt="534509478-80222623-7766-481d-8682-088276d415ee"
src="https://github.com/user-attachments/assets/8143b6dc-4599-45d5-bd3b-f059caf3d93d"
/>|<img width="718" height="328" alt="изображение"
src="https://github.com/user-attachments/assets/bffa04de-983c-45ae-a1ec-373701ea0e49"
/>|
|<img width="702" height="446"
alt="534509935-58954060-7ac1-4392-8754-a58f909e86aa"
src="https://github.com/user-attachments/assets/2bb67a2d-3f57-42a1-96ce-b30b4891e1a4"
/>|<img width="722" height="386" alt="изображение"
src="https://github.com/user-attachments/assets/01b7fff4-7f31-4aac-90c9-353b15f4964e"
/>|
Add way to add/remove custom beatmap samples to setup screen
It doesn't work in practice, because the skill baseline of an incoming
"contributor" is so wildly variant that any issue that isn't explicitly
a one-liner is automatically not suitable for *some* non-trivial subset
of "new contributor".

The label is also largely used by incoming contributors whose interests
are not necessarily aligned with the project but instead appear to have
other ulterior motives.
Alternative to / closes #36341
See also: ppy/osu-server-spectator#415

This is a simple solution by adding a spectator endpoint to refresh the
friend listing. A more complicated form of this is to make
adding/removing friends only via spectator, but that would require
osu-web changes too.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.