diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 562886b2..8e350994 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,13 +3,13 @@
"isRoot": true,
"tools": {
"strawberryshake.tools": {
- "version": "13.4.0",
+ "version": "13.7.0",
"commands": [
"dotnet-graphql"
]
},
"dotnet-ef": {
- "version": "7.0.9",
+ "version": "8.0.0",
"commands": [
"dotnet-ef"
]
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index a51403eb..76eeb9d6 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -32,7 +32,7 @@ jobs:
- name: Update dotnet
uses: actions/setup-dotnet@v1
with:
- dotnet-version: '7.0.x'
+ dotnet-version: '8.0.x'
- name: Checkout repository
uses: actions/checkout@v2
diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index 0aaa9bdd..cbaf7654 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -15,7 +15,7 @@ jobs:
- name: update dotnet core sdk
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
- name: dotnet restore (first try)
run: dotnet restore --ignore-failed-sources
- name: dotnet restore (second try)
@@ -35,7 +35,7 @@ jobs:
- name: update dotnet core sdk
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
- name: dotnet restore (first try)
run: dotnet restore --ignore-failed-sources
- name: dotnet restore (second try)
@@ -70,7 +70,7 @@ jobs:
- name: update dotnet core sdk
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 7.0.x
+ dotnet-version: 8.0.x
- name: dotnet restore (first try)
run: dotnet restore --ignore-failed-sources
- name: dotnet restore (second try)
diff --git a/Clients/CirrusCiClient/CirrusCiClient.csproj b/Clients/CirrusCiClient/CirrusCiClient.csproj
index 83904cec..35b18f21 100644
--- a/Clients/CirrusCiClient/CirrusCiClient.csproj
+++ b/Clients/CirrusCiClient/CirrusCiClient.csproj
@@ -1,6 +1,6 @@
- net7.0
+ net8.0
enable
false
@@ -8,9 +8,9 @@
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/Clients/CompatApiClient/CompatApiClient.csproj b/Clients/CompatApiClient/CompatApiClient.csproj
index 50d5e0da..8dcd4401 100644
--- a/Clients/CompatApiClient/CompatApiClient.csproj
+++ b/Clients/CompatApiClient/CompatApiClient.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net8.0
enable
@@ -14,10 +14,10 @@
-
-
+
+
-
+
diff --git a/Clients/GithubClient/GithubClient.csproj b/Clients/GithubClient/GithubClient.csproj
index 7dc51625..6a75bf67 100644
--- a/Clients/GithubClient/GithubClient.csproj
+++ b/Clients/GithubClient/GithubClient.csproj
@@ -1,12 +1,12 @@
- net7.0
+ net8.0
latest
enable
-
-
+
+
diff --git a/Clients/IrdLibraryClient/IrdLibraryClient.csproj b/Clients/IrdLibraryClient/IrdLibraryClient.csproj
index acc5084c..301f731a 100644
--- a/Clients/IrdLibraryClient/IrdLibraryClient.csproj
+++ b/Clients/IrdLibraryClient/IrdLibraryClient.csproj
@@ -1,13 +1,13 @@
- net7.0
+ net8.0
latest
enable
-
+
diff --git a/Clients/MediafireClient/MediafireClient.csproj b/Clients/MediafireClient/MediafireClient.csproj
index 55470b37..1e501172 100644
--- a/Clients/MediafireClient/MediafireClient.csproj
+++ b/Clients/MediafireClient/MediafireClient.csproj
@@ -1,6 +1,6 @@
- net7.0
+ net8.0
enable
diff --git a/Clients/OneDriveClient/OneDriveClient.csproj b/Clients/OneDriveClient/OneDriveClient.csproj
index 55470b37..1e501172 100644
--- a/Clients/OneDriveClient/OneDriveClient.csproj
+++ b/Clients/OneDriveClient/OneDriveClient.csproj
@@ -1,6 +1,6 @@
- net7.0
+ net8.0
enable
diff --git a/Clients/PsnClient/PsnClient.csproj b/Clients/PsnClient/PsnClient.csproj
index f7647ba6..2cb1ee58 100644
--- a/Clients/PsnClient/PsnClient.csproj
+++ b/Clients/PsnClient/PsnClient.csproj
@@ -1,6 +1,6 @@
- net7.0
+ net8.0
enable
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/Clients/YandexDiskClient/YandexDiskClient.csproj b/Clients/YandexDiskClient/YandexDiskClient.csproj
index 55470b37..1e501172 100644
--- a/Clients/YandexDiskClient/YandexDiskClient.csproj
+++ b/Clients/YandexDiskClient/YandexDiskClient.csproj
@@ -1,6 +1,6 @@
- net7.0
+ net8.0
enable
diff --git a/CompatBot/Commands/Pr.cs b/CompatBot/Commands/Pr.cs
index bccc122b..50fbbd88 100644
--- a/CompatBot/Commands/Pr.cs
+++ b/CompatBot/Commands/Pr.cs
@@ -2,7 +2,6 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using CirrusCiClient;
using CompatApiClient.Utils;
using CompatBot.Commands.Attributes;
using CompatBot.Utils;
@@ -12,7 +11,8 @@
using DSharpPlus.CommandsNext;
using DSharpPlus.CommandsNext.Attributes;
using DSharpPlus.Entities;
-using TaskStatus = CirrusCiClient.Generated.TaskStatus;
+using Microsoft.TeamFoundation.Build.WebApi;
+using BuildStatus = Microsoft.TeamFoundation.Build.WebApi.BuildStatus;
namespace CompatBot.Commands;
@@ -134,13 +134,13 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
string? macDownloadText = null;
string? buildTime = null;
- if (prInfo.Head?.Sha is string commit)
+ if (azureClient != null && prInfo.Head?.Sha is string commit)
try
{
windowsDownloadText = "⏳ Pending...";
linuxDownloadText = "⏳ Pending...";
macDownloadText = "⏳ Pending...";
- var latestBuild = await CirrusCi.GetPrBuildInfoAsync(commit, prInfo.MergedAt?.DateTime, pr, Config.Cts.Token).ConfigureAwait(false);
+ var latestBuild = await azureClient.GetPrBuildInfoAsync(commit, prInfo.MergedAt?.DateTime, pr, Config.Cts.Token).ConfigureAwait(false);
if (latestBuild == null)
{
if (state == "Open")
@@ -155,20 +155,23 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
{
bool shouldHaveArtifacts = false;
- if ((latestBuild.WindowsBuild?.Status is TaskStatus.Completed
- || latestBuild.LinuxBuild?.Status is TaskStatus.Completed
- || latestBuild.MacBuild?.Status is TaskStatus.Completed)
- && latestBuild.FinishTime.HasValue)
+ if (latestBuild is
+ {
+ Status: BuildStatus.Completed,
+ Result: BuildResult.Succeeded or BuildResult.PartiallySucceeded,
+ FinishTime: not null
+ })
{
buildTime = $"Built on {latestBuild.FinishTime:u} ({(DateTime.UtcNow - latestBuild.FinishTime.Value).AsTimeDeltaDescription()} ago)";
shouldHaveArtifacts = true;
}
// Check for subtask errors (win/lin/mac)
- if (latestBuild.WindowsBuild?.Status is TaskStatus.Aborted or TaskStatus.Failed or TaskStatus.Skipped)
+ if (latestBuild.Result is BuildResult.Failed or BuildResult.Canceled)
{
- windowsDownloadText = $"❌ {latestBuild.WindowsBuild?.Status}";
+ windowsDownloadText = $"❌ {latestBuild.Result}";
}
+ /*
if (latestBuild.LinuxBuild?.Status is TaskStatus.Aborted or TaskStatus.Failed or TaskStatus.Skipped)
{
linuxDownloadText = $"❌ {latestBuild.LinuxBuild?.Status}";
@@ -177,17 +180,20 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
{
macDownloadText = $"❌ {latestBuild.MacBuild?.Status}";
}
+ */
// Check estimated time for pending builds
- if (latestBuild.WindowsBuild?.Status is TaskStatus.Executing
- || latestBuild.LinuxBuild?.Status is TaskStatus.Executing
- || latestBuild.MacBuild?.Status is TaskStatus.Executing)
+ if (latestBuild is { Status: BuildStatus.InProgress, StartTime: not null })
{
- var estimatedCompletionTime = latestBuild.StartTime + (await CirrusCi.GetPipelineDurationAsync(Config.Cts.Token).ConfigureAwait(false)).Mean;
+ var estimatedCompletionTime = latestBuild.StartTime.Value + (await azureClient.GetPipelineDurationAsync(Config.Cts.Token).ConfigureAwait(false)).Mean;
var estimatedTime = TimeSpan.FromMinutes(1);
if (estimatedCompletionTime > DateTime.UtcNow)
estimatedTime = estimatedCompletionTime - DateTime.UtcNow;
+ windowsDownloadText = $"⏳ Pending in {estimatedTime.AsTimeDeltaDescription()}...";
+ linuxDownloadText = windowsDownloadText;
+ macDownloadText = windowsDownloadText;
+ /*
if (latestBuild.WindowsBuild?.Status is TaskStatus.Executing)
{
windowsDownloadText = $"⏳ Pending in {estimatedTime.AsTimeDeltaDescription()}...";
@@ -200,13 +206,14 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
{
macDownloadText = $"⏳ Pending in {estimatedTime.AsTimeDeltaDescription()}...";
}
+ */
}
// windows build
- var name = latestBuild.WindowsBuild?.Filename ?? "Windows PR Build";
+ var name = latestBuild.WindowsFilename ?? "Windows PR Build";
name = name.Replace("rpcs3-", "").Replace("_win64", "");
- if (!string.IsNullOrEmpty(latestBuild.WindowsBuild?.DownloadLink))
- windowsDownloadText = $"[⏬ {name}]({latestBuild.WindowsBuild?.DownloadLink})";
+ if (!string.IsNullOrEmpty(latestBuild.WindowsBuildDownloadLink))
+ windowsDownloadText = $"[⏬ {name}]({latestBuild.WindowsBuildDownloadLink})";
else if (shouldHaveArtifacts)
{
if (latestBuild.FinishTime.HasValue && (DateTime.UtcNow - latestBuild.FinishTime.Value).TotalDays > 30)
@@ -214,10 +221,10 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
}
// linux build
- name = latestBuild.LinuxBuild?.Filename ?? "Linux PR Build";
+ name = latestBuild.LinuxFilename ?? "Linux PR Build";
name = name.Replace("rpcs3-", "").Replace("_linux64", "");
- if (!string.IsNullOrEmpty(latestBuild.LinuxBuild?.DownloadLink))
- linuxDownloadText = $"[⏬ {name}]({latestBuild.LinuxBuild?.DownloadLink})";
+ if (!string.IsNullOrEmpty(latestBuild.LinuxBuildDownloadLink))
+ linuxDownloadText = $"[⏬ {name}]({latestBuild.LinuxBuildDownloadLink})";
else if (shouldHaveArtifacts)
{
if (latestBuild.FinishTime.HasValue && (DateTime.UtcNow - latestBuild.FinishTime.Value).TotalDays > 30)
@@ -225,10 +232,10 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
}
// mac build
- name = latestBuild.MacBuild?.Filename ?? "Mac PR Build";
+ name = latestBuild.MacFilename ?? "Mac PR Build";
name = name.Replace("rpcs3-", "").Replace("_macos", "");
- if (!string.IsNullOrEmpty(latestBuild.MacBuild?.DownloadLink))
- macDownloadText = $"[⏬ {name}]({latestBuild.MacBuild?.DownloadLink})";
+ if (!string.IsNullOrEmpty(latestBuild.MacBuildDownloadLink))
+ macDownloadText = $"[⏬ {name}]({latestBuild.MacBuildDownloadLink})";
else if (shouldHaveArtifacts)
{
if (latestBuild.FinishTime.HasValue && (DateTime.UtcNow - latestBuild.FinishTime.Value).TotalDays > 30)
@@ -236,7 +243,7 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
}
// Neatify PR's with missing builders
- if (latestBuild.WindowsBuild?.Status is null)
+ /*if (latestBuild.WindowsBuild?.Status is null)
{
windowsDownloadText = null;
}
@@ -247,9 +254,7 @@ public static async Task LinkPrBuild(DiscordClient client, DiscordMessage messag
if (latestBuild.MacBuild?.Status is null)
{
macDownloadText = null;
- }
-
-
+ }*/
}
}
catch (Exception e)
diff --git a/CompatBot/Commands/Sudo.Bot.cs b/CompatBot/Commands/Sudo.Bot.cs
index 8301832f..a463d5a1 100644
--- a/CompatBot/Commands/Sudo.Bot.cs
+++ b/CompatBot/Commands/Sudo.Bot.cs
@@ -87,7 +87,7 @@ await ctx.Channel.SendMessageAsync(ctx.Channel.IsPrivate
).ConfigureAwait(false);
Config.Log.Info($"Shutting down by request from {ctx.User.Username}#{ctx.User.Discriminator}");
Config.InMemorySettings["shutdown"] = "true";
- Config.Cts.Cancel();
+ await Config.Cts.CancelAsync().ConfigureAwait(false);
}
[Command("status")]
diff --git a/CompatBot/CompatBot.csproj b/CompatBot/CompatBot.csproj
index 9f95c26c..03d9ac18 100644
--- a/CompatBot/CompatBot.csproj
+++ b/CompatBot/CompatBot.csproj
@@ -1,7 +1,7 @@
Exe
- net7.0
+ net8.0
true
CompatBot
c2e6548b-b215-4a18-a010-958ef294b310
@@ -39,36 +39,36 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/CompatBot/Program.cs b/CompatBot/Program.cs
index 47fc3a3a..cf888572 100644
--- a/CompatBot/Program.cs
+++ b/CompatBot/Program.cs
@@ -6,7 +6,6 @@
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using CirrusCiClient;
using CompatBot.Commands;
using CompatBot.Commands.Converters;
using CompatBot.Database;
@@ -122,7 +121,6 @@ internal static async Task Main(string[] args)
CompatList.ImportCompatListAsync(),
Config.GetAzureDevOpsClient().GetPipelineDurationAsync(Config.Cts.Token),
Config.GetCurrentGitRevisionAsync(Config.Cts.Token),
- CirrusCi.GetPipelineDurationAsync(Config.Cts.Token),
Sudo.Bot.UpdateCheckScheduledAsync(Config.Cts.Token)
);
diff --git a/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.GeneralNotesSection.cs b/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.GeneralNotesSection.cs
index f4101d2b..a1af0613 100644
--- a/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.GeneralNotesSection.cs
+++ b/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.GeneralNotesSection.cs
@@ -255,7 +255,7 @@ private static async Task BuildNotesSectionAsync(DiscordEmbedBuilder builder, Lo
if (items["os_type"] == "Windows"
&& Version.TryParse(items["os_version"], out var winVersion)
- && (winVersion is { Major: < 10 } or { Build: < 19045 or (> 20000 and < 22000) }))
+ && (winVersion is { Major: < 10 } or { Build: < 19045 or (> 20000 and < 22621) }))
notes.Add("⚠️ Please [upgrade your Windows](https://www.microsoft.com/en-us/software-download/windows11) to currently supported version");
var gpuInfo = items["gpu_info"] ?? items["discrete_gpu_info"];
@@ -265,12 +265,14 @@ private static async Task BuildNotesSectionAsync(DiscordEmbedBuilder builder, Lo
{
var family = intelMatch.Groups["gpu_family"].Value.TrimEnd();
var modelNumber = intelMatch.Groups["gpu_model_number"].Value;
+ if (modelNumber is null or "" && family.Split(' ', 2, StringSplitOptions.TrimEntries) is [string fp, string mp])
+ (family, modelNumber) = (fp, mp);
if (!string.IsNullOrEmpty(modelNumber) && modelNumber.StartsWith('P'))
modelNumber = modelNumber[1..];
_ = int.TryParse(modelNumber, out var modelNumberInt);
if (family is "UHD" or "Iris Plus" or "Iris Xe" || modelNumberInt is > 500 and < 1000)
notes.Add("⚠️ Intel iGPUs are not officially supported; visual glitches are to be expected");
- else
+ else if (family is not "Arc")
{
notes.Add("⚠️ Intel iGPUs before Skylake do not fully comply with OpenGL 4.3");
supportedGpu = false;
diff --git a/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.cs b/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.cs
index c78f60c0..41476c0b 100644
--- a/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.cs
+++ b/CompatBot/Utils/ResultFormatters/LogParserResultFormatter.cs
@@ -958,7 +958,7 @@ select m
< 21390 => "10 Dev Build " + windowsVersion.Build,
21390 => "10 21H2 Insider",
< 22000 => "11 Internal Build " + windowsVersion.Build,
- 22000 => "11 21H2",
+ 22000 => "11 21H2", // deprecated
< 22621 => "11 22H2 Insider Build " + windowsVersion.Build,
22621 => "11 22H2",
22631 => "11 23H2",
diff --git a/Dockerfile b/Dockerfile
index efd10e7c..4d21a9ee 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/sdk:7.0-jammy AS base
+FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy AS base
# Native libgdiplus dependencies
RUN apt-get update
diff --git a/HomoglyphConverter/HomoglyphConverter.csproj b/HomoglyphConverter/HomoglyphConverter.csproj
index c85e6bb0..372d377f 100644
--- a/HomoglyphConverter/HomoglyphConverter.csproj
+++ b/HomoglyphConverter/HomoglyphConverter.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net8.0
latest
enable
false
diff --git a/HomoglyphConverter/confusables.txt b/HomoglyphConverter/confusables.txt
index 327a5f32..cf73eca0 100644
--- a/HomoglyphConverter/confusables.txt
+++ b/HomoglyphConverter/confusables.txt
@@ -1,11 +1,11 @@
# confusables.txt
-# Date: 2022-08-26, 16:49:08 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-11, 17:46:40 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Security Mechanisms for UTS #39
-# Version: 15.0.0
+# Version: 15.1.0
#
# For documentation and usage, see https://www.unicode.org/reports/tr39
#
@@ -349,8 +349,8 @@ A4FA ; 002E 002E ; MA # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, F
A6F4 ; A6F3 A6F3 ; MA #* ( ꛴ → ꛳꛳ ) BAMUM COLON → BAMUM FULL STOP, BAMUM FULL STOP #
-30FB ; 00B7 ; MA #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
-FF65 ; 00B7 ; MA #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
+30FB ; 00B7 ; MA # ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
+FF65 ; 00B7 ; MA # ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
16EB ; 00B7 ; MA #* ( ᛫ → · ) RUNIC SINGLE PUNCTUATION → MIDDLE DOT #
0387 ; 00B7 ; MA # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT #
2E31 ; 00B7 ; MA #* ( ⸱ → · ) WORD SEPARATOR MIDDLE DOT → MIDDLE DOT #
diff --git a/README.md b/README.md
index 0f1c275c..9a1ac855 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ You can read the design and implementation notes by visiting the folders in the
Development Requirements
------------------------
-* [.NET 7.0 SDK](https://dotnet.microsoft.com/download) or newer
+* [.NET 8.0 SDK](https://dotnet.microsoft.com/download) or newer
* Any text editor, but here are some recommends:
* [Visual Studio](https://visualstudio.microsoft.com/) (Windows and Mac only, has free Community edition)
* [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free)
@@ -17,7 +17,7 @@ Development Requirements
Runtime Requirements
--------------------
-* [.NET 7.0 SDK](https://dotnet.microsoft.com/download) or newer to run from sources
+* [.NET 8.0 SDK](https://dotnet.microsoft.com/download) or newer to run from sources
* bot needs `dotnet` command to be available (i.e. alias for the Snap package)
* Optionally Google API credentials to access Google Drive:
* Create new project in the [Google Cloud Resource Manager](https://console.developers.google.com/cloud-resource-manager)
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index c2ec51f6..ec718351 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -1,18 +1,18 @@
- net7.0
+ net8.0
false
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive