diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f041f2e916..7dfe3d11c2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -131,7 +131,7 @@ jobs:
build-only-ios:
name: Build only (iOS)
- runs-on: macos-latest
+ runs-on: macos-15
timeout-minutes: 60
steps:
- name: Checkout
@@ -143,7 +143,12 @@ jobs:
dotnet-version: "8.0.x"
- name: Install .NET Workloads
- run: dotnet workload install ios --from-rollback-file https://raw.githubusercontent.com/ppy/osu-framework/refs/heads/master/workloads.json
+ run: dotnet workload install ios
+
+ # https://github.com/dotnet/macios/issues/19157
+ # https://github.com/actions/runner-images/issues/12758
+ - name: Use Xcode 16.4
+ run: sudo xcode-select -switch /Applications/Xcode_16.4.app
- name: Build
run: dotnet build -c Debug osu.iOS.slnf
diff --git a/Directory.Build.props b/Directory.Build.props
index 580e61dafb..a856825d87 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -50,7 +50,7 @@
https://github.com/ppy/osu
Automated release.
ppy Pty Ltd
- Copyright (c) 2024 ppy Pty Ltd
+ Copyright (c) 2025 ppy Pty Ltd
osu game
diff --git a/LICENCE b/LICENCE
index 3bb8b62d5d..9ffcc70c13 100644
--- a/LICENCE
+++ b/LICENCE
@@ -1,4 +1,4 @@
-Copyright (c) 2024 ppy Pty Ltd .
+Copyright (c) 2025 ppy Pty Ltd .
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Templates/osu.Game.Templates.csproj b/Templates/osu.Game.Templates.csproj
index 186a6093f5..ecac2e4794 100644
--- a/Templates/osu.Game.Templates.csproj
+++ b/Templates/osu.Game.Templates.csproj
@@ -8,7 +8,7 @@
https://github.com/ppy/osu/blob/master/Templates
https://github.com/ppy/osu
Automated release.
- Copyright (c) 2024 ppy Pty Ltd
+ Copyright (c) 2025 ppy Pty Ltd
Templates to use when creating a ruleset for consumption in osu!.
dotnet-new;templates;osu
netstandard2.1
diff --git a/osu.Android.props b/osu.Android.props
index de3fe31ee6..5d9158a45a 100644
--- a/osu.Android.props
+++ b/osu.Android.props
@@ -10,7 +10,7 @@
true
-
+
diff --git a/osu.iOS.props b/osu.iOS.props
index bb5e3da49e..8e269d292d 100644
--- a/osu.iOS.props
+++ b/osu.iOS.props
@@ -17,6 +17,6 @@
-all
-
+
diff --git a/osu.iOS/OsuGameIOS.cs b/osu.iOS/OsuGameIOS.cs
index 96b8fb9804..fff781f38f 100644
--- a/osu.iOS/OsuGameIOS.cs
+++ b/osu.iOS/OsuGameIOS.cs
@@ -19,8 +19,11 @@ namespace osu.iOS
public partial class OsuGameIOS : OsuGame
{
private readonly AppDelegate appDelegate;
+
public override Version AssemblyVersion => new Version(NSBundle.MainBundle.InfoDictionary["CFBundleVersion"].ToString());
+ public override string Version => NSBundle.MainBundle.InfoDictionary["OsuVersion"].ToString();
+
public override bool HideUnlicensedContent => true;
public override Vector2 ScalingContainerTargetDrawSize => new Vector2(1024, 1024 * DrawHeight / DrawWidth);
diff --git a/osu.iOS/osu.iOS.csproj b/osu.iOS/osu.iOS.csproj
index 19c0c610b5..3e8beddaa4 100644
--- a/osu.iOS/osu.iOS.csproj
+++ b/osu.iOS/osu.iOS.csproj
@@ -4,8 +4,12 @@
13.4
Exe
0.1.0
- $(Version)
- $(Version)
+
+
+ $([System.String]::Copy('$(Version)').Split('-')[0])
+
+ $(VersionNoSuffix)
+ $(VersionNoSuffix)
@@ -18,4 +22,14 @@
+
+
+
+ $(AppBundleDir)/Info.plist
+ OsuVersion
+
+
+