Commit Graph

677 Commits

Author SHA1 Message Date
Dan Balasescu 8e8ba9e77f
Fix more CI inspections 2024-02-02 21:36:41 +09:00
Dan Balasescu dda691b8c2
Fix NVAPI compile error 2024-02-02 21:28:52 +09:00
Dan Balasescu 6e4d52863c
Upgrade to .NET 8 SDK 2024-02-02 21:28:51 +09:00
Bartłomiej Dach 6931af664e
Add missing `icon.png` entry to nuspec
This is only half of the deployment fix, the other half will be in
`osu-deploy` (making sure the icon is actually in the staging
directory).
2024-01-30 12:05:31 +01:00
Dean Herbert f54e1418ae
Update to v4 2024-01-27 01:42:47 +09:00
Dean Herbert 84a0291c85
Update icon in nuspec file 2024-01-26 12:32:18 +09:00
Dean Herbert 2941787f5e
Update windows logo 2024-01-25 20:37:50 +09:00
Dean Herbert 7e8b3d03fa
Update copyright years 2024-01-25 20:37:50 +09:00
Dean Herbert a69fd8198d
Update framework and other nuget packages
- Moq held back because dicks
- NUnit held back because large API changes (trivial but effort)
- SignalR held back due to api deprecations
2024-01-21 11:00:53 +09:00
Dean Herbert 82e7643df5
Update IPC usages
Of note, I've disabled IPC on visual test runners as we generally don't
use IPC in these cases. Having it set means that the game will not open
while visual tests are open, which has been a complaint from devs in the
past.
2024-01-18 19:45:36 +09:00
Bartłomiej Dach 1e3c332658
Fix broken installer
Closes https://github.com/ppy/osu/issues/26510.

Time for a rant.

Technically, this "broke" with 9e8d07d314,
but it is actually an end result of upstream behaviours that I am
failing to find a better description for than "utterly broken".

Squirrel (the installer we use) has unit tests. Which is great, power
to them. However, the method in which that testing is implemented leads
to epic levels of WTF breakage.

To determine whether Squirrel is being tested right now, it is checking
all currently loaded assemblies, and determining that if any loaded
assembly contains the magic string of "NUNIT" - among others - it must
be being tested right now:

    2442721748/src/Squirrel/SimpleSplat/PlatformModeDetector.cs (L17-L32)

If one assumes that there is no conceivable way that an NUnit assembly
*may* be loaded *without* it being a test context, this *may* seem sane.
Foreshadowing.

(Now, to avoid being hypocritical, we also do this, *but* we do this
by checking if the *entry* assembly is an NUnit:

    92db55a527/osu.Framework/Development/DebugUtils.cs (L16-L34)

which seems *much* saner, no?)

Now, why did this break with 9e8d07d314
*specifically*, you might wonder?

Well the reason is this line:

    3d3f58c252/osu.Desktop/NVAPI.cs (L183)

Yes you are reading this correctly, it's not NVAPI anything itself that
breaks this, it is *a log statement*. To be precise, what the log
statement *does* to provoke this, is calling into framework. That causes
the framework assembly to load, *which* transitively loads the
`nunit.framework` assembly.

(If you ever find yourself wanting to find out this sort of cursed
knowledge - I hope you never need to - you can run something along
the lines of

    dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4 -- .\osu!.exe

then open the resulting trace in PerfView, and then search the
`Microsoft-Windows-DotNETRuntime/AssemblyLoader/Start` log for
the cursed assembly. In this case, the relevant entry said something
along the lines of

    HasStack="True"
    ThreadID="23,924"
    ProcessorNumber="0"
    ClrInstanceID="6"
    AssemblyName="nunit.framework, Version=3.13.3.0, Culture=neutral, PublicKeyToken=2638cd05610744eb"
    AssemblyPath=""
    RequestingAssembly="osu.Framework, Version=2024.113.0.0, Culture=neutral, PublicKeyToken=null"
    AssemblyLoadContext="Default"
    RequestingAssemblyLoadContext="Default"
    ActivityID="/#21032/1/26/"

Either that or just comment the log line for kicks. But the above
is *much* faster.)

Now, what *happens* if Squirrel "detects" that it is being "tested"?
Well, it will refuse to close after executing the "hooks" defined via
`SquirrelAwareApp`:

    2442721748/src/Squirrel/SquirrelAwareApp.cs (L85-L88)

and it will also refuse to create version shortcuts:

    2442721748/src/Squirrel/UpdateManager.Shortcuts.cs (L63-L65)

Sounds familiar, don't it?

There are days on which I tire of computers. Today is one of them.
2024-01-13 22:04:21 +01:00
Bartłomiej Dach 474c416bd9
Make `dotnet format` shut up about naming 2024-01-03 10:05:11 +01:00
Dean Herbert d38f8d9c78
Change threaded optimisations setting to "Auto" on startup 2024-01-03 15:41:08 +09:00
Dean Herbert 9e8d07d314
Add NVAPI and force thread optimisations on
This undoes what stable does to force this setting off.
2024-01-03 15:41:08 +09:00
Bartłomiej Dach d66fa09320
Simplify `UserStatus` to be an enumeration type
There were absolutely no gains from having it be a reference type /
class, only complications, especially when coming from the serialisation
angle.
2023-12-06 18:52:27 +01:00
Bartłomiej Dach cb823f367f
Simplify `UserActivity` for serialisability over the wire
Up until now, the `UserActivity` class hierarchy contained things like
beatmap info, room info, full replay info, etc. While this was
convenient, it is soon going to be less so, as the data is sent over the
wire to the spectator server so that the user's activity can be
broadcast to other clients.

To counteract this without creating a second separate and slimmed-down
class hierarchy, slim down the `UserActivity` structure to contain the
bare minimum amounts of data such that the structures aren't overly
large and complex to serialise, but also contain enough data that they
can be used by receiving clients directly without having to do beatmap
or score lookups.
2023-12-06 18:52:26 +01:00
Dean Herbert 12a148d108
Use new initialisation structure for github sourced update manager 2023-11-09 12:26:41 +09:00
Dean Herbert 02d9f005d0
Update squirrel to latest release
Quite a few fixes since our last update. See https://github.com/clowd/Clowd.Squirrel/releases.

Of special note is [a fix for incomplete updates](https://github.com/clowd/Clowd.Squirrel/issues/182)
which I believe we've seen cause issues in the wild before.
2023-11-07 21:28:36 +09:00
Dean Herbert 56b5f52e83 Update all dependencies (except for Moq) 2023-09-16 15:37:31 +09:00
Dean Herbert 56a4989f71 Disable IPC binding in tournament client to allow running concurrently 2023-08-16 16:55:48 +09:00
Bartłomiej Dach 37361cd683
Repurpose `Flat{File -> }WorkingBeatmap` 2023-08-12 00:49:42 +02:00
Bartłomiej Dach 17aac0694e
Re-enable connection retrying on discord connector 2023-07-17 19:19:03 +02:00
Dean Herbert a6b1559e1f Update `DiscordRichPresence` to pull in performance fix
See https://github.com/Lachee/discord-rpc-csharp/pull/237
2023-07-17 02:24:51 +09:00
Dean Herbert 4ee1f6a49f
Merge pull request #24092 from Susko3/fix-manifest-dpi
Merge `app.manifest`s and let framework set DPI awareness options
2023-07-11 14:12:28 +09:00
Dean Herbert 1d9d90e6e3 Merge branch 'master' into framework-IWindow-changes 2023-07-07 20:57:48 +09:00
Dean Herbert d74b1e148d Make `ScoreInfo.BeatmapInfo` nullable 2023-07-04 14:50:34 +09:00
Susko3 e38ac4185c Update inline with framework `IWindow` changes 2023-07-01 19:02:09 +02:00
Susko3 e505e71d07 Merge the two `app.manifest` files 2023-06-30 21:40:00 +02:00
Dean Herbert c3f772f0da Add method to queue a restart after app is exited (when supported) 2023-06-21 19:06:28 +09:00
Salman Ahmed 25fa4a2eb5 Move `DragDrop` handling to base game implementation for iOS support 2023-06-17 20:30:22 +03:00
Dean Herbert 7cf50b1e18 Disallow game to check for updates while gameplay is active 2023-05-23 18:06:04 +09:00
Dean Herbert 09899819c9
Merge pull request #22914 from Susko3/remove-arbitrary-extension-limitation
Remove arbitrary extension limitation from drag and drop imports
2023-03-20 14:55:03 +09:00
Dean Herbert 11f52d5bf4 Remove unused using statement 2023-03-20 14:01:35 +09:00
Susko3 b254dbd7ca Remove arbitrary extension limitation from drag and drop imports
`OsuGameBase` already properly handles multiple extensions in the same import.
2023-03-19 17:37:49 +01:00
Susko3 48b6e214af Fix URL handling on macOS 2023-03-19 17:14:25 +01:00
Joseph Madamba afb66d8af4 Make user activity class names more specific 2023-02-12 12:32:17 -08:00
Bartłomiej Dach 7b2c5ab7eb
Merge pull request #22608 from peppy/update-dependencies
Update realm and other dependencies
2023-02-11 12:37:02 +01:00
Dean Herbert 20f3ab167e Re-centralise `BannedApiAnalysers` nuget package 2023-02-11 19:36:40 +09:00
Dean Herbert 0c5dae5f26
Merge pull request #22529 from ItsShamed/dsc/presence
Add support for `Watching` and `Spectating` activities in `ReplayPlayer` and `SoloSpectatingPlayer`
2023-02-11 17:29:47 +09:00
Dean Herbert 86c8675910 Update realm and other dependencies 2023-02-11 13:52:24 +09:00
tsrk da10166628
quality: convert getter property to method so that sensible information can be hidden via an argument 2023-02-06 21:30:55 +00:00
tsrk bc89f8dc5b
feat: add name and rulset verb display support 2023-02-06 12:44:00 +00:00
Susko3 5087377da6 Use IPC archive import in `OsuGameDesktop` 2023-02-03 18:57:50 +01:00
Dan Balasescu 7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dean Herbert 923d44a769 Update dependencies 2022-11-04 17:00:58 +09:00
Salman Ahmed 27ce3d8342 Fix input settings not displaying in visual test browser 2022-10-21 01:52:19 +03:00
Dean Herbert e06ece7531 Update framework 2022-10-05 14:19:51 +09:00
Dean Herbert 65d1c40dd5 Remove remaining package references and replace with `SQLitePCLRaw` direct reference
This may require further consideration for test and iOS projects.
2022-09-15 16:58:58 +09:00
Dean Herbert 40a60f7145 Remove all entity framework code and migrations 2022-09-15 16:58:58 +09:00
Dean Herbert eca241e9a7 Move `UpdateProgressNotification` to base `UpdateManager` class 2022-09-12 14:52:11 +09:00