diff --git a/pkgs/servers/web-apps/kavita/default.nix b/pkgs/servers/web-apps/kavita/default.nix
index 855a733a363b..65d3a25072ce 100644
--- a/pkgs/servers/web-apps/kavita/default.nix
+++ b/pkgs/servers/web-apps/kavita/default.nix
@@ -2,7 +2,6 @@
lib,
stdenvNoCC,
fetchFromGitHub,
- fetchpatch2,
buildDotnetModule,
buildNpmPackage,
dotnetCorePackages,
@@ -11,13 +10,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "kavita";
- version = "0.8.5.11";
+ version = "0.8.7";
src = fetchFromGitHub {
owner = "kareadita";
repo = "kavita";
rev = "v${finalAttrs.version}";
- hash = "sha256-HSVdEB0yhmm/SZseHQ5kTRBaVqCZZx934Ovq1pTmQkM=";
+ hash = "sha256-jRP7ts6+jogPdmP+DfzeijlG70kvJWgf8da/sTBT9d4=";
};
backend = buildDotnetModule {
@@ -27,19 +26,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
patches = [
# The webroot is hardcoded as ./wwwroot
./change-webroot.diff
- # Upstream removes database migrations between versions
- # Restore them to avoid breaking on updates
- # Info: Restores migrations for versions between v0.7.1.4 and v0.7.9
- # On update: check if more migrations need to be restored!
- # Migrations should at least allow updates from previous NixOS versions
- ./restore-migrations.diff
- # Our nixos test depends on /api/locale; this patch fixes an upstream bug where the first response always fails
- # https://github.com/Kareadita/Kavita/pull/3686 remove once upstream is fixed
- (fetchpatch2 {
- name = "fix-locale-cache.patch";
- url = "https://github.com/Kareadita/Kavita/commit/5af07b9525c2164a6548092244bbdf66815b3e95.patch?full_index=1";
- hash = "sha256-aFZRxijAbA2mXJM+3kC4P4p76d0p5fEXLiaRhNmjOAA=";
- })
+ # NOTE: Upstream frequently removes old database migrations between versions.
+ # Currently no migration patches are needed for upgrades from NixOS 24.11 (v0.8.3.2).
+ # Future updates should check if migration restoration is needed for supported upgrade paths.
];
postPatch = ''
substituteInPlace API/Services/DirectoryService.cs --subst-var out
@@ -65,7 +54,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
npmBuildScript = "prod";
npmFlags = [ "--legacy-peer-deps" ];
npmRebuildFlags = [ "--ignore-scripts" ]; # Prevent playwright from trying to install browsers
- npmDepsHash = "sha256-9SfiH567+q3Id6/7pqWeX0y934V2YFQ4EWIJ+66smgI=";
+ npmDepsHash = "sha256-/fBUOlZfNGyRu9mfniSMBKHPNgNsZNpbFZpVrFwBtb4=";
};
dontBuild = true;
diff --git a/pkgs/servers/web-apps/kavita/nuget-deps.json b/pkgs/servers/web-apps/kavita/nuget-deps.json
index 263289860b7f..887242683f5f 100644
--- a/pkgs/servers/web-apps/kavita/nuget-deps.json
+++ b/pkgs/servers/web-apps/kavita/nuget-deps.json
@@ -11,18 +11,18 @@
},
{
"pname": "BouncyCastle.Cryptography",
- "version": "2.5.0",
- "hash": "sha256-4JTx7QKSu3BE7kPuspN1KK2LtA9BWKLHZRLfOBEzWHY="
+ "version": "2.5.1",
+ "hash": "sha256-ISDd8fS6/cIJIXBFDd7F3FQ0wzWkAo4r8dvycb8iT6c="
},
{
"pname": "Cronos",
- "version": "0.9.0",
- "hash": "sha256-yDYBfqSXqvT/VPUf6UT3XOgqqPmOMYqhjCBxpF5i15c="
+ "version": "0.11.0",
+ "hash": "sha256-xElG27p+D4RrirLAbEhddOAlDgx95pm5KcOX47UAc10="
},
{
"pname": "CsvHelper",
- "version": "33.0.1",
- "hash": "sha256-4MwA/WerpI0VYWiaEudNCNnE1v6/k2tPmLbRjmgijV4="
+ "version": "33.1.0",
+ "hash": "sha256-pEfX4o63xupI7uuwe6qa05One0pJ7UbzzJqLh4Shju8="
},
{
"pname": "Docnet.Core",
@@ -61,13 +61,13 @@
},
{
"pname": "Hangfire",
- "version": "1.8.18",
- "hash": "sha256-Ty2nF3qL5VQyZZcAaCBuBVohT7eMtwrKwFSv9TZCx0k="
+ "version": "1.8.20",
+ "hash": "sha256-54lEtT81UcSf5LMkpo9cwA33lf2JUHqbP3nmfe744jc="
},
{
"pname": "Hangfire.AspNetCore",
- "version": "1.8.18",
- "hash": "sha256-tQx6bh68ZJk+kG2d3hszAzAY+9yPzoNqvlfgccsXfxc="
+ "version": "1.8.20",
+ "hash": "sha256-0fjlvnTlikupJO9MVDbWGF0pitF8jeufvcen8RyiHpc="
},
{
"pname": "Hangfire.Core",
@@ -81,8 +81,8 @@
},
{
"pname": "Hangfire.Core",
- "version": "1.8.18",
- "hash": "sha256-erTLLsfI1Vo58zke9qqI1n2PCFqCGBoH0J0/f+WCwnQ="
+ "version": "1.8.20",
+ "hash": "sha256-m+OTEYX7+jfhJk880KhfOH52d9TD/I1wfgil5gLlt5s="
},
{
"pname": "Hangfire.InMemory",
@@ -96,13 +96,13 @@
},
{
"pname": "Hangfire.NetCore",
- "version": "1.8.18",
- "hash": "sha256-pensGJ3OJTydVhi5ziaVPCKNpOe9EMlimohtFmBw0bo="
+ "version": "1.8.20",
+ "hash": "sha256-5ioXNuuNaKL7IW438haeSes32r1tu6tXLdebMxFU6Zs="
},
{
"pname": "Hangfire.SqlServer",
- "version": "1.8.18",
- "hash": "sha256-mirQEgFPCXdvxE9XqXGUDizjixAlkUZ6WSJIk0Ovpuc="
+ "version": "1.8.20",
+ "hash": "sha256-rMT6IywSAt+JzN+y541g29c+2rmHTeDNA0dqT4gnWn0="
},
{
"pname": "Hangfire.Storage.SQLite",
@@ -111,8 +111,8 @@
},
{
"pname": "HtmlAgilityPack",
- "version": "1.11.74",
- "hash": "sha256-kp9Hd6H6YfVI8xGOQXTcpcLXDen85tzI423vsJkL6Zo="
+ "version": "1.12.1",
+ "hash": "sha256-qravAvCdB/KjWujRk2GL/kGre/B9XVAP+jewICxiKKo="
},
{
"pname": "Humanizer.Core",
@@ -121,8 +121,8 @@
},
{
"pname": "MailKit",
- "version": "4.10.0",
- "hash": "sha256-LnpMn+yD5gWrEmZ8dsHf80aBV1KM508uM91C4TftPsk="
+ "version": "4.12.1",
+ "hash": "sha256-fwI0YTbwfzrvdkbATWGbv4D8ugOXgaPO/WFvGxQ9WS8="
},
{
"pname": "MarkdownDeep.NET.Core",
@@ -136,13 +136,13 @@
},
{
"pname": "Microsoft.AspNetCore.Authentication.JwtBearer",
- "version": "9.0.2",
- "hash": "sha256-X/n1/FojwBdgJpAwgfUjTzt6sStEsjTX5KyZWXm1cGA="
+ "version": "9.0.6",
+ "hash": "sha256-caq6+66Khlpnxx2AoKz7KZzTsAGtttn30XCpAVWHQ5M="
},
{
"pname": "Microsoft.AspNetCore.Authentication.OpenIdConnect",
- "version": "9.0.2",
- "hash": "sha256-xqyfZOksphmvaN71bM5on4xf8usOSiKvGZ1j8F250IE="
+ "version": "9.0.6",
+ "hash": "sha256-w1oV7FvVCahOMg9RSrCfijhPQKU9DVV4opA2wKK8xLY="
},
{
"pname": "Microsoft.AspNetCore.Authorization",
@@ -161,13 +161,13 @@
},
{
"pname": "Microsoft.AspNetCore.Cryptography.Internal",
- "version": "9.0.2",
- "hash": "sha256-rGpA88L92YFSNeMZCoO74QTGOpmcgNqhYJ6norXX3eU="
+ "version": "9.0.6",
+ "hash": "sha256-ZKt2tftooxSQifJ6UNA85fAlsesx0QgKv8NmW1jTcCs="
},
{
"pname": "Microsoft.AspNetCore.Cryptography.KeyDerivation",
- "version": "9.0.2",
- "hash": "sha256-crQVw+JYWjOshBokx2W5fUEa+6oitZIJKEhXIsDg70g="
+ "version": "9.0.6",
+ "hash": "sha256-r9knJVBbN0S+po6BK20Ak6r9FXK9saTLunchxDqXq+Q="
},
{
"pname": "Microsoft.AspNetCore.Hosting.Abstractions",
@@ -211,8 +211,8 @@
},
{
"pname": "Microsoft.AspNetCore.Identity.EntityFrameworkCore",
- "version": "9.0.2",
- "hash": "sha256-0AAxLKe2QwrfdGzBVWImKYSZyz8JLEErjf+/vFVVYzU="
+ "version": "9.0.6",
+ "hash": "sha256-mF/nJQawGgra3Nc/GQQT50l1aHBmI8G1nlotw1tjCRY="
},
{
"pname": "Microsoft.AspNetCore.Routing",
@@ -316,74 +316,74 @@
},
{
"pname": "Microsoft.Data.Sqlite.Core",
- "version": "9.0.2",
- "hash": "sha256-ZUVDe+oy7fAWcnQDRdhkVeN7YZkJewwqBNaxdZcykiM="
+ "version": "9.0.6",
+ "hash": "sha256-f4WHab5L0S4piVCS4meER7cRcZIGDRaqcND8VS9QJAU="
},
{
"pname": "Microsoft.EntityFrameworkCore",
- "version": "9.0.2",
- "hash": "sha256-ew+vhHqu+4Hgc5xKiIwEHYWD8dsXqtHmu8Ctre5MrXc="
+ "version": "9.0.6",
+ "hash": "sha256-B118NSNtOYUihsHsI4741+YUZJGbMja0MUmDm8NRr5k="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-FNTvIJPkG6jlEE+3p4/qeL7NPDKNDgDCYlIrSn1gQ4E="
+ "version": "9.0.6",
+ "hash": "sha256-fd+GFr+mqNMwMq1MlN2DjnAMn0kQ75pJWgUBcXSuWv0="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
- "version": "9.0.2",
- "hash": "sha256-qXwOxUCeg4b4NSLFD3Ws/D161uQoozM+EiBThp7IeBY="
+ "version": "9.0.6",
+ "hash": "sha256-CDc2Xlo65IhClydJf90eoXktomxDY29UnKfQBZDYtOo="
},
{
"pname": "Microsoft.EntityFrameworkCore.Design",
- "version": "9.0.2",
- "hash": "sha256-f5LMTlXnb13wKQOofCJJ+TyEPOnHi9FpTaHaiYwJF80="
+ "version": "9.0.6",
+ "hash": "sha256-+TeQl0uCg/UXZVO36Wa0+8s3z6OmNwdtwM2I8YhZJgk="
},
{
"pname": "Microsoft.EntityFrameworkCore.Relational",
- "version": "9.0.2",
- "hash": "sha256-IGc3xy455dFu+z6M0Vaqqm09VXehb/XFquOgtpTLcGk="
+ "version": "9.0.6",
+ "hash": "sha256-g9iaI89SSxlopSnfSfU9+lT+K2OcJgFkdn25gq93oak="
},
{
"pname": "Microsoft.EntityFrameworkCore.Sqlite",
- "version": "9.0.2",
- "hash": "sha256-ucYyVaLWpRk6Xl0OtX9qp8Nr0gktElgIML5b/JPItX4="
+ "version": "9.0.6",
+ "hash": "sha256-RAX4jmf1eMQBvcgtWUoVoRlagX6kV5hrxAj1LbxH/NY="
},
{
"pname": "Microsoft.EntityFrameworkCore.Sqlite.Core",
- "version": "9.0.2",
- "hash": "sha256-LqWVpwwj837DHoQuk/aq78Y9lwD/oWDJAxwLNdYN1No="
+ "version": "9.0.6",
+ "hash": "sha256-ilqZk5QeIWs1jgqgU/rMOlKld8TEHvCMwehbJ+r8IcI="
},
{
"pname": "Microsoft.Extensions.ApiDescription.Server",
- "version": "6.0.5",
- "hash": "sha256-RJjBWz+UHxkQE2s7CeGYdTZ218mCufrxl0eBykZdIt4="
+ "version": "8.0.0",
+ "hash": "sha256-GceEAtCVtm8xUHjR6obQ6bBJMOf+9d9OQ1iVr48sQbg="
},
{
"pname": "Microsoft.Extensions.Caching.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-fSHzO0OgH+bSuq7vxMhe8gw17Cx2ouMLen9IsJAOD7c="
+ "version": "9.0.6",
+ "hash": "sha256-NuwtUydPZE7d2ntiz1rT4i9udKXlEV4r/CnM3Ii+fuQ="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
- "version": "9.0.2",
- "hash": "sha256-QBqH+WqnJrzjLFekeu8yCGyRBRfiMUPihfhLi+Wtm7w="
+ "version": "9.0.6",
+ "hash": "sha256-qtMzge0A0ZM2oaNNbLAM6ndAudY8I6LQlhUXo4fj1Mg="
},
{
"pname": "Microsoft.Extensions.Configuration",
- "version": "8.0.0",
- "hash": "sha256-9BPsASlxrV8ilmMCjdb3TiUcm5vFZxkBnAI/fNBSEyA="
- },
- {
- "pname": "Microsoft.Extensions.Configuration",
- "version": "9.0.2",
- "hash": "sha256-AUNaLhYTcHUkqKGhSL7QgrifV9JkjKhNQ4Ws8UtZhlM="
+ "version": "9.0.6",
+ "hash": "sha256-Ib0B8qCNNrtcKd3dG0ZeO4cAndb5koNjPUgv9Oyvbns="
},
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
"version": "3.0.0",
"hash": "sha256-GJDvt3qFAif5ToFjHgs8imCaUER7yvYJghnlYXiHrHU="
},
+ {
+ "pname": "Microsoft.Extensions.Configuration.Abstractions",
+ "version": "6.0.0",
+ "hash": "sha256-Evg+Ynj2QUa6Gz+zqF+bUyfGD0HI5A2fHmxZEXbn3HA="
+ },
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
"version": "8.0.0",
@@ -396,18 +396,13 @@
},
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-icRtfbi0nDRUYDErtKYx0z6A1gWo5xdswsSM6o4ozxc="
+ "version": "9.0.6",
+ "hash": "sha256-11bIIn40Qadrlp1MZpQmAlpBHXPcbxB4Gjcp12EUQ1M="
},
{
"pname": "Microsoft.Extensions.Configuration.Binder",
- "version": "8.0.0",
- "hash": "sha256-GanfInGzzoN2bKeNwON8/Hnamr6l7RTpYLA49CNXD9Q="
- },
- {
- "pname": "Microsoft.Extensions.Configuration.Binder",
- "version": "8.0.2",
- "hash": "sha256-aGB0VuoC34YadAEqrwoaXLc5qla55pswDV2xLSmR7SE="
+ "version": "6.0.0",
+ "hash": "sha256-7NZcKkiXWSuhhVcA/fXHPY/62aGUyMsRdiHm91cWC5Y="
},
{
"pname": "Microsoft.Extensions.Configuration.Binder",
@@ -416,38 +411,38 @@
},
{
"pname": "Microsoft.Extensions.Configuration.Binder",
- "version": "9.0.2",
- "hash": "sha256-lYWUfvSnpp9M4N4wIfFnMlB+8K79g9uUa1NXsgnxs0k="
+ "version": "9.0.6",
+ "hash": "sha256-+8YG7cvbWUxJgrYJDy+Rk4rIzXS8HV0xU8Bg+3SFoTg="
},
{
"pname": "Microsoft.Extensions.Configuration.CommandLine",
- "version": "9.0.2",
- "hash": "sha256-qsEwiAO/n2+k8Q8/AftqdSlvvQWDx7WKb+9VlP8Nuxw="
+ "version": "9.0.6",
+ "hash": "sha256-Mct/NLjPdur4M2h6aApzu9C7HrSpkxFis64wgloQk/g="
},
{
"pname": "Microsoft.Extensions.Configuration.EnvironmentVariables",
- "version": "9.0.2",
- "hash": "sha256-XgSdv8+zh2vXmhP+a31/+Y+mNLwQwLflfCiEtDemea0="
+ "version": "9.0.6",
+ "hash": "sha256-hUJX5Xcj1iIvOr2oqZUfQXVQVMFyQb4OFetvQlW3hNQ="
},
{
"pname": "Microsoft.Extensions.Configuration.FileExtensions",
- "version": "9.0.2",
- "hash": "sha256-eeZbwf2lcV74mjXtOX8q0MxvP4QzEYyHXr1EGFS/orU="
+ "version": "9.0.6",
+ "hash": "sha256-C0ChgI6hIRuShF9rSbN6TnRcfJHw2AHu4MtyfRuAKik="
},
{
"pname": "Microsoft.Extensions.Configuration.Json",
- "version": "9.0.2",
- "hash": "sha256-7/ewyjh0gXu798fYcJxOCkdaAPIzrJ8reuTzqz93IJ0="
+ "version": "9.0.6",
+ "hash": "sha256-isxHMvYKIY0Jrfh2KHoOxzYnDdMaux3RPlernGCL6Uw="
},
{
"pname": "Microsoft.Extensions.Configuration.UserSecrets",
- "version": "9.0.2",
- "hash": "sha256-0OmAQn8gIqTPN4s0NkcidXivjq5LsEGiNVxmp3qxGoo="
+ "version": "9.0.6",
+ "hash": "sha256-3ViPFoe1HzTKcuJkBoT7YadGRCv8woaQj4GRwaa4p+I="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
- "version": "9.0.2",
- "hash": "sha256-jNQVj2Xo7wzVdNDu27bLbYCVUOF8yDVrFtC3cZ9OsXo="
+ "version": "9.0.6",
+ "hash": "sha256-m5vMZj3q3hHQDla/bKbfEk1lUj55p4/bktaqIWAVFRs="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
@@ -464,11 +459,6 @@
"version": "6.0.0",
"hash": "sha256-SZke0jNKIqJvvukdta+MgIlGsrP2EdPkkS8lfLg7Ju4="
},
- {
- "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
- "version": "8.0.0",
- "hash": "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8="
- },
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "8.0.2",
@@ -481,8 +471,8 @@
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-WoTLgw/OlXhgN54Szip0Zpne7i/YTXwZ1ZLCPcHV6QM="
+ "version": "9.0.6",
+ "hash": "sha256-40rY38OwSqueIWr/KMvJX9u+vipN+AaRQ6eNCZLqrog="
},
{
"pname": "Microsoft.Extensions.DependencyModel",
@@ -496,13 +486,13 @@
},
{
"pname": "Microsoft.Extensions.DependencyModel",
- "version": "9.0.2",
- "hash": "sha256-KqR0yrNi7S8rDje4RYjTEC98XG0rBreO4wkHGO6Llks="
+ "version": "9.0.6",
+ "hash": "sha256-9cKF9wZidauZJ6GmwyqQ5P9YnrOlKdMZXzTLJWZflwo="
},
{
"pname": "Microsoft.Extensions.Diagnostics",
- "version": "9.0.2",
- "hash": "sha256-ImTZ6PZyKEdq1XvqYT5DPr6cG0BSTrsrO7rTDuy29fc="
+ "version": "9.0.6",
+ "hash": "sha256-PoBv4gMAh53SAujZ3k7YUPuM/abxi5nHFvlHm67upEA="
},
{
"pname": "Microsoft.Extensions.Diagnostics.Abstractions",
@@ -511,8 +501,8 @@
},
{
"pname": "Microsoft.Extensions.Diagnostics.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-JTJ8LCW3aYUO86OPgXRQthtDTUMikOfILExgeOF8CX4="
+ "version": "9.0.6",
+ "hash": "sha256-3Bl1nIg0NoTbHaIXWmaRxutoxV1PSy6jlmKwPLdc5r4="
},
{
"pname": "Microsoft.Extensions.FileProviders.Abstractions",
@@ -531,23 +521,23 @@
},
{
"pname": "Microsoft.Extensions.FileProviders.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-RmVshMCWW1/RE/Wk8AeT4r6uZ+XFuwDFYzdxYKSm440="
+ "version": "9.0.6",
+ "hash": "sha256-/1jaqN44SNaRkyfwhH3KGDq/St1M1izCGUaPgkC9dIU="
},
{
"pname": "Microsoft.Extensions.FileProviders.Physical",
- "version": "9.0.2",
- "hash": "sha256-vQBgVLW813wOnJ1+943ArDWReok6p0jAl7fhwvyFtL8="
+ "version": "9.0.6",
+ "hash": "sha256-vOKzQJqGkiGn0EyAx4Gx5po75H40g3rScySssce8vDs="
},
{
"pname": "Microsoft.Extensions.FileSystemGlobbing",
- "version": "9.0.2",
- "hash": "sha256-oH6X8SQjqi5Q2HLRILcUr9iPqnC1Ky5m5GbYYCKCxag="
+ "version": "9.0.6",
+ "hash": "sha256-ehBRwCImAQ7n8XGI5KLtcp5+IWCd4GJO5l2gKtN4C08="
},
{
"pname": "Microsoft.Extensions.Hosting",
- "version": "9.0.2",
- "hash": "sha256-eI9ckarRX0UCX+mBsEBYdvHZrmN86bXyTRvbH4gU9JM="
+ "version": "9.0.6",
+ "hash": "sha256-q/S5mPcZPfZz/fXofYj3KUi6CmUHTIV0yCtVPyXVsEU="
},
{
"pname": "Microsoft.Extensions.Hosting.Abstractions",
@@ -566,29 +556,24 @@
},
{
"pname": "Microsoft.Extensions.Hosting.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-PUCam4g5g84qIqfPA9sVBNVPA26rWFq7js9nHF3WLZc="
+ "version": "9.0.6",
+ "hash": "sha256-1Mzyk2Y5WZX0hCxpYpNumCdCTOsZsA+CUMqHOB07JrE="
},
{
"pname": "Microsoft.Extensions.Identity.Core",
- "version": "9.0.2",
- "hash": "sha256-5aLS+VE+FqHozXW4qFu5gyGpV8HqIfGzRnUV/zXM2/Q="
+ "version": "9.0.6",
+ "hash": "sha256-gFnaok1z5JHYD4L8pkU6kPesPjh48iS+6fj0E/nYiGc="
},
{
"pname": "Microsoft.Extensions.Identity.Stores",
- "version": "9.0.2",
- "hash": "sha256-Em/aKN8WTmwg79RdK6+QDx1iVTR0qCK6/f54GW2HCjo="
+ "version": "9.0.6",
+ "hash": "sha256-t2kjZDRxOkOB/vLLaZccojGlk5G1ZbqrxafWAmQCIj4="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "6.0.0",
"hash": "sha256-8WsZKRGfXW5MsXkMmNVf6slrkw+cR005czkOP2KUqTk="
},
- {
- "pname": "Microsoft.Extensions.Logging",
- "version": "8.0.1",
- "hash": "sha256-vkfVw4tQEg86Xg18v6QO0Qb4Ysz0Njx57d1XcNuj6IU="
- },
{
"pname": "Microsoft.Extensions.Logging",
"version": "9.0.0",
@@ -596,14 +581,19 @@
},
{
"pname": "Microsoft.Extensions.Logging",
- "version": "9.0.2",
- "hash": "sha256-vPCb4ZoiwZUSGJIOhYiLwcZLnsd0ZZhny6KQkT88nI0="
+ "version": "9.0.6",
+ "hash": "sha256-XFcRh5/aGtsNIUnEOLdusdpCVD7K6/6Ixwc2U/+a3c8="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "3.0.0",
"hash": "sha256-p70uTENWQc0J7ibLHlRHWk3RYZg0DMP3g2m4kAUaoxA="
},
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "8.0.0",
+ "hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4="
+ },
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "8.0.2",
@@ -616,38 +606,33 @@
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
- "version": "9.0.2",
- "hash": "sha256-mCxeuc+37XY0bmZR+z4p1hrZUdTZEg+FRcs/m6dAQDU="
+ "version": "9.0.6",
+ "hash": "sha256-lhOMYT4+hua7SlgASGFBDhOkrNOsy35WyIxU3nVsD08="
},
{
"pname": "Microsoft.Extensions.Logging.Configuration",
- "version": "8.0.1",
- "hash": "sha256-E2JbJG2EXlv2HUWLi17kIkAL6RC9rC2E18C3gAyOuaE="
- },
- {
- "pname": "Microsoft.Extensions.Logging.Configuration",
- "version": "9.0.2",
- "hash": "sha256-SeNQ8us2cZ8xbJx8TK7xm3IxQR95EanSfMYhqvP2pWU="
+ "version": "9.0.6",
+ "hash": "sha256-xc/isehpXfDHIKZ8QOywNBaYhACL8RgUx0bv9qa9OzQ="
},
{
"pname": "Microsoft.Extensions.Logging.Console",
- "version": "9.0.2",
- "hash": "sha256-yD30lW3ax4JHmZ9QIp1b0ELrXiwykP5KHF/feJGweyE="
+ "version": "9.0.6",
+ "hash": "sha256-oxXnWS5RrxblaIwy5+g/KtztfvPmW/yZGaKlsy7Ft+E="
},
{
"pname": "Microsoft.Extensions.Logging.Debug",
- "version": "9.0.2",
- "hash": "sha256-0WP9jFTsbXCIhYx/2IFL69mv2+K3Ld7C4QvwY00iOD0="
+ "version": "9.0.6",
+ "hash": "sha256-vWFQxQMsCOpkJB43ErwMGsBbhFhf/OMgOJf9NMfBmSk="
},
{
"pname": "Microsoft.Extensions.Logging.EventLog",
- "version": "9.0.2",
- "hash": "sha256-e4q/Z6xLq2HzQiKI7npagyEZdkfUe+FbIz3Tg+hPH9g="
+ "version": "9.0.6",
+ "hash": "sha256-Lkf+emnZ4zzEkx8QdKvJ4SeFeKX0ckEnyIqn3sVOUqY="
},
{
"pname": "Microsoft.Extensions.Logging.EventSource",
- "version": "9.0.2",
- "hash": "sha256-W7yidllNOKxTvgIUqjJ3h55PAIR/XREfbuH+8TUhD0o="
+ "version": "9.0.6",
+ "hash": "sha256-5V4gLVjJfBruNhxTVFE7Xx29u0oPL9ISe5U7rTV91Fg="
},
{
"pname": "Microsoft.Extensions.ObjectPool",
@@ -659,11 +644,6 @@
"version": "6.0.0",
"hash": "sha256-DxnEgGiCXpkrxFkxXtOXqwaiAtoIjA8VSSWCcsW0FwE="
},
- {
- "pname": "Microsoft.Extensions.Options",
- "version": "8.0.0",
- "hash": "sha256-n2m4JSegQKUTlOsKLZUUHHKMq926eJ0w9N9G+I3FoFw="
- },
{
"pname": "Microsoft.Extensions.Options",
"version": "8.0.2",
@@ -676,8 +656,8 @@
},
{
"pname": "Microsoft.Extensions.Options",
- "version": "9.0.2",
- "hash": "sha256-y2jZfcWx/H6Sx7wklA248r6kPjZmzTTLGxW8ZxrzNLM="
+ "version": "9.0.6",
+ "hash": "sha256-QXLt+WeCjH3pnbs0UVNXmskuWJtBrbNHOV8Of8w3teg="
},
{
"pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
@@ -686,13 +666,8 @@
},
{
"pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
- "version": "8.0.0",
- "hash": "sha256-A5Bbzw1kiNkgirk5x8kyxwg9lLTcSngojeD+ocpG1RI="
- },
- {
- "pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
- "version": "9.0.2",
- "hash": "sha256-xOYLRlXDI4gMEoQ+J+sQBNRT2RPDNrSCZkob7qBiV10="
+ "version": "9.0.6",
+ "hash": "sha256-/aAiaoQqvXBWPqwKogYSVzkQg+Qvg0GWLImk3+W1FKc="
},
{
"pname": "Microsoft.Extensions.Primitives",
@@ -711,23 +686,23 @@
},
{
"pname": "Microsoft.Extensions.Primitives",
- "version": "9.0.2",
- "hash": "sha256-zy/YNMaY47o6yNv2WuYiAJEjtoOF8jlWgsWHqXeSm4s="
+ "version": "9.0.6",
+ "hash": "sha256-hO2BmhEhL5sJUv0cf37jhsjr+gRCAJnQKOj38RKxJvo="
},
{
"pname": "Microsoft.IdentityModel.Abstractions",
- "version": "8.6.0",
- "hash": "sha256-0mXOkDKvUikcyCMUcmA7PWl4RlAwwUciKSqTTgLDa3o="
+ "version": "8.12.0",
+ "hash": "sha256-xRK1JBycHk7WRcLgVsibjgiuLqJIiSxBTHu+FkJZ1xI="
},
{
"pname": "Microsoft.IdentityModel.JsonWebTokens",
- "version": "8.6.0",
- "hash": "sha256-Wey0xjL0n6NCi4HiVFGcDS6+ONPp+ogzb5ZTF7sFt3k="
+ "version": "8.12.0",
+ "hash": "sha256-baDfyzHdTEiBl0bx8VYY9VpRzHi5pROMaKYW8KyevFY="
},
{
"pname": "Microsoft.IdentityModel.Logging",
- "version": "8.6.0",
- "hash": "sha256-4M4EUJDMDgmqdBxlbptnrLNWOLbmzatypDpl30CBUlk="
+ "version": "8.12.0",
+ "hash": "sha256-ujv1tXP9oQacoeCoRxxICgf4ERfWhxC19W8EyybDJ18="
},
{
"pname": "Microsoft.IdentityModel.Protocols",
@@ -746,8 +721,8 @@
},
{
"pname": "Microsoft.IdentityModel.Tokens",
- "version": "8.6.0",
- "hash": "sha256-gyZpy8h9I09fr7icHaIXaxRTzhstHrrrq2wkd/5vz78="
+ "version": "8.12.0",
+ "hash": "sha256-T9UoF+Z+bWnM+qFPoT+BzZF0MKZ6/kd7BoFJwiBUnxA="
},
{
"pname": "Microsoft.IO.RecyclableMemoryStream",
@@ -776,8 +751,8 @@
},
{
"pname": "Microsoft.OpenApi",
- "version": "1.6.22",
- "hash": "sha256-DDyPc6DAD/X4PgXlVIYqqU5KLwaIaMpvBml1fACKdjY="
+ "version": "1.6.23",
+ "hash": "sha256-YD2oxM/tlNpK5xUeHF85xdqcpBzHioUSyRjpN2A7KcY="
},
{
"pname": "Microsoft.Win32.Primitives",
@@ -786,13 +761,13 @@
},
{
"pname": "Microsoft.Win32.SystemEvents",
- "version": "9.0.2",
- "hash": "sha256-WXgu8y2LT8OtQSVRojumtlTkJVjfvXeZ8N9iRKIW/lI="
+ "version": "9.0.6",
+ "hash": "sha256-iIS1YZ8X8Zfahg2jOW3ODCZwmSSsp96epu+kT+wieQg="
},
{
"pname": "MimeKit",
- "version": "4.10.0",
- "hash": "sha256-SLQ7+Yh3o8bbxyRsA5yJgeAOkR8SqMI0vB8VwjQDzl8="
+ "version": "4.12.0",
+ "hash": "sha256-4i/RvXyXQsb6LlEs7tZWz5d5ab8mw3R8Wwp7FXSbMaA="
},
{
"pname": "MimeTypeMapOfficial",
@@ -816,63 +791,63 @@
},
{
"pname": "NetVips",
- "version": "3.0.0",
- "hash": "sha256-n3FDtdgEA12gxzfQ2bz5HlMOBnht4mz0jFstBh5CN00="
+ "version": "3.1.0",
+ "hash": "sha256-ZxbN+5JCLjyH23/2NPX/U0+5kbG20knpzouaZjpcrnA="
},
{
"pname": "NetVips.Native",
- "version": "8.16.0",
- "hash": "sha256-bHVoa9fWue4PY6FOIA0o3IU6WcMAK6VQOuQNADKD8S4="
+ "version": "8.17.0.1",
+ "hash": "sha256-YrXEAP1OOQiYBKC4zfDnQQdsoK1SvbDzJIO97pij/dQ="
},
{
"pname": "NetVips.Native.linux-arm",
- "version": "8.16.0",
- "hash": "sha256-VY/mUqkeLJZeYvLM1VbEtXFVZPuLgIHK6tvbwq+CjQw="
+ "version": "8.17.0.1",
+ "hash": "sha256-wI4MKuz850GngeYPEjIe31jZgZewcEz43KRs7VAV6aQ="
},
{
"pname": "NetVips.Native.linux-arm64",
- "version": "8.16.0",
- "hash": "sha256-ZXV8UmLFPVlk4tdFmoH/job43iS4ZchpM+gLJdFaoG8="
+ "version": "8.17.0.1",
+ "hash": "sha256-ZXHK3qCvg04TXvgWnSX2gm7B7wjESCUhFq54YVLZ7UQ="
},
{
"pname": "NetVips.Native.linux-musl-arm64",
- "version": "8.16.0",
- "hash": "sha256-27EmQkg0IQ45tt7I8Gwnh442MuU5ouyIvPU0npcK2sI="
+ "version": "8.17.0.1",
+ "hash": "sha256-V8yqPnCPKNR2dQXu4hzwlOkwxAFjgQN+IPF+FC8Lr+M="
},
{
"pname": "NetVips.Native.linux-musl-x64",
- "version": "8.16.0",
- "hash": "sha256-MMT4wt0YEl7ZDvrmwXMLvmoGzlVZQ97YyHjMSHsJHZs="
+ "version": "8.17.0.1",
+ "hash": "sha256-D+Pnme5SH8NaUc4cnRLM+bsbl6PppfGKLyKWQROfmjA="
},
{
"pname": "NetVips.Native.linux-x64",
- "version": "8.16.0",
- "hash": "sha256-eXSMJoz39utbAy4hiLJ2MTxWpkfdvW62OqhI3nOSYZo="
+ "version": "8.17.0.1",
+ "hash": "sha256-svruN0uUM29ogRU2L5sr6YdIgPuub67WvrY2ZMUigbs="
},
{
"pname": "NetVips.Native.osx-arm64",
- "version": "8.16.0",
- "hash": "sha256-tC2WmGzA/aItXj2dPunVt7Eu6pljV3334TcppN8NGqw="
+ "version": "8.17.0.1",
+ "hash": "sha256-K7dVwkEcDKhAGpU+Y4W8KS6eVNPplDIFDcfB0ueTTxw="
},
{
"pname": "NetVips.Native.osx-x64",
- "version": "8.16.0",
- "hash": "sha256-yEfcmO33/dVgX5Qm72TouiQzw5yLPvFeveRRf/8gRs0="
+ "version": "8.17.0.1",
+ "hash": "sha256-3V3Ht/wiOEOasxLBG7KABtGiy2zCDZL0XjGNHjt9dM4="
},
{
"pname": "NetVips.Native.win-arm64",
- "version": "8.16.0",
- "hash": "sha256-AFM66a+i8qqda8mEuvzt48RopYSh5zDeHE+PigETBKc="
+ "version": "8.17.0.1",
+ "hash": "sha256-iVI049MGnGoqZqq87qkQnQKKSKt5ShrUqlP0DVFyTpI="
},
{
"pname": "NetVips.Native.win-x64",
- "version": "8.16.0",
- "hash": "sha256-+4j4lkE7wLd8MFKa/O1keT4Hgl3kKBg6PEAcc8dlCwA="
+ "version": "8.17.0.1",
+ "hash": "sha256-vkCIMtzO7Uwf4rPmgLW/sO/LIXhS39O925pk+DbkhQA="
},
{
"pname": "NetVips.Native.win-x86",
- "version": "8.16.0",
- "hash": "sha256-kOE1SAqnf1ls3MQ4UkM4mheU7nKBFGOuFiQj5z8EL98="
+ "version": "8.17.0.1",
+ "hash": "sha256-XN6+Ma3hTwCHv6A9A/7cP46OkNMtHE57b3ny3BBN7wo="
},
{
"pname": "Newtonsoft.Json",
@@ -884,11 +859,6 @@
"version": "11.0.2",
"hash": "sha256-YhlAbGfwoxQzxb3Hef4iyV9eGdPQJJNd2GgSR0jsBJ0="
},
- {
- "pname": "NReco.Logging.File",
- "version": "1.2.2",
- "hash": "sha256-guI+h8t26u/DfYq354CXbdKIBqrKsDAyDZh1wFtDshw="
- },
{
"pname": "runtime.any.System.Collections",
"version": "4.3.0",
@@ -1101,8 +1071,8 @@
},
{
"pname": "Serilog",
- "version": "4.2.0",
- "hash": "sha256-7f3EpCsEbDxXgsuhE430KVI14p7oDUuCtwRpOCqtnbs="
+ "version": "4.3.0",
+ "hash": "sha256-jyIy4BjsyFXge3aO4GRFAdnX4/rz1MHfBkBDIpCDsTw="
},
{
"pname": "Serilog.AspNetCore",
@@ -1156,8 +1126,8 @@
},
{
"pname": "Serilog.Sinks.File",
- "version": "6.0.0",
- "hash": "sha256-KQmlUpG9ovRpNqKhKe6rz3XMLUjkBqjyQhEm2hV5Sow="
+ "version": "7.0.0",
+ "hash": "sha256-LxZYUoUPkCjIIVarJilnXnqQiMrFNJtoRilmzTNtUjo="
},
{
"pname": "Serilog.Sinks.SignalR.Core",
@@ -1166,18 +1136,18 @@
},
{
"pname": "SharpCompress",
- "version": "0.39.0",
- "hash": "sha256-Me88MMn5NUiw5bugFKCKFRnFSXQKIFZJ+k97Ex6jgZE="
+ "version": "0.40.0",
+ "hash": "sha256-pxz5ef//xOUClwuyflO0eLAfUItFcwfq74Cf0Hj5c1E="
},
{
"pname": "SixLabors.ImageSharp",
- "version": "3.1.7",
- "hash": "sha256-jMD/FiIwW1kNhTI6hKig8/QFOO3eTQX/C22cSAcKBH4="
+ "version": "3.1.10",
+ "hash": "sha256-6bVTSCxLY8Dt+9lpo4F4xEtMv5oPve2vS76O/lcuIok="
},
{
"pname": "SonarAnalyzer.CSharp",
- "version": "10.7.0.110445",
- "hash": "sha256-HIG3Us7EnfaZOLKjxDRCJjaoqwqCdrFuDI2GlMGadp4="
+ "version": "10.11.0.117924",
+ "hash": "sha256-A+5SRnNxUQiZPTPitY5duzstu/opDQGxwpGfQWWKDOk="
},
{
"pname": "sqlite-net-pcl",
@@ -1226,23 +1196,23 @@
},
{
"pname": "Swashbuckle.AspNetCore",
- "version": "7.3.1",
- "hash": "sha256-ZcTjOzUbSEIrlGPO/7M5C3wRqyhjZggNGJ3Sg6aUjf0="
+ "version": "9.0.1",
+ "hash": "sha256-rJFeYQgpQ6O3nK0I0ovzh5k8NA/Hzp6kIxKRBryBBBw="
},
{
"pname": "Swashbuckle.AspNetCore.Filters",
- "version": "8.0.2",
- "hash": "sha256-RCFdFvCzUYS850axoGaprr0heFyBFCIu9jzusXJ0YAA="
+ "version": "8.0.3",
+ "hash": "sha256-ZRSXCuRoo+t489TxEb9acXKrcdincwt937ydFkF7CuU="
},
{
"pname": "Swashbuckle.AspNetCore.Filters.Abstractions",
- "version": "8.0.2",
- "hash": "sha256-oe6KYmrvaAKu0JpAwxpIiyxSaqfRg2VAyc/KKQX6xFI="
+ "version": "8.0.3",
+ "hash": "sha256-I7ubMVx9O9i3+vOWPjJHQaNvIhyHvMtlyGxFXbd7ChQ="
},
{
"pname": "Swashbuckle.AspNetCore.Swagger",
- "version": "7.3.1",
- "hash": "sha256-ifpw7iIFjFD1tqWuJeFxxQ9AQv4VKKbg7uk+EMzCISg="
+ "version": "9.0.1",
+ "hash": "sha256-MgjUvPjRdrSVALtJL+kQZsL0siNVPUhVKzsc6VMKsLM="
},
{
"pname": "Swashbuckle.AspNetCore.SwaggerGen",
@@ -1251,13 +1221,13 @@
},
{
"pname": "Swashbuckle.AspNetCore.SwaggerGen",
- "version": "7.3.1",
- "hash": "sha256-ZgPqUgcK8iO+1cDqm4JxkJwg9atuj6f9uR2ty5z54Do="
+ "version": "9.0.1",
+ "hash": "sha256-yRYM43099u0sH9uozOWAHSj0uLBOSEAp1zzR4RJCYEU="
},
{
"pname": "Swashbuckle.AspNetCore.SwaggerUI",
- "version": "7.3.1",
- "hash": "sha256-0VmUWgbdW9L7YO+Xb79RsPsEJjXpDj/twLas1OlHlUs="
+ "version": "9.0.1",
+ "hash": "sha256-R1c/a5mMqstqSwm/PIj6FYa0fimE7ry4KibY6PUAuZQ="
},
{
"pname": "System.AppContext",
@@ -1346,8 +1316,8 @@
},
{
"pname": "System.Diagnostics.EventLog",
- "version": "9.0.2",
- "hash": "sha256-IoiQbH8To9UqzYgJzYpFbuiRV3KGU85y4ccPTyttP/w="
+ "version": "9.0.6",
+ "hash": "sha256-Blj+uqyTHKp/qPkf/jM9wYC6xPcaaVZqE/jUBAQXmGY="
},
{
"pname": "System.Diagnostics.Tools",
@@ -1361,8 +1331,8 @@
},
{
"pname": "System.Drawing.Common",
- "version": "9.0.2",
- "hash": "sha256-S7IMV4R/nWbZs/YCwI9UwwLHDP57NkfSEIaoYNbRq54="
+ "version": "9.0.6",
+ "hash": "sha256-uQDdDVOu3G39PPa1SbE7bHfTzQBAGzL705UklWl/y2I="
},
{
"pname": "System.Formats.Asn1",
@@ -1386,8 +1356,8 @@
},
{
"pname": "System.IdentityModel.Tokens.Jwt",
- "version": "8.6.0",
- "hash": "sha256-9usJvCIfrtI6T94wSXKGoL3UjZlE+F4LE4Y5zsD3LxI="
+ "version": "8.12.0",
+ "hash": "sha256-lDwnRAe7YDT+Qi0b3BWzI4GK0YTztXIMXo++GLMARJI="
},
{
"pname": "System.IO",
@@ -1396,8 +1366,8 @@
},
{
"pname": "System.IO.Abstractions",
- "version": "22.0.11",
- "hash": "sha256-jFfPplSHoc8HfmLDexMustNaljMFiXK/CdH35vzju+4="
+ "version": "22.0.14",
+ "hash": "sha256-Pi9mxp9Zt/ksfh1f6Su6t/rjFKb6SRR0RbVbLjGlJoQ="
},
{
"pname": "System.IO.Compression",
@@ -1641,8 +1611,8 @@
},
{
"pname": "System.Text.Json",
- "version": "9.0.2",
- "hash": "sha256-kftKUuGgZtF4APmp77U79ws76mEIi+R9+DSVGikA5y8="
+ "version": "9.0.6",
+ "hash": "sha256-WC/QbZhTaoZ3PbDKcFvJwMIA4xLUdnMrAXGlOW87VNY="
},
{
"pname": "System.Text.RegularExpressions",
@@ -1696,13 +1666,13 @@
},
{
"pname": "TestableIO.System.IO.Abstractions",
- "version": "22.0.11",
- "hash": "sha256-zW1WYq/rHJF9DFzbSrVSejepEE32jtO6E0M6xSW3ZTI="
+ "version": "22.0.14",
+ "hash": "sha256-DGtmN6InZDbI+jaw5j9h8308gopYxk0elRvVfZFjg9o="
},
{
"pname": "TestableIO.System.IO.Abstractions.Wrappers",
- "version": "22.0.11",
- "hash": "sha256-iy8sWpCe2+mG6zICnUT1qMEIz97DPcA6/P6KNonm9aM="
+ "version": "22.0.14",
+ "hash": "sha256-FiVXyMKdep1aJm7Dxe3bP5S5WQ9aM2kCjePUhSi+cJY="
},
{
"pname": "Testably.Abstractions.FileSystem.Interface",
@@ -1711,8 +1681,8 @@
},
{
"pname": "VersOne.Epub",
- "version": "3.3.2",
- "hash": "sha256-jzkD4HDgFMevH8FRYml7UHEwMt7BWG+VpinIPlioIUo="
+ "version": "3.3.4",
+ "hash": "sha256-BzUtRaxKkaG7tmXbvnWFM9vjf4g5XwhwnMUIdQzGlns="
},
{
"pname": "xunit.assert",
@@ -1726,7 +1696,7 @@
},
{
"pname": "ZstdSharp.Port",
- "version": "0.8.4",
- "hash": "sha256-4bFUNK++6yUOnY7bZQiibClSJUQjH0uIiUbQLBtPWbo="
+ "version": "0.8.5",
+ "hash": "sha256-+UQFeU64md0LlSf9nMXif6hHnfYEKm+WRyYd0Vo2QvI="
}
]
diff --git a/pkgs/servers/web-apps/kavita/restore-migrations.diff b/pkgs/servers/web-apps/kavita/restore-migrations.diff
deleted file mode 100644
index d158f503e329..000000000000
--- a/pkgs/servers/web-apps/kavita/restore-migrations.diff
+++ /dev/null
@@ -1,147 +0,0 @@
-diff --git a/API/Data/ManualMigrations/MigrateDisableScrobblingOnComicLibraries.cs b/API/Data/ManualMigrations/MigrateDisableScrobblingOnComicLibraries.cs
-new file mode 100644
-index 00000000..0de7bf5d
---- /dev/null
-+++ b/API/Data/ManualMigrations/MigrateDisableScrobblingOnComicLibraries.cs
-@@ -0,0 +1,38 @@
-+using System.Linq;
-+using System.Threading.Tasks;
-+using API.Entities.Enums;
-+using Microsoft.EntityFrameworkCore;
-+using Microsoft.Extensions.Logging;
-+
-+namespace API.Data.ManualMigrations;
-+
-+///
-+/// v0.7.4 introduced Scrobbling with Kavita+. By default, it is on, but Comic libraries have no scrobble providers, so disable
-+///
-+public static class MigrateDisableScrobblingOnComicLibraries
-+{
-+ public static async Task Migrate(IUnitOfWork unitOfWork, DataContext dataContext, ILogger logger)
-+ {
-+ if (!await dataContext.Library.Where(s => s.Type == LibraryType.Comic).Where(l => l.AllowScrobbling).AnyAsync())
-+ {
-+ return;
-+ }
-+ logger.LogInformation("Running MigrateDisableScrobblingOnComicLibraries migration. Please be patient, this may take some time");
-+
-+
-+ foreach (var lib in await dataContext.Library.Where(s => s.Type == LibraryType.Comic).Where(l => l.AllowScrobbling).ToListAsync())
-+ {
-+ lib.AllowScrobbling = false;
-+ unitOfWork.LibraryRepository.Update(lib);
-+ }
-+
-+ if (unitOfWork.HasChanges())
-+ {
-+ await unitOfWork.CommitAsync();
-+ }
-+
-+ logger.LogInformation("MigrateDisableScrobblingOnComicLibraries migration finished");
-+
-+ }
-+
-+}
-diff --git a/API/Data/ManualMigrations/MigrateLoginRoles.cs b/API/Data/ManualMigrations/MigrateLoginRoles.cs
-new file mode 100644
-index 00000000..f649908a
---- /dev/null
-+++ b/API/Data/ManualMigrations/MigrateLoginRoles.cs
-@@ -0,0 +1,36 @@
-+using System.Threading.Tasks;
-+using API.Constants;
-+using API.Entities;
-+using Microsoft.AspNetCore.Identity;
-+using Microsoft.Extensions.Logging;
-+
-+namespace API.Data.ManualMigrations;
-+
-+///
-+/// Added in v0.7.1.18
-+///
-+public static class MigrateLoginRoles
-+{
-+ ///
-+ /// Will not run if any users have the role already
-+ ///
-+ ///
-+ ///
-+ ///
-+ public static async Task Migrate(IUnitOfWork unitOfWork, UserManager userManager, ILogger logger)
-+ {
-+ var usersWithRole = await userManager.GetUsersInRoleAsync(PolicyConstants.LoginRole);
-+ if (usersWithRole.Count != 0) return;
-+
-+ logger.LogCritical("Running MigrateLoginRoles migration");
-+
-+ var allUsers = await unitOfWork.UserRepository.GetAllUsersAsync();
-+ foreach (var user in allUsers)
-+ {
-+ await userManager.RemoveFromRoleAsync(user, PolicyConstants.LoginRole);
-+ await userManager.AddToRoleAsync(user, PolicyConstants.LoginRole);
-+ }
-+
-+ logger.LogInformation("MigrateLoginRoles migration complete");
-+ }
-+}
-diff --git a/API/Data/ManualMigrations/MigrateRemoveWebPSettingRows.cs b/API/Data/ManualMigrations/MigrateRemoveWebPSettingRows.cs
-new file mode 100644
-index 00000000..07e98ef6
---- /dev/null
-+++ b/API/Data/ManualMigrations/MigrateRemoveWebPSettingRows.cs
-@@ -0,0 +1,31 @@
-+using System.Threading.Tasks;
-+using API.Entities.Enums;
-+using Microsoft.Extensions.Logging;
-+
-+namespace API.Data.ManualMigrations;
-+
-+///
-+/// Added in v0.7.2.7/v0.7.3 in which the ConvertXToWebP Setting keys were removed. This migration will remove them.
-+///
-+public static class MigrateRemoveWebPSettingRows
-+{
-+ public static async Task Migrate(IUnitOfWork unitOfWork, ILogger logger)
-+ {
-+ logger.LogCritical("Running MigrateRemoveWebPSettingRows migration - Please be patient, this may take some time. This is not an error");
-+
-+ var key = await unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.ConvertBookmarkToWebP);
-+ var key2 = await unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.ConvertCoverToWebP);
-+ if (key == null && key2 == null)
-+ {
-+ logger.LogCritical("Running MigrateRemoveWebPSettingRows migration - complete. Nothing to do");
-+ return;
-+ }
-+
-+ unitOfWork.SettingsRepository.Remove(key);
-+ unitOfWork.SettingsRepository.Remove(key2);
-+
-+ await unitOfWork.CommitAsync();
-+
-+ logger.LogCritical("Running MigrateRemoveWebPSettingRows migration - Completed. This is not an error");
-+ }
-+}
-diff --git a/API/Startup.cs b/API/Startup.cs
-index 21c4fa45..04f4a077 100644
---- a/API/Startup.cs
-+++ b/API/Startup.cs
-@@ -232,11 +232,19 @@ public class Startup
- Task.Run(async () =>
- {
- // Apply all migrations on startup
-+ var userManager = serviceProvider.GetRequiredService>();
- var dataContext = serviceProvider.GetRequiredService();
-
-
- logger.LogInformation("Running Migrations");
-
-+ // v0.7.2
-+ await MigrateLoginRoles.Migrate(unitOfWork, userManager, logger);
-+ // v0.7.3
-+ await MigrateRemoveWebPSettingRows.Migrate(unitOfWork, logger);
-+ // v0.7.4
-+ await MigrateDisableScrobblingOnComicLibraries.Migrate(unitOfWork, dataContext, logger);
-+
- // v0.7.9
- await MigrateUserLibrarySideNavStream.Migrate(unitOfWork, dataContext, logger);
-