diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index e5ffb56b..9d1f2f21 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -599,6 +599,14 @@ namespace Emby.Server.Implementations SetStaticProperties(); FindParts(); + + // Ensure at least one user exists for the startup wizard + var userManager = Resolve(); + if (!ConfigurationManager.Configuration.IsStartupWizardCompleted) + { + Logger.LogInformation("Startup wizard not completed, ensuring initial user exists"); + await userManager.InitializeAsync().ConfigureAwait(false); + } } private X509Certificate2 GetCertificate(string path, string password) diff --git a/Jellyfin.Api/Controllers/StartupController.cs b/Jellyfin.Api/Controllers/StartupController.cs index 358f09d3..cb80e5e0 100644 --- a/Jellyfin.Api/Controllers/StartupController.cs +++ b/Jellyfin.Api/Controllers/StartupController.cs @@ -135,6 +135,7 @@ public class StartupController : BaseJellyfinApiController [ProducesResponseType(StatusCodes.Status204NoContent)] public async Task UpdateStartupUser([FromBody] StartupUserDto startupUserDto) { + await _userManager.InitializeAsync().ConfigureAwait(false); var user = _userManager.Users.First(); if (string.IsNullOrWhiteSpace(startupUserDto.Password)) { diff --git a/Jellyfin.Server.Implementations/Users/UserManager.cs b/Jellyfin.Server.Implementations/Users/UserManager.cs index 1bd8cbb1..f430496a 100644 --- a/Jellyfin.Server.Implementations/Users/UserManager.cs +++ b/Jellyfin.Server.Implementations/Users/UserManager.cs @@ -566,7 +566,18 @@ namespace Jellyfin.Server.Implementations.Users dbContext.Users.Add(newUser); await dbContext.SaveChangesAsync().ConfigureAwait(false); - _users.Add(newUser.Id, newUser); + + var reloadedUser = await dbContext.Users + .AsNoTracking() + .AsSplitQuery() + .Include(u => u.Permissions) + .Include(u => u.Preferences) + .Include(u => u.AccessSchedules) + .Include(u => u.ProfileImage) + .FirstAsync(u => u.Id.Equals(newUser.Id)) + .ConfigureAwait(false); + + _users.Add(reloadedUser.Id, reloadedUser); } } diff --git a/Jellyfin.Server/Properties/PublishProfiles/FolderProfile.pubxml.user b/Jellyfin.Server/Properties/PublishProfiles/FolderProfile.pubxml.user index d27f448f..9a0d94c9 100644 --- a/Jellyfin.Server/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/Jellyfin.Server/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -3,7 +3,7 @@ <_PublishTargetUrl>E:\Program Files\Jellyfin - True|2026-02-23T17:08:36.6307546Z||;False|2026-02-23T12:02:39.0223565-05:00||;True|2026-02-23T11:48:21.1980918-05:00||;True|2026-02-23T11:13:01.1928466-05:00||;True|2026-02-23T10:32:13.7989634-05:00||;True|2026-02-23T09:02:53.5227868-05:00||;True|2026-02-23T08:11:05.7403694-05:00||;False|2026-02-23T08:07:46.6244256-05:00||;True|2026-02-23T08:00:05.0454829-05:00||;False|2026-02-23T07:56:44.6461434-05:00||;True|2026-02-23T07:50:44.1212024-05:00||;True|2026-02-23T07:29:19.3226285-05:00||;True|2026-02-22T20:02:08.7802640-05:00||;True|2026-02-22T19:00:49.1033285-05:00||;True|2026-02-22T18:46:50.8399883-05:00||;True|2026-02-22T18:36:34.2983199-05:00||;True|2026-02-22T18:33:05.9495883-05:00||;True|2026-02-22T18:28:09.3531365-05:00||;True|2026-02-22T18:23:19.7767548-05:00||;True|2026-02-22T18:03:49.9702878-05:00||;True|2026-02-22T17:31:43.8027839-05:00||;True|2026-02-22T17:14:22.1722691-05:00||;True|2026-02-22T17:07:09.6937759-05:00||;True|2026-02-22T16:29:37.5643134-05:00||;True|2026-02-22T16:05:05.3412117-05:00||;True|2026-02-22T15:59:39.7645693-05:00||; + True|2026-02-23T20:36:20.8511403Z||;True|2026-02-23T14:06:04.7110322-05:00||;True|2026-02-23T13:51:39.0686004-05:00||;True|2026-02-23T13:12:08.3890386-05:00||;False|2026-02-23T13:06:12.0188266-05:00||;True|2026-02-23T12:08:36.6307546-05:00||;False|2026-02-23T12:02:39.0223565-05:00||;True|2026-02-23T11:48:21.1980918-05:00||;True|2026-02-23T11:13:01.1928466-05:00||;True|2026-02-23T10:32:13.7989634-05:00||;True|2026-02-23T09:02:53.5227868-05:00||;True|2026-02-23T08:11:05.7403694-05:00||;False|2026-02-23T08:07:46.6244256-05:00||;True|2026-02-23T08:00:05.0454829-05:00||;False|2026-02-23T07:56:44.6461434-05:00||;True|2026-02-23T07:50:44.1212024-05:00||;True|2026-02-23T07:29:19.3226285-05:00||;True|2026-02-22T20:02:08.7802640-05:00||;True|2026-02-22T19:00:49.1033285-05:00||;True|2026-02-22T18:46:50.8399883-05:00||;True|2026-02-22T18:36:34.2983199-05:00||;True|2026-02-22T18:33:05.9495883-05:00||;True|2026-02-22T18:28:09.3531365-05:00||;True|2026-02-22T18:23:19.7767548-05:00||;True|2026-02-22T18:03:49.9702878-05:00||;True|2026-02-22T17:31:43.8027839-05:00||;True|2026-02-22T17:14:22.1722691-05:00||;True|2026-02-22T17:07:09.6937759-05:00||;True|2026-02-22T16:29:37.5643134-05:00||;True|2026-02-22T16:05:05.3412117-05:00||;True|2026-02-22T15:59:39.7645693-05:00||; \ No newline at end of file diff --git a/ASYNC_CONVERSION_CHECKLIST.md b/docs/ASYNC_CONVERSION_CHECKLIST.md similarity index 100% rename from ASYNC_CONVERSION_CHECKLIST.md rename to docs/ASYNC_CONVERSION_CHECKLIST.md diff --git a/ASYNC_CONVERSION_EXAMPLE.cs b/docs/ASYNC_CONVERSION_EXAMPLE.cs similarity index 100% rename from ASYNC_CONVERSION_EXAMPLE.cs rename to docs/ASYNC_CONVERSION_EXAMPLE.cs diff --git a/ASYNC_CONVERSION_PRIORITY.md b/docs/ASYNC_CONVERSION_PRIORITY.md similarity index 100% rename from ASYNC_CONVERSION_PRIORITY.md rename to docs/ASYNC_CONVERSION_PRIORITY.md diff --git a/ASYNC_MIGRATION_PLAN.md b/docs/ASYNC_MIGRATION_PLAN.md similarity index 100% rename from ASYNC_MIGRATION_PLAN.md rename to docs/ASYNC_MIGRATION_PLAN.md diff --git a/BASEITEM_ASYNC_REFERENCE.md b/docs/BASEITEM_ASYNC_REFERENCE.md similarity index 100% rename from BASEITEM_ASYNC_REFERENCE.md rename to docs/BASEITEM_ASYNC_REFERENCE.md diff --git a/BASEITEM_FINAL_STATUS.md b/docs/BASEITEM_FINAL_STATUS.md similarity index 100% rename from BASEITEM_FINAL_STATUS.md rename to docs/BASEITEM_FINAL_STATUS.md diff --git a/BUILD_SUCCESS_SUMMARY.md b/docs/BUILD_SUCCESS_SUMMARY.md similarity index 100% rename from BUILD_SUCCESS_SUMMARY.md rename to docs/BUILD_SUCCESS_SUMMARY.md diff --git a/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md similarity index 100% rename from CONTRIBUTORS.md rename to docs/CONTRIBUTORS.md diff --git a/ConvertToFileScopedNamespaces.ps1 b/docs/ConvertToFileScopedNamespaces.ps1 similarity index 100% rename from ConvertToFileScopedNamespaces.ps1 rename to docs/ConvertToFileScopedNamespaces.ps1 diff --git a/EDITORCONFIG_SETUP.md b/docs/EDITORCONFIG_SETUP.md similarity index 100% rename from EDITORCONFIG_SETUP.md rename to docs/EDITORCONFIG_SETUP.md diff --git a/FixStyleCopWarnings.ps1 b/docs/FixStyleCopWarnings.ps1 similarity index 100% rename from FixStyleCopWarnings.ps1 rename to docs/FixStyleCopWarnings.ps1 diff --git a/HOW_TO_IGNORE_IDE0065.md b/docs/HOW_TO_IGNORE_IDE0065.md similarity index 100% rename from HOW_TO_IGNORE_IDE0065.md rename to docs/HOW_TO_IGNORE_IDE0065.md diff --git a/MEDIAATTACHMENT_CONVERSION_COMPLETE.md b/docs/MEDIAATTACHMENT_CONVERSION_COMPLETE.md similarity index 100% rename from MEDIAATTACHMENT_CONVERSION_COMPLETE.md rename to docs/MEDIAATTACHMENT_CONVERSION_COMPLETE.md diff --git a/NET11_MIGRATION_SUMMARY.md b/docs/NET11_MIGRATION_SUMMARY.md similarity index 100% rename from NET11_MIGRATION_SUMMARY.md rename to docs/NET11_MIGRATION_SUMMARY.md diff --git a/NPGSQL_COMMAND_IN_PROGRESS_FIX.md b/docs/NPGSQL_COMMAND_IN_PROGRESS_FIX.md similarity index 100% rename from NPGSQL_COMMAND_IN_PROGRESS_FIX.md rename to docs/NPGSQL_COMMAND_IN_PROGRESS_FIX.md diff --git a/OVERALL_PROJECT_STATUS.md b/docs/OVERALL_PROJECT_STATUS.md similarity index 100% rename from OVERALL_PROJECT_STATUS.md rename to docs/OVERALL_PROJECT_STATUS.md diff --git a/PHASE1_COMPLETE.md b/docs/PHASE1_COMPLETE.md similarity index 100% rename from PHASE1_COMPLETE.md rename to docs/PHASE1_COMPLETE.md diff --git a/PHASE1_PROGRESS_REPORT.md b/docs/PHASE1_PROGRESS_REPORT.md similarity index 100% rename from PHASE1_PROGRESS_REPORT.md rename to docs/PHASE1_PROGRESS_REPORT.md diff --git a/PHASE2_COMPLETE.md b/docs/PHASE2_COMPLETE.md similarity index 100% rename from PHASE2_COMPLETE.md rename to docs/PHASE2_COMPLETE.md diff --git a/PHASE3A_COMPLETE.md b/docs/PHASE3A_COMPLETE.md similarity index 100% rename from PHASE3A_COMPLETE.md rename to docs/PHASE3A_COMPLETE.md diff --git a/PHASE3_STRATEGY.md b/docs/PHASE3_STRATEGY.md similarity index 100% rename from PHASE3_STRATEGY.md rename to docs/PHASE3_STRATEGY.md diff --git a/PHASE_3A_FINAL_SUMMARY.md b/docs/PHASE_3A_FINAL_SUMMARY.md similarity index 100% rename from PHASE_3A_FINAL_SUMMARY.md rename to docs/PHASE_3A_FINAL_SUMMARY.md diff --git a/PHASE_3B_SUMMARY.md b/docs/PHASE_3B_SUMMARY.md similarity index 100% rename from PHASE_3B_SUMMARY.md rename to docs/PHASE_3B_SUMMARY.md diff --git a/PHASE_3C_3D_SUMMARY.md b/docs/PHASE_3C_3D_SUMMARY.md similarity index 100% rename from PHASE_3C_3D_SUMMARY.md rename to docs/PHASE_3C_3D_SUMMARY.md diff --git a/PHASE_3E_SUMMARY.md b/docs/PHASE_3E_SUMMARY.md similarity index 100% rename from PHASE_3E_SUMMARY.md rename to docs/PHASE_3E_SUMMARY.md diff --git a/PHASE_3_COMBINED_SUMMARY.md b/docs/PHASE_3_COMBINED_SUMMARY.md similarity index 100% rename from PHASE_3_COMBINED_SUMMARY.md rename to docs/PHASE_3_COMBINED_SUMMARY.md diff --git a/POC_SUMMARY_REPORT.md b/docs/POC_SUMMARY_REPORT.md similarity index 100% rename from POC_SUMMARY_REPORT.md rename to docs/POC_SUMMARY_REPORT.md diff --git a/POSTGRESQL_BACKUP_ANALYSIS.md b/docs/POSTGRESQL_BACKUP_ANALYSIS.md similarity index 100% rename from POSTGRESQL_BACKUP_ANALYSIS.md rename to docs/POSTGRESQL_BACKUP_ANALYSIS.md diff --git a/PROJECT_COMPLETION.md b/docs/PROJECT_COMPLETION.md similarity index 100% rename from PROJECT_COMPLETION.md rename to docs/PROJECT_COMPLETION.md diff --git a/README_EDITORCONFIG_CHANGES.md b/docs/README_EDITORCONFIG_CHANGES.md similarity index 100% rename from README_EDITORCONFIG_CHANGES.md rename to docs/README_EDITORCONFIG_CHANGES.md diff --git a/STAKEHOLDER_PRESENTATION.md b/docs/STAKEHOLDER_PRESENTATION.md similarity index 100% rename from STAKEHOLDER_PRESENTATION.md rename to docs/STAKEHOLDER_PRESENTATION.md diff --git a/rollback-to-net10.ps1 b/docs/rollback-to-net10.ps1 similarity index 100% rename from rollback-to-net10.ps1 rename to docs/rollback-to-net10.ps1 diff --git a/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll b/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll index f2f97e52..d7f87adc 100644 Binary files a/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll and b/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll differ diff --git a/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb b/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb index 1566b34a..9b4b64e5 100644 Binary files a/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb and b/src/Jellyfin.CodeAnalysis/bin/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb differ diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs index ff6b222e..45f3ffe7 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfo.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -13,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+86883cd5c6e26f1ad8f5d26aeb97f15f859def57")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f833f0ceebcaa4ac5d8972494fbe574ff6b0036b")] [assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.CodeAnalysis")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache index a45916b5..ff06f352 100644 --- a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache +++ b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.AssemblyInfoInputs.cache @@ -1 +1 @@ -519a49780b327d7db1c693a3f7b3613e79c1adca3797d68beef6d8a27561c8f3 +ec635030130ae48b7e69fa591520d48e411bcd6177f6760b1e8b737bdcf85112 diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.AssemblyReference.cache b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.AssemblyReference.cache index 4c5b9dad..1fd0093c 100644 Binary files a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.AssemblyReference.cache and b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.csproj.AssemblyReference.cache differ diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll index f2f97e52..d7f87adc 100644 Binary files a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll and b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.dll differ diff --git a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb index 1566b34a..9b4b64e5 100644 Binary files a/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb and b/src/Jellyfin.CodeAnalysis/obj/Debug/netstandard2.0/Jellyfin.CodeAnalysis.pdb differ