From dacb407bec655c04df8a2a83e883a55de1223e57 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 7 Nov 2024 18:41:26 +0000
Subject: [PATCH 1/8] Update skiasharp monorepo
---
Directory.Packages.props | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index eddc53f9ed..006f19cbb8 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -17,7 +17,7 @@
-
+
@@ -66,9 +66,9 @@
-
-
-
+
+
+
From dc90b0edb91585e61b2f70c8a95ca59d7ad9213e Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Tue, 12 Nov 2024 20:06:37 +0000
Subject: [PATCH 2/8] Update Microsoft to 8.0.11
---
Directory.Packages.props | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index a27b600df1..0f77cdd2ba 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -24,14 +24,14 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -40,8 +40,8 @@
-
-
+
+
From 16bc1ebc8b390f41d3f706050bf73a1e1f948378 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Wed, 13 Nov 2024 18:05:16 +0000
Subject: [PATCH 3/8] Update dotnet monorepo
---
.config/dotnet-tools.json | 2 +-
global.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index a3847dcdfb..02afa3f072 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"dotnet-ef": {
- "version": "8.0.8",
+ "version": "8.0.11",
"commands": [
"dotnet-ef"
]
diff --git a/global.json b/global.json
index dbf2988d57..c9b932026e 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.0",
+ "version": "8.0.404",
"rollForward": "latestMinor"
}
}
From 023838f3c89ba12a36d06004cff33d76dd7d71fa Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Thu, 14 Nov 2024 15:58:14 +0000
Subject: [PATCH 4/8] Update CI dependencies
---
.github/workflows/ci-codeql-analysis.yml | 6 +++---
.github/workflows/ci-tests.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml
index 9ff679995a..d6983c683a 100644
--- a/.github/workflows/ci-codeql-analysis.yml
+++ b/.github/workflows/ci-codeql-analysis.yml
@@ -27,11 +27,11 @@ jobs:
dotnet-version: '8.0.x'
- name: Initialize CodeQL
- uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1
+ uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
with:
languages: ${{ matrix.language }}
queries: +security-extended
- name: Autobuild
- uses: github/codeql-action/autobuild@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1
+ uses: github/codeql-action/autobuild@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1
+ uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml
index 54fb762e6b..aee3ebbf72 100644
--- a/.github/workflows/ci-tests.yml
+++ b/.github/workflows/ci-tests.yml
@@ -34,7 +34,7 @@ jobs:
--verbosity minimal
- name: Merge code coverage results
- uses: danielpalme/ReportGenerator-GitHub-Action@62f9e70ab348d56eee76d446b4db903a85ab0ea8 # v5.3.11
+ uses: danielpalme/ReportGenerator-GitHub-Action@810356ce07a94200154301fb73d878e327b2dd58 # v5.4.1
with:
reports: "**/coverage.cobertura.xml"
targetdir: "merged/"
From ae721542ccb867363db1743dbe38b1c5804cd70c Mon Sep 17 00:00:00 2001
From: Johan Dixelius
Date: Thu, 14 Nov 2024 15:53:32 +0000
Subject: [PATCH 5/8] Translated using Weblate (Swedish) Translation:
Jellyfin/Jellyfin Translate-URL:
https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
---
.../Localization/Core/sv.json | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Emby.Server.Implementations/Localization/Core/sv.json b/Emby.Server.Implementations/Localization/Core/sv.json
index 5cf54522bf..60810b45d0 100644
--- a/Emby.Server.Implementations/Localization/Core/sv.json
+++ b/Emby.Server.Implementations/Localization/Core/sv.json
@@ -82,13 +82,13 @@
"UserCreatedWithName": "Användaren {0} har skapats",
"UserDeletedWithName": "Användaren {0} har tagits bort",
"UserDownloadingItemWithValues": "{0} laddar ner {1}",
- "UserLockedOutWithName": "Användare {0} har låsts ute",
- "UserOfflineFromDevice": "{0} har avbrutit anslutningen från {1}",
+ "UserLockedOutWithName": "Användare {0} har utelåsts",
+ "UserOfflineFromDevice": "{0} har kopplat ned från {1}",
"UserOnlineFromDevice": "{0} är uppkopplad från {1}",
"UserPasswordChangedWithName": "Lösenordet för {0} har ändrats",
"UserPolicyUpdatedWithName": "Användarpolicyn har uppdaterats för {0}",
- "UserStartedPlayingItemWithValues": "{0} spelar upp {1} på {2}",
- "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1} på {2}",
+ "UserStartedPlayingItemWithValues": "{0} spelar {1} på {2}",
+ "UserStoppedPlayingItemWithValues": "{0} har stoppat uppspelningen av {1} på {2}",
"ValueHasBeenAddedToLibrary": "{0} har lagts till i ditt mediebibliotek",
"ValueSpecialEpisodeName": "Specialavsnitt - {0}",
"VersionNumber": "Version {0}",
@@ -98,8 +98,8 @@
"TaskRefreshChannels": "Uppdatera kanaler",
"TaskCleanTranscodeDescription": "Raderar omkodningsfiler äldre än en dag.",
"TaskCleanTranscode": "Rensa omkodningskatalog",
- "TaskUpdatePluginsDescription": "Laddar ned och installerar uppdateringar till tilläggsprogram som är konfigurerade att uppdateras automatiskt.",
- "TaskUpdatePlugins": "Uppdatera tilläggsprogram",
+ "TaskUpdatePluginsDescription": "Laddar ned och installerar uppdateringar till tillägg som är konfigurerade att uppdateras automatiskt.",
+ "TaskUpdatePlugins": "Uppdatera tillägg",
"TaskRefreshPeopleDescription": "Uppdaterar metadata för skådespelare och regissörer i ditt mediabibliotek.",
"TaskCleanLogsDescription": "Raderar loggfiler som är mer än {0} dagar gamla.",
"TaskCleanLogs": "Rensa loggkatalog",
From 1be18114a9a9c49744e86b9d64ed6e249d3c4aac Mon Sep 17 00:00:00 2001
From: Jamoliddin Rakhmonberdiev
Date: Fri, 15 Nov 2024 11:51:49 +0000
Subject: [PATCH 6/8] Translated using Weblate (Uzbek) Translation:
Jellyfin/Jellyfin Translate-URL:
https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/uz/
---
.../Localization/Core/uz.json | 89 ++++++++++++++++++-
1 file changed, 88 insertions(+), 1 deletion(-)
diff --git a/Emby.Server.Implementations/Localization/Core/uz.json b/Emby.Server.Implementations/Localization/Core/uz.json
index a1b3035f37..150fb71263 100644
--- a/Emby.Server.Implementations/Localization/Core/uz.json
+++ b/Emby.Server.Implementations/Localization/Core/uz.json
@@ -23,5 +23,92 @@
"HeaderLiveTV": "Jonli TV",
"HeaderNextUp": "Keyingisi",
"ItemAddedWithName": "{0} kutbxonaga qo'shildi",
- "LabelIpAddressValue": "IP manzil: {0}"
+ "LabelIpAddressValue": "IP manzil: {0}",
+ "SubtitleDownloadFailureFromForItem": "{0} dan {1} uchun taglavhalarni yuklab boʻlmadi",
+ "UserPasswordChangedWithName": "Foydalanuvchi {0} paroli oʻzgartirildi",
+ "ValueHasBeenAddedToLibrary": "{0} kutubxonaga qoʻshildi",
+ "TaskCleanActivityLogDescription": "Belgilangan yoshdan kattaroq faoliyat jurnali yozuvlarini oʻchiradi.",
+ "TaskAudioNormalization": "Ovozni normallashtirish",
+ "TaskRefreshLibraryDescription": "Media kutubxonasi yangi fayllar uchun skanerlanmoqda va metama'lumotlar yangilanmoqda.",
+ "Default": "Joriy",
+ "HeaderFavoriteAlbums": "Tanlangan albomlar",
+ "HeaderFavoriteArtists": "Tanlangan artistlar",
+ "HeaderFavoriteEpisodes": "Tanlangan epizodlar",
+ "HeaderFavoriteShows": "Tanlangan shoular",
+ "HeaderFavoriteSongs": "Tanlangan qo'shiqlar",
+ "HeaderRecordingGroups": "Yozuvlar guruhi",
+ "HomeVideos": "Uy videolari",
+ "NotificationOptionVideoPlaybackStopped": "Video ijrosi toʻxtatildi",
+ "TvShows": "TV seriallar",
+ "Undefined": "Belgilanmagan",
+ "User": "Foydalanuvchi",
+ "UserCreatedWithName": "{0} foydalanuvchi yaratildi",
+ "TaskCleanCacheDescription": "Tizimga kerak bo'lmagan kesh fayllari o'chiriladi.",
+ "TaskAudioNormalizationDescription": "Ovozni normallashtirish ma'lumotlari uchun fayllarni skanerlaydi.",
+ "PluginInstalledWithName": "{0} - o'rnatildi",
+ "PluginUninstalledWithName": "{0} - o'chirildi",
+ "HearingImpaired": "Yaxshi eshitmaydiganlar uchun",
+ "Inherit": "Meroslangan",
+ "NotificationOptionApplicationUpdateAvailable": "Ilova yangilanishi mavjud",
+ "NotificationOptionApplicationUpdateInstalled": "Ilova yangilanishi oʻrnatildi",
+ "LabelRunningTimeValue": "Davomiyligi",
+ "NotificationOptionAudioPlayback": "Audio tinglash boshlandi",
+ "NotificationOptionAudioPlaybackStopped": "Audio tinglash to'xtatildi",
+ "NotificationOptionCameraImageUploaded": "Kamera tasvirlari yuklandi",
+ "NotificationOptionInstallationFailed": "O'rnatishda hatolik",
+ "NotificationOptionNewLibraryContent": "Yangi tarkib qo'shildi",
+ "NotificationOptionPluginError": "Plagin ishdan chiqdi",
+ "NotificationOptionPluginInstalled": "Plagin o'rnatildi",
+ "NotificationOptionPluginUninstalled": "Plagin o'chirildi",
+ "NotificationOptionPluginUpdateInstalled": "Plagin uchun yangilanish o'rnatildi",
+ "NotificationOptionServerRestartRequired": "Server-ni qayta yuklash lozim",
+ "NotificationOptionTaskFailed": "Rejalashtirilgan vazifa bajarilmadi",
+ "NotificationOptionUserLockedOut": "Foydalanuvchi bloklangan",
+ "NotificationOptionVideoPlayback": "Video ijrosi boshlandi",
+ "Photos": "Surat",
+ "Latest": "So'ngi",
+ "MessageApplicationUpdated": "Jellyfin Server yangilandi",
+ "MessageApplicationUpdatedTo": "Jellyfin Server {0} gacha yangilandi",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server konfiguratsiyasi ({0}-boʻlim) yangilandi",
+ "MessageServerConfigurationUpdated": "Server konfiguratsiyasi yangilandi",
+ "MixedContent": "Aralashgan tarkib",
+ "Movies": "Kinolar",
+ "Music": "Qo'shiqlar",
+ "MusicVideos": "Musiqali videolar",
+ "NameInstallFailed": "Omadsiz ornatish {0}",
+ "NameSeasonNumber": "{0} Fasl",
+ "NameSeasonUnknown": "Fasl aniqlanmagan",
+ "Playlists": "Pleylistlar",
+ "NewVersionIsAvailable": "Yuklab olish uchun Jellyfin Server ning yangi versiyasi mavjud",
+ "Plugin": "Plagin",
+ "TaskCleanLogs": "Jurnallar katalogini tozalash",
+ "PluginUpdatedWithName": "{0} - yangilandi",
+ "ProviderValue": "Yetkazib beruvchi: {0}",
+ "ScheduledTaskFailedWithName": "{0} - omadsiz",
+ "ScheduledTaskStartedWithName": "{0} - ishga tushirildi",
+ "ServerNameNeedsToBeRestarted": "Qayta yuklash kerak {0}",
+ "Shows": "Teleko'rsatuv",
+ "Songs": "Kompozitsiyalar",
+ "StartupEmbyServerIsLoading": "Jellyfin Server yuklanmoqda. Tez orada qayta urinib koʻring.",
+ "Sync": "Sinxronizatsiya",
+ "System": "Tizim",
+ "UserDeletedWithName": "{0} foydalanuvchisi oʻchirib tashlandi",
+ "UserDownloadingItemWithValues": "{0} yuklanmoqda {1}",
+ "UserLockedOutWithName": "{0} foydalanuvchisi bloklandi",
+ "UserOfflineFromDevice": "{0} {1}dan uzildi",
+ "UserOnlineFromDevice": "{0} {1} dan ulandi",
+ "UserPolicyUpdatedWithName": "{0} foydalanuvchisining siyosatlari yangilandi",
+ "UserStartedPlayingItemWithValues": "{0} - {2} da \"{1}\" ijrosi",
+ "UserStoppedPlayingItemWithValues": "{0} - ijro etish to‘xtatildi {1} {2}",
+ "ValueSpecialEpisodeName": "Maxsus qism – {0}",
+ "VersionNumber": "Versiya {0}",
+ "TasksMaintenanceCategory": "Xizmat ko'rsatish",
+ "TasksLibraryCategory": "Media kutubxona",
+ "TasksApplicationCategory": "Ilova",
+ "TasksChannelsCategory": "Internet kanallari",
+ "TaskCleanActivityLog": "Faoliyat jurnalini tozalash",
+ "TaskCleanCache": "Kesh katalogini tozalash",
+ "TaskRefreshChapterImages": "Sahnadan tasvirini chiqarish",
+ "TaskRefreshChapterImagesDescription": "Sahnalarni o'z ichiga olgan videolar uchun eskizlarni yaratadi.",
+ "TaskRefreshLibrary": "Media kutubxonangizni skanerlash"
}
From ceb850c77052c465af8422dcf152f1d1d1530457 Mon Sep 17 00:00:00 2001
From: Bond-009
Date: Sat, 16 Nov 2024 18:11:01 +0100
Subject: [PATCH 7/8] Update projects to .NET 9 (#13023)
---
.devcontainer/Dev - Server Ffmpeg/devcontainer.json | 6 +++---
.devcontainer/devcontainer.json | 6 +++---
.github/workflows/ci-codeql-analysis.yml | 2 +-
.github/workflows/ci-openapi.yml | 8 ++++----
.github/workflows/ci-tests.yml | 2 +-
.vscode/launch.json | 6 +++---
Directory.Build.props | 1 +
Emby.Naming/Emby.Naming.csproj | 2 +-
Emby.Photos/Emby.Photos.csproj | 2 +-
Emby.Server.Implementations/ApplicationHost.cs | 2 +-
.../Emby.Server.Implementations.csproj | 2 +-
Emby.Server.Implementations/Library/UserDataManager.cs | 1 -
Emby.Server.Implementations/Plugins/PluginManager.cs | 2 +-
Jellyfin.Api/Controllers/ItemUpdateController.cs | 2 +-
Jellyfin.Api/Jellyfin.Api.csproj | 2 +-
Jellyfin.Data/Entities/User.cs | 2 +-
Jellyfin.Data/Jellyfin.Data.csproj | 2 +-
.../Jellyfin.Server.Implementations.csproj | 2 +-
Jellyfin.Server/Helpers/StartupHelpers.cs | 8 --------
Jellyfin.Server/Jellyfin.Server.csproj | 2 +-
MediaBrowser.Common/MediaBrowser.Common.csproj | 2 +-
MediaBrowser.Common/Plugins/BasePluginOfT.cs | 2 +-
MediaBrowser.Controller/MediaBrowser.Controller.csproj | 2 +-
.../MediaBrowser.LocalMetadata.csproj | 2 +-
.../MediaBrowser.MediaEncoding.csproj | 2 +-
.../Probing/ProbeResultNormalizer.cs | 2 +-
MediaBrowser.Model/MediaBrowser.Model.csproj | 4 ++--
MediaBrowser.Providers/Manager/ProviderManager.cs | 3 +--
MediaBrowser.Providers/MediaBrowser.Providers.csproj | 2 +-
.../MediaBrowser.XbmcMetadata.csproj | 2 +-
README.md | 4 ++--
.../Emby.Server.Implementations.Fuzz.csproj | 2 +-
fuzz/Emby.Server.Implementations.Fuzz/fuzz.sh | 2 +-
fuzz/Jellyfin.Api.Fuzz/Jellyfin.Api.Fuzz.csproj | 2 +-
fuzz/Jellyfin.Api.Fuzz/fuzz.sh | 2 +-
global.json | 2 +-
jellyfin.ruleset | 4 ++++
src/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj | 2 +-
src/Jellyfin.Drawing/Jellyfin.Drawing.csproj | 2 +-
src/Jellyfin.Extensions/Jellyfin.Extensions.csproj | 2 +-
.../Json/Converters/JsonDelimitedArrayConverter.cs | 1 -
src/Jellyfin.LiveTv/Jellyfin.LiveTv.csproj | 2 +-
.../Jellyfin.MediaEncoding.Hls.csproj | 2 +-
.../Jellyfin.MediaEncoding.Keyframes.csproj | 2 +-
src/Jellyfin.Networking/Jellyfin.Networking.csproj | 2 +-
src/Jellyfin.Networking/Manager/NetworkManager.cs | 2 +-
tests/Directory.Build.props | 2 +-
.../Json/Models/GenericBodyArrayModel.cs | 2 +-
.../Json/Models/GenericBodyIReadOnlyListModel.cs | 2 +-
tests/Jellyfin.LiveTv.Tests/Jellyfin.LiveTv.Tests.csproj | 4 ++--
.../TypedBaseItem/BaseItemKindTests.cs | 2 +-
51 files changed, 63 insertions(+), 69 deletions(-)
diff --git a/.devcontainer/Dev - Server Ffmpeg/devcontainer.json b/.devcontainer/Dev - Server Ffmpeg/devcontainer.json
index 0b848d9f3c..a934512f49 100644
--- a/.devcontainer/Dev - Server Ffmpeg/devcontainer.json
+++ b/.devcontainer/Dev - Server Ffmpeg/devcontainer.json
@@ -1,6 +1,6 @@
{
"name": "Development Jellyfin Server - FFmpeg",
- "image":"mcr.microsoft.com/devcontainers/dotnet:8.0-jammy",
+ "image":"mcr.microsoft.com/devcontainers/dotnet:9.0-jammy",
// restores nuget packages, installs the dotnet workloads and installs the dev https certificate
"postStartCommand": "dotnet restore; dotnet workload update; dotnet dev-certs https --trust; sudo bash \"./.devcontainer/Dev - Server Ffmpeg/install-ffmpeg.sh\"",
// reads the extensions list and installs them
@@ -8,8 +8,8 @@
"features": {
"ghcr.io/devcontainers/features/dotnet:2": {
"version": "none",
- "dotnetRuntimeVersions": "8.0",
- "aspNetCoreRuntimeVersions": "8.0"
+ "dotnetRuntimeVersions": "9.0",
+ "aspNetCoreRuntimeVersions": "9.0"
},
"ghcr.io/devcontainers-contrib/features/apt-packages:1": {
"preserve_apt_list": false,
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 063901c800..0cf768f1ff 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,6 +1,6 @@
{
"name": "Development Jellyfin Server",
- "image":"mcr.microsoft.com/devcontainers/dotnet:8.0-jammy",
+ "image":"mcr.microsoft.com/devcontainers/dotnet:9.0-jammy",
// restores nuget packages, installs the dotnet workloads and installs the dev https certificate
"postStartCommand": "dotnet restore; dotnet workload update; dotnet dev-certs https --trust",
// reads the extensions list and installs them
@@ -8,8 +8,8 @@
"features": {
"ghcr.io/devcontainers/features/dotnet:2": {
"version": "none",
- "dotnetRuntimeVersions": "8.0",
- "aspNetCoreRuntimeVersions": "8.0"
+ "dotnetRuntimeVersions": "9.0",
+ "aspNetCoreRuntimeVersions": "9.0"
},
"ghcr.io/devcontainers-contrib/features/apt-packages:1": {
"preserve_apt_list": false,
diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml
index d6983c683a..e6993d39df 100644
--- a/.github/workflows/ci-codeql-analysis.yml
+++ b/.github/workflows/ci-codeql-analysis.yml
@@ -24,7 +24,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
with:
- dotnet-version: '8.0.x'
+ dotnet-version: '9.0.x'
- name: Initialize CodeQL
uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
diff --git a/.github/workflows/ci-openapi.yml b/.github/workflows/ci-openapi.yml
index 4633461ad7..353c47c54e 100644
--- a/.github/workflows/ci-openapi.yml
+++ b/.github/workflows/ci-openapi.yml
@@ -23,7 +23,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
with:
- dotnet-version: '8.0.x'
+ dotnet-version: '9.0.x'
- name: Generate openapi.json
run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests"
- name: Upload openapi.json
@@ -32,7 +32,7 @@ jobs:
name: openapi-head
retention-days: 14
if-no-files-found: error
- path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net8.0/openapi.json
+ path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net9.0/openapi.json
openapi-base:
name: OpenAPI - BASE
@@ -57,7 +57,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
with:
- dotnet-version: '8.0.x'
+ dotnet-version: '9.0.x'
- name: Generate openapi.json
run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests"
- name: Upload openapi.json
@@ -66,7 +66,7 @@ jobs:
name: openapi-base
retention-days: 14
if-no-files-found: error
- path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net8.0/openapi.json
+ path: tests/Jellyfin.Server.Integration.Tests/bin/Release/net9.0/openapi.json
openapi-diff:
permissions:
diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml
index aee3ebbf72..30aacc7a0b 100644
--- a/.github/workflows/ci-tests.yml
+++ b/.github/workflows/ci-tests.yml
@@ -9,7 +9,7 @@ on:
pull_request:
env:
- SDK_VERSION: "8.0.x"
+ SDK_VERSION: "9.0.x"
jobs:
run-tests:
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 7e50d4f0a4..d97d8de843 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,7 +6,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
- "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net8.0/jellyfin.dll",
+ "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net9.0/jellyfin.dll",
"args": [],
"cwd": "${workspaceFolder}/Jellyfin.Server",
"console": "internalConsole",
@@ -22,7 +22,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
- "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net8.0/jellyfin.dll",
+ "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net9.0/jellyfin.dll",
"args": ["--nowebclient"],
"cwd": "${workspaceFolder}/Jellyfin.Server",
"console": "internalConsole",
@@ -34,7 +34,7 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
- "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net8.0/jellyfin.dll",
+ "program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/net9.0/jellyfin.dll",
"args": ["--nowebclient", "--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg"],
"cwd": "${workspaceFolder}/Jellyfin.Server",
"console": "internalConsole",
diff --git a/Directory.Build.props b/Directory.Build.props
index 44a60ffb5c..8311880154 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -8,6 +8,7 @@
true
+ NU1902;NU1903
diff --git a/Emby.Naming/Emby.Naming.csproj b/Emby.Naming/Emby.Naming.csproj
index 53b297b068..20b32f3a62 100644
--- a/Emby.Naming/Emby.Naming.csproj
+++ b/Emby.Naming/Emby.Naming.csproj
@@ -6,7 +6,7 @@
- net8.0
+ net9.0
false
true
true
diff --git a/Emby.Photos/Emby.Photos.csproj b/Emby.Photos/Emby.Photos.csproj
index 55dbe393c7..645a74aea4 100644
--- a/Emby.Photos/Emby.Photos.csproj
+++ b/Emby.Photos/Emby.Photos.csproj
@@ -19,7 +19,7 @@
- net8.0
+ net9.0
false
true
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 5292003f09..13516896ad 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -607,7 +607,7 @@ namespace Emby.Server.Implementations
// Don't use an empty string password
password = string.IsNullOrWhiteSpace(password) ? null : password;
- var localCert = new X509Certificate2(path, password, X509KeyStorageFlags.UserKeySet);
+ var localCert = X509CertificateLoader.LoadPkcs12FromFile(path, password, X509KeyStorageFlags.UserKeySet);
if (!localCert.HasPrivateKey)
{
Logger.LogError("No private key included in SSL cert {CertificateLocation}.", path);
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index 34276355a7..70dd5eb9ae 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -37,7 +37,7 @@
- net8.0
+ net9.0
false
true
diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs
index 62d22b23ff..ceb3d65a46 100644
--- a/Emby.Server.Implementations/Library/UserDataManager.cs
+++ b/Emby.Server.Implementations/Library/UserDataManager.cs
@@ -84,7 +84,6 @@ namespace Emby.Server.Implementations.Library
{
ArgumentNullException.ThrowIfNull(user);
ArgumentNullException.ThrowIfNull(item);
- ArgumentNullException.ThrowIfNull(reason);
ArgumentNullException.ThrowIfNull(userDataDto);
var userData = GetUserData(user, item);
diff --git a/Emby.Server.Implementations/Plugins/PluginManager.cs b/Emby.Server.Implementations/Plugins/PluginManager.cs
index db82a2900a..e7323d9d05 100644
--- a/Emby.Server.Implementations/Plugins/PluginManager.cs
+++ b/Emby.Server.Implementations/Plugins/PluginManager.cs
@@ -835,7 +835,7 @@ namespace Emby.Server.Implementations.Plugins
/// If the is null.
private bool TryGetPluginDlls(LocalPlugin plugin, out IReadOnlyList whitelistedDlls)
{
- ArgumentNullException.ThrowIfNull(nameof(plugin));
+ ArgumentNullException.ThrowIfNull(plugin);
IReadOnlyList pluginDlls = Directory.GetFiles(plugin.Path, "*.dll", SearchOption.AllDirectories);
diff --git a/Jellyfin.Api/Controllers/ItemUpdateController.cs b/Jellyfin.Api/Controllers/ItemUpdateController.cs
index 4001a6addb..d49e0753ee 100644
--- a/Jellyfin.Api/Controllers/ItemUpdateController.cs
+++ b/Jellyfin.Api/Controllers/ItemUpdateController.cs
@@ -457,7 +457,7 @@ public class ItemUpdateController : BaseJellyfinApiController
return null;
}
- return (SeriesStatus)Enum.Parse(typeof(SeriesStatus), item.Status, true);
+ return Enum.Parse(item.Status, true);
}
private DateTime NormalizeDateTime(DateTime val)
diff --git a/Jellyfin.Api/Jellyfin.Api.csproj b/Jellyfin.Api/Jellyfin.Api.csproj
index 5f86a6b6be..25feaa2d75 100644
--- a/Jellyfin.Api/Jellyfin.Api.csproj
+++ b/Jellyfin.Api/Jellyfin.Api.csproj
@@ -6,7 +6,7 @@
- net8.0
+ net9.0
true
diff --git a/Jellyfin.Data/Entities/User.cs b/Jellyfin.Data/Entities/User.cs
index 2c9cc8d785..9bbe9efe89 100644
--- a/Jellyfin.Data/Entities/User.cs
+++ b/Jellyfin.Data/Entities/User.cs
@@ -514,7 +514,7 @@ namespace Jellyfin.Data.Entities
///
public void AddDefaultPreferences()
{
- foreach (var val in Enum.GetValues(typeof(PreferenceKind)).Cast())
+ foreach (var val in Enum.GetValues())
{
Preferences.Add(new Preference(val, string.Empty));
}
diff --git a/Jellyfin.Data/Jellyfin.Data.csproj b/Jellyfin.Data/Jellyfin.Data.csproj
index 0c17d71e79..921cf2d8c1 100644
--- a/Jellyfin.Data/Jellyfin.Data.csproj
+++ b/Jellyfin.Data/Jellyfin.Data.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
false
true
true
diff --git a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
index 20944ee4b2..31cf24fb2d 100644
--- a/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
+++ b/Jellyfin.Server.Implementations/Jellyfin.Server.Implementations.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
false
true
diff --git a/Jellyfin.Server/Helpers/StartupHelpers.cs b/Jellyfin.Server/Helpers/StartupHelpers.cs
index 0802b23ad9..bbf6d31f1f 100644
--- a/Jellyfin.Server/Helpers/StartupHelpers.cs
+++ b/Jellyfin.Server/Helpers/StartupHelpers.cs
@@ -292,13 +292,5 @@ public static class StartupHelpers
// Make sure we have all the code pages we can get
// Ref: https://docs.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider.instance?view=netcore-3.0#remarks
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
-
- // Increase the max http request limit
- // The default connection limit is 10 for ASP.NET hosted applications and 2 for all others.
- ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
-
- // Disable the "Expect: 100-Continue" header by default
- // http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c
- ServicePointManager.Expect100Continue = false;
}
}
diff --git a/Jellyfin.Server/Jellyfin.Server.csproj b/Jellyfin.Server/Jellyfin.Server.csproj
index e18212908e..ebb12ba4e7 100644
--- a/Jellyfin.Server/Jellyfin.Server.csproj
+++ b/Jellyfin.Server/Jellyfin.Server.csproj
@@ -8,7 +8,7 @@
jellyfin
Exe
- net8.0
+ net9.0
false
false
true
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index 51787d6a05..de6be4707e 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -28,7 +28,7 @@
- net8.0
+ net9.0
false
true
true
diff --git a/MediaBrowser.Common/Plugins/BasePluginOfT.cs b/MediaBrowser.Common/Plugins/BasePluginOfT.cs
index 116e9cef80..bf2f12cb9b 100644
--- a/MediaBrowser.Common/Plugins/BasePluginOfT.cs
+++ b/MediaBrowser.Common/Plugins/BasePluginOfT.cs
@@ -193,7 +193,7 @@ namespace MediaBrowser.Common.Plugins
}
catch
{
- var config = (TConfigurationType)Activator.CreateInstance(typeof(TConfigurationType));
+ var config = Activator.CreateInstance();
SaveConfiguration(config);
return config;
}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 62f36bf28a..ba4a2a59c4 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -34,7 +34,7 @@
- net8.0
+ net9.0
false
true
true
diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
index 05177ac398..8e3c8cf7f4 100644
--- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
+++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
@@ -11,7 +11,7 @@
- net8.0
+ net9.0
false
true
diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
index be63513a72..be7eeda929 100644
--- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
+++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
@@ -6,7 +6,7 @@
- net8.0
+ net9.0
false
true
diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
index 334796f585..c730f4cdac 100644
--- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
+++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
@@ -1648,7 +1648,7 @@ namespace MediaBrowser.MediaEncoding.Probing
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 1))
{
- fs.Read(packetBuffer);
+ fs.ReadExactly(packetBuffer);
}
if (packetBuffer[0] == 71)
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index a3a575c0f4..e9dab6bc8a 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -14,7 +14,7 @@
- net8.0
+ net9.0
false
true
true
@@ -35,7 +35,7 @@
-
+
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index c5689550d4..e43da13504 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -262,7 +262,7 @@ namespace MediaBrowser.Providers.Manager
try
{
var fileStream = AsyncFile.OpenRead(source);
- await new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken);
+ await new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken).ConfigureAwait(false);
}
finally
{
@@ -1031,7 +1031,6 @@ namespace MediaBrowser.Providers.Manager
///
public void QueueRefresh(Guid itemId, MetadataRefreshOptions options, RefreshPriority priority)
{
- ArgumentNullException.ThrowIfNull(itemId);
if (itemId.IsEmpty())
{
throw new ArgumentException("Guid can't be empty", nameof(itemId));
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index 9a65852f02..a3e0acf1be 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -28,7 +28,7 @@
- net8.0
+ net9.0
false
true
../jellyfin.ruleset
diff --git a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj
index c20073eea1..b195af96cf 100644
--- a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj
+++ b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj
@@ -15,7 +15,7 @@
- net8.0
+ net9.0
false
true
diff --git a/README.md b/README.md
index 7da0cb30d0..a07fd32ceb 100644
--- a/README.md
+++ b/README.md
@@ -74,7 +74,7 @@ These instructions will help you get set up with a local development environment
### Prerequisites
-Before the project can be built, you must first install the [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system.
+Before the project can be built, you must first install the [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system.
Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download).
@@ -131,7 +131,7 @@ A second option is to build the project and then run the resulting executable fi
```bash
dotnet build # Build the project
-cd Jellyfin.Server/bin/Debug/net8.0 # Change into the build output directory
+cd Jellyfin.Server/bin/Debug/net9.0 # Change into the build output directory
```
2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`.
diff --git a/fuzz/Emby.Server.Implementations.Fuzz/Emby.Server.Implementations.Fuzz.csproj b/fuzz/Emby.Server.Implementations.Fuzz/Emby.Server.Implementations.Fuzz.csproj
index 73aae3f3df..1373d2fe05 100644
--- a/fuzz/Emby.Server.Implementations.Fuzz/Emby.Server.Implementations.Fuzz.csproj
+++ b/fuzz/Emby.Server.Implementations.Fuzz/Emby.Server.Implementations.Fuzz.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net9.0
diff --git a/fuzz/Emby.Server.Implementations.Fuzz/fuzz.sh b/fuzz/Emby.Server.Implementations.Fuzz/fuzz.sh
index 80a5cd7c1f..8183bb37ad 100755
--- a/fuzz/Emby.Server.Implementations.Fuzz/fuzz.sh
+++ b/fuzz/Emby.Server.Implementations.Fuzz/fuzz.sh
@@ -8,4 +8,4 @@ cp bin/Emby.Server.Implementations.dll .
dotnet build
mkdir -p Findings
-AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net8.0/Emby.Server.Implementations.Fuzz "$1"
+AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net9.0/Emby.Server.Implementations.Fuzz "$1"
diff --git a/fuzz/Jellyfin.Api.Fuzz/Jellyfin.Api.Fuzz.csproj b/fuzz/Jellyfin.Api.Fuzz/Jellyfin.Api.Fuzz.csproj
index faac7d976f..04c7be11d5 100644
--- a/fuzz/Jellyfin.Api.Fuzz/Jellyfin.Api.Fuzz.csproj
+++ b/fuzz/Jellyfin.Api.Fuzz/Jellyfin.Api.Fuzz.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net9.0
diff --git a/fuzz/Jellyfin.Api.Fuzz/fuzz.sh b/fuzz/Jellyfin.Api.Fuzz/fuzz.sh
index 96b0192cf7..15148e1bb2 100755
--- a/fuzz/Jellyfin.Api.Fuzz/fuzz.sh
+++ b/fuzz/Jellyfin.Api.Fuzz/fuzz.sh
@@ -8,4 +8,4 @@ cp bin/Jellyfin.Api.dll .
dotnet build
mkdir -p Findings
-AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net8.0/Jellyfin.Api.Fuzz "$1"
+AFL_SKIP_BIN_CHECK=1 afl-fuzz -i "Testcases/$1" -o "Findings/$1" -t 5000 ./bin/Debug/net9.0/Jellyfin.Api.Fuzz "$1"
diff --git a/global.json b/global.json
index c9b932026e..2e13a6387d 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "8.0.404",
+ "version": "9.0.0",
"rollForward": "latestMinor"
}
}
diff --git a/jellyfin.ruleset b/jellyfin.ruleset
index 67ffd9a37b..ba04a70c2b 100644
--- a/jellyfin.ruleset
+++ b/jellyfin.ruleset
@@ -154,6 +154,8 @@
+
+
@@ -168,6 +170,8 @@
+
+
diff --git a/src/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj b/src/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj
index 0590ded32a..ba402dfe09 100644
--- a/src/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj
+++ b/src/Jellyfin.Drawing.Skia/Jellyfin.Drawing.Skia.csproj
@@ -6,7 +6,7 @@
- net8.0
+ net9.0
false
true
diff --git a/src/Jellyfin.Drawing/Jellyfin.Drawing.csproj b/src/Jellyfin.Drawing/Jellyfin.Drawing.csproj
index 4a02f90f95..5f4b3fe8d4 100644
--- a/src/Jellyfin.Drawing/Jellyfin.Drawing.csproj
+++ b/src/Jellyfin.Drawing/Jellyfin.Drawing.csproj
@@ -6,7 +6,7 @@
- net8.0
+ net9.0
false
true
diff --git a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
index 1a42679fce..1613d83bc3 100644
--- a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
+++ b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
false
true
true
diff --git a/src/Jellyfin.Extensions/Json/Converters/JsonDelimitedArrayConverter.cs b/src/Jellyfin.Extensions/Json/Converters/JsonDelimitedArrayConverter.cs
index 936a5a97c4..cdeaf29b08 100644
--- a/src/Jellyfin.Extensions/Json/Converters/JsonDelimitedArrayConverter.cs
+++ b/src/Jellyfin.Extensions/Json/Converters/JsonDelimitedArrayConverter.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
diff --git a/src/Jellyfin.LiveTv/Jellyfin.LiveTv.csproj b/src/Jellyfin.LiveTv/Jellyfin.LiveTv.csproj
index c58889740a..f04c02504c 100644
--- a/src/Jellyfin.LiveTv/Jellyfin.LiveTv.csproj
+++ b/src/Jellyfin.LiveTv/Jellyfin.LiveTv.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net9.0
true
diff --git a/src/Jellyfin.MediaEncoding.Hls/Jellyfin.MediaEncoding.Hls.csproj b/src/Jellyfin.MediaEncoding.Hls/Jellyfin.MediaEncoding.Hls.csproj
index ee79802a1e..dc581724a5 100644
--- a/src/Jellyfin.MediaEncoding.Hls/Jellyfin.MediaEncoding.Hls.csproj
+++ b/src/Jellyfin.MediaEncoding.Hls/Jellyfin.MediaEncoding.Hls.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
true
diff --git a/src/Jellyfin.MediaEncoding.Keyframes/Jellyfin.MediaEncoding.Keyframes.csproj b/src/Jellyfin.MediaEncoding.Keyframes/Jellyfin.MediaEncoding.Keyframes.csproj
index c79dcee3c4..c826d3d9cc 100644
--- a/src/Jellyfin.MediaEncoding.Keyframes/Jellyfin.MediaEncoding.Keyframes.csproj
+++ b/src/Jellyfin.MediaEncoding.Keyframes/Jellyfin.MediaEncoding.Keyframes.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
true
diff --git a/src/Jellyfin.Networking/Jellyfin.Networking.csproj b/src/Jellyfin.Networking/Jellyfin.Networking.csproj
index 24b3ecaab9..472cdb7ef5 100644
--- a/src/Jellyfin.Networking/Jellyfin.Networking.csproj
+++ b/src/Jellyfin.Networking/Jellyfin.Networking.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net9.0
false
true
diff --git a/src/Jellyfin.Networking/Manager/NetworkManager.cs b/src/Jellyfin.Networking/Manager/NetworkManager.cs
index 5a13cc4173..10aed673b1 100644
--- a/src/Jellyfin.Networking/Manager/NetworkManager.cs
+++ b/src/Jellyfin.Networking/Manager/NetworkManager.cs
@@ -57,7 +57,7 @@ public class NetworkManager : INetworkManager, IDisposable
///
/// Dictionary containing interface addresses and their subnets.
///
- private IReadOnlyList _interfaces;
+ private List _interfaces;
///
/// Unfiltered user defined LAN subnets ()
diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props
index bec3481cb7..146ad8dc27 100644
--- a/tests/Directory.Build.props
+++ b/tests/Directory.Build.props
@@ -4,7 +4,7 @@
- net8.0
+ net9.0
false
$(MSBuildThisFileDirectory)/jellyfin-tests.ruleset
diff --git a/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyArrayModel.cs b/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyArrayModel.cs
index ef135278fd..76669ea19c 100644
--- a/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyArrayModel.cs
+++ b/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyArrayModel.cs
@@ -8,7 +8,7 @@ namespace Jellyfin.Extensions.Tests.Json.Models
/// The generic body model.
///
/// The value type.
- public class GenericBodyArrayModel
+ public sealed class GenericBodyArrayModel
{
///
/// Gets or sets the value.
diff --git a/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyIReadOnlyListModel.cs b/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyIReadOnlyListModel.cs
index 8e7b5a35b4..7e6b97afe1 100644
--- a/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyIReadOnlyListModel.cs
+++ b/tests/Jellyfin.Extensions.Tests/Json/Models/GenericBodyIReadOnlyListModel.cs
@@ -8,7 +8,7 @@ namespace Jellyfin.Extensions.Tests.Json.Models
/// The generic body IReadOnlyList model.
///
/// The value type.
- public class GenericBodyIReadOnlyListModel
+ public sealed class GenericBodyIReadOnlyListModel
{
///
/// Gets or sets the value.
diff --git a/tests/Jellyfin.LiveTv.Tests/Jellyfin.LiveTv.Tests.csproj b/tests/Jellyfin.LiveTv.Tests/Jellyfin.LiveTv.Tests.csproj
index cf967b84ce..fdcf7d61e0 100644
--- a/tests/Jellyfin.LiveTv.Tests/Jellyfin.LiveTv.Tests.csproj
+++ b/tests/Jellyfin.LiveTv.Tests/Jellyfin.LiveTv.Tests.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net9.0
@@ -22,7 +22,7 @@
-
+
diff --git a/tests/Jellyfin.Server.Implementations.Tests/TypedBaseItem/BaseItemKindTests.cs b/tests/Jellyfin.Server.Implementations.Tests/TypedBaseItem/BaseItemKindTests.cs
index 1bd51b2468..9a4389e7ac 100644
--- a/tests/Jellyfin.Server.Implementations.Tests/TypedBaseItem/BaseItemKindTests.cs
+++ b/tests/Jellyfin.Server.Implementations.Tests/TypedBaseItem/BaseItemKindTests.cs
@@ -35,7 +35,7 @@ namespace Jellyfin.Server.Implementations.Tests.TypedBaseItem
public void EnumParse_GivenValidBaseItemType_ReturnsEnumValue(Type baseItemDescendantType)
{
var enumValue = Enum.Parse(baseItemDescendantType.Name);
- Assert.True(Enum.IsDefined(typeof(BaseItemKind), enumValue));
+ Assert.True(Enum.IsDefined(enumValue));
}
[Theory]
From 9e05abcc850c0c41818042d4383c621f54a6e40f Mon Sep 17 00:00:00 2001
From: Cody Robibero
Date: Sat, 16 Nov 2024 11:01:32 -0700
Subject: [PATCH 8/8] Add dotnet9 to abi compat workflow (#13046)
---
.github/workflows/ci-compat.yml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/.github/workflows/ci-compat.yml b/.github/workflows/ci-compat.yml
index c9d9f84493..2f9a68f415 100644
--- a/.github/workflows/ci-compat.yml
+++ b/.github/workflows/ci-compat.yml
@@ -16,6 +16,11 @@ jobs:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
+ - name: Setup .NET
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
+ with:
+ dotnet-version: '9.0.x'
+
- name: Build
run: |
dotnet build Jellyfin.Server -o ./out
@@ -41,6 +46,11 @@ jobs:
repository: ${{ github.event.pull_request.head.repo.full_name }}
fetch-depth: 0
+ - name: Setup .NET
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
+ with:
+ dotnet-version: '9.0.x'
+
- name: Checkout common ancestor
env:
HEAD_REF: ${{ github.head_ref }}