diff --git a/API.Tests/Services/ReaderServiceTests.cs b/API.Tests/Services/ReaderServiceTests.cs
index 7e66c8a1e..5a7046a7e 100644
--- a/API.Tests/Services/ReaderServiceTests.cs
+++ b/API.Tests/Services/ReaderServiceTests.cs
@@ -381,6 +381,49 @@ public class ReaderServiceTests
Assert.Equal("2", actualChapter.Range);
}
+ [Fact]
+ public async Task GetNextChapterIdAsync_ShouldGetNextVolume_OnlyFloats()
+ {
+ // V1 -> V2
+ await ResetDb();
+
+ var series = new SeriesBuilder("Test")
+ .WithVolume(new VolumeBuilder("1.0")
+ .WithChapter(new ChapterBuilder("1").Build())
+ .Build())
+
+ .WithVolume(new VolumeBuilder("2.1")
+ .WithChapter(new ChapterBuilder("21").Build())
+ .Build())
+
+ .WithVolume(new VolumeBuilder("2.2")
+ .WithChapter(new ChapterBuilder("31").Build())
+ .Build())
+
+ .WithVolume(new VolumeBuilder("3.1")
+ .WithChapter(new ChapterBuilder("31").Build())
+ .Build())
+
+
+ .Build();
+ series.Library = new LibraryBuilder("Test LIb", LibraryType.Manga).Build();
+
+ _context.Series.Add(series);
+
+ _context.AppUser.Add(new AppUser()
+ {
+ UserName = "majora2007"
+ });
+
+ await _context.SaveChangesAsync();
+
+
+
+ var nextChapter = await _readerService.GetNextChapterIdAsync(1, 2, 2, 1);
+ var actualChapter = await _unitOfWork.ChapterRepository.GetChapterAsync(nextChapter);
+ Assert.Equal("31", actualChapter.Range);
+ }
+
[Fact]
public async Task GetNextChapterIdAsync_ShouldRollIntoNextVolume()
{
diff --git a/API/Data/ManualMigrations/MigrateExistingRatings.cs b/API/Data/ManualMigrations/MigrateExistingRatings.cs
new file mode 100644
index 000000000..4314c724b
--- /dev/null
+++ b/API/Data/ManualMigrations/MigrateExistingRatings.cs
@@ -0,0 +1,32 @@
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Logging;
+
+namespace API.Data.ManualMigrations;
+
+///
+/// Introduced in v0.7.5.6 and v0.7.6, Ratings > 0 need to have "HasRatingSet"
+///
+/// Added in v0.7.5.6
+// ReSharper disable once InconsistentNaming
+public static class MigrateExistingRatings
+{
+ public static async Task Migrate(DataContext context, ILogger logger)
+ {
+ logger.LogCritical("Running MigrateExistingRatings migration - Please be patient, this may take some time. This is not an error");
+
+ foreach (var r in context.AppUserRating.Where(r => r.Rating > 0f))
+ {
+ r.HasBeenRated = true;
+ context.Entry(r).State = EntityState.Modified;
+ }
+
+ if (context.ChangeTracker.HasChanges())
+ {
+ await context.SaveChangesAsync();
+ }
+
+ logger.LogCritical("Running MigrateExistingRatings migration - Completed. This is not an error");
+ }
+}
diff --git a/API/Startup.cs b/API/Startup.cs
index 64f2a3f73..ed68f050e 100644
--- a/API/Startup.cs
+++ b/API/Startup.cs
@@ -247,6 +247,9 @@ public class Startup
// v0.7.4
await MigrateDisableScrobblingOnComicLibraries.Migrate(unitOfWork, dataContext, logger);
+ // v0.7.6
+ await MigrateExistingRatings.Migrate(dataContext, logger);
+
// Update the version in the DB after all migrations are run
var installVersion = await unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.InstallVersion);
installVersion.Value = BuildInfo.Version.ToString();
diff --git a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html
index 22e223adc..aa64662ad 100644
--- a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html
+++ b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html
@@ -13,10 +13,10 @@
-
+
@@ -45,10 +45,10 @@
-
-
- (promoted)
-
+
+
+ (promoted)
+
{{item.title}}
diff --git a/openapi.json b/openapi.json
index 52586323c..066e15664 100644
--- a/openapi.json
+++ b/openapi.json
@@ -7,7 +7,7 @@
"name": "GPL-3.0",
"url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE"
},
- "version": "0.7.5.5"
+ "version": "0.7.5.7"
},
"servers": [
{