Open
Conversation
Fix legacy health display using incorrect bulge texture when at low HP
Locally schedule beatmap skin change callbacks to ensure they fire at valid times
Work around flaky `TestSceneFirstRunSetupOverlay` tests
TC is a mod that always increases difficulty and is quite similar to HD. Given we even have diffcalc/pp considerations for it it's time to move it to the category it belongs. This doesn't cover any other mods that might need reshuffling too because TC is the only one that has actual impact on difficulty-based leaderboards (as in pp) and some people are actively playing it for the difficulty increase and not just as a fun gimmick. After a quick search turns out it was difficulty increasing from the start but was moved to fun in review #3569 (comment) but I don't really agree with that. Also as far as I know multimods don't do anything anymore?.. I've put it into HD multimod for consistency, but can move it to be separate if you want Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
Nothing really egregious here so not bothering with PR review. One dodgy bug which has been [reported](https://youtrack.jetbrains.com/issue/RIDER-135036/Incorrect-recursive-on-all-execution-paths-inspection) and temporarily ignored.
Fix previous usernames display showing underneath other elements
It's one of the more important sections so I want to make it easier to find.
I turned masking back on on these for better visuals (text masking aligns with rest of elements) but turns out this implicitly makes borders draw.
[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...
One of those things you can't un-see. Closes #36832.
Closes #36830. This is a regression from #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.)
…ven 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 #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.
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 # ppy/osu-wiki#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>
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>
See failures on https://github.com/ppy/osu/runs/66073876886#r3s1.
- Resolves #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.
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)
```
In particular, the discard stage fast forwards using a 3s timer: https://github.com/ppy/osu-server-spectator/blob/9cb1dd35c677f216a7cf93b04fd490c68a76f632/osu.Server.Spectator/Hubs/Multiplayer/Matchmaking/RankedPlay/Stages/CardDiscardStage.cs#L46-L48 Play stage changes are only to conform to this new implementation.
closes #36888. oooooooops.
It's a continuation of #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
…ror 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 https://github.com/ppy/osu/blob/7263551aa868911a7d9148cf2cb16f9e0325f531/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>
… 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 ppy/osu-framework#6717 to work - Closes #21076 - Closes #22676 - Closes #28666 --------- Co-authored-by: Dean Herbert <pe@ppy.sh>
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>
changes can be reviewed commit by commit --------- Co-authored-by: Dean Herbert <pe@ppy.sh>
…6915) closes #36892. |master|This PR| |---|---| |||
This is kind of annoying... Some hit results are given custom names (e.g. "slider tick"): https://github.com/ppy/osu/blob/87b37fd3860d75c0a90f7a67adb94e3267d1779b/osu.Game.Rulesets.Osu/OsuRuleset.cs#L301-L320 While others go through that `base` call which uses the enum descriptions (e.g. "Great"): https://github.com/ppy/osu/blob/87b37fd3860d75c0a90f7a67adb94e3267d1779b/osu.Game/Rulesets/Scoring/HitResult.cs#L53-L56
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.
As mentioned in #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?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )