diff --git a/Shokofin/Configuration/PluginConfiguration.cs b/Shokofin/Configuration/PluginConfiguration.cs
index ddd7ebb3..882321f2 100644
--- a/Shokofin/Configuration/PluginConfiguration.cs
+++ b/Shokofin/Configuration/PluginConfiguration.cs
@@ -276,6 +276,12 @@ public virtual string PrettyUrl
#region Library
+ ///
+ /// Automagically merge alternate versions after a library scan.
+ ///
+ [XmlElement("EXPERIMENTAL_AutoMergeVersions")]
+ public bool AutoMergeVersions { get; set; }
+
///
/// Use Shoko Groups to group Shoko Series together to create the show entries.
///
@@ -438,11 +444,6 @@ public virtual string PrettyUrl
#region Experimental features
- ///
- /// Automagically merge alternate versions after a library scan.
- ///
- public bool EXPERIMENTAL_AutoMergeVersions { get; set; }
-
///
/// Blur the boundaries between AniDB anime further by merging entries which could had just been a single anime entry based on name matching and a configurable merge window.
///
@@ -536,6 +537,7 @@ public PluginConfiguration()
VFS_Threads = 4;
VFS_AddReleaseGroup = false;
VFS_AddResolution = false;
+ AutoMergeVersions = true;
UseGroupsForShows = false;
SeparateMovies = false;
FilterMovieLibraries = true;
@@ -560,7 +562,6 @@ public PluginConfiguration()
SignalR_RefreshEnabled = false;
SignalR_FileEvents = false;
UsageTracker_StalledTimeInSeconds = 10;
- EXPERIMENTAL_AutoMergeVersions = true;
EXPERIMENTAL_MergeSeasons = false;
EXPERIMENTAL_MergeSeasonsTypes = new[] { SeriesType.OVA, SeriesType.TV, SeriesType.TVSpecial, SeriesType.Web, SeriesType.OVA };
EXPERIMENTAL_MergeSeasonsMergeWindowInDays = 185;
diff --git a/Shokofin/Configuration/configController.js b/Shokofin/Configuration/configController.js
index d4dd42b4..45e250e1 100644
--- a/Shokofin/Configuration/configController.js
+++ b/Shokofin/Configuration/configController.js
@@ -306,6 +306,7 @@ async function defaultSubmit(form) {
config.AddTMDBId = form.querySelector("#AddTMDBId").checked;
// Library settings
+ config.AutoMergeVersions = form.querySelector("#AutoMergeVersions").checked;
config.UseGroupsForShows = form.querySelector("#UseGroupsForShows").checked;
config.SeasonOrdering = form.querySelector("#SeasonOrdering").value;
config.CollectionGrouping = form.querySelector("#CollectionGrouping").value;
@@ -360,9 +361,6 @@ async function defaultSubmit(form) {
// Experimental settings
- config.EXPERIMENTAL_AutoMergeVersions = form.querySelector("#EXPERIMENTAL_AutoMergeVersions").checked;
- config.EXPERIMENTAL_SplitThenMergeMovies = form.querySelector("#EXPERIMENTAL_SplitThenMergeMovies").checked;
- config.EXPERIMENTAL_SplitThenMergeEpisodes = form.querySelector("#EXPERIMENTAL_SplitThenMergeEpisodes").checked;
config.EXPERIMENTAL_MergeSeasons = form.querySelector("#EXPERIMENTAL_MergeSeasons").checked;
// User settings
@@ -518,6 +516,7 @@ async function syncSettings(form) {
config.AddTMDBId = form.querySelector("#AddTMDBId").checked;
// Library settings
+ config.AutoMergeVersions = form.querySelector("#AutoMergeVersions").checked;
config.UseGroupsForShows = form.querySelector("#UseGroupsForShows").checked;
config.SeasonOrdering = form.querySelector("#SeasonOrdering").value;
config.SeparateMovies = form.querySelector("#SeparateMovies").checked;
@@ -532,9 +531,6 @@ async function syncSettings(form) {
config.AddMissingMetadata = form.querySelector("#AddMissingMetadata").checked;
// Experimental settings
- config.EXPERIMENTAL_AutoMergeVersions = form.querySelector("#EXPERIMENTAL_AutoMergeVersions").checked;
- config.EXPERIMENTAL_SplitThenMergeMovies = form.querySelector("#EXPERIMENTAL_SplitThenMergeMovies").checked;
- config.EXPERIMENTAL_SplitThenMergeEpisodes = form.querySelector("#EXPERIMENTAL_SplitThenMergeEpisodes").checked;
config.EXPERIMENTAL_MergeSeasons = form.querySelector("#EXPERIMENTAL_MergeSeasons").checked;
const result = await ApiClient.updatePluginConfiguration(PluginConfig.pluginId, config);
@@ -982,6 +978,7 @@ export default function (page) {
form.querySelector("#AddTMDBId").checked = config.AddTMDBId;
// Library settings
+ form.querySelector("#AutoMergeVersions").checked = config.AutoMergeVersions || false;
if (form.querySelector("#UseGroupsForShows").checked = config.UseGroupsForShows) {
form.querySelector("#SeasonOrderingContainer").removeAttribute("hidden");
form.querySelector("#SeasonOrdering").disabled = false;
@@ -1027,10 +1024,6 @@ export default function (page) {
userSelector.innerHTML += users.map((user) => ``).join("");
// Experimental settings
- form.querySelector("#EXPERIMENTAL_AutoMergeVersions").checked = config.EXPERIMENTAL_AutoMergeVersions || false;
- form.querySelector("#EXPERIMENTAL_SplitThenMergeMovies").checked = config.EXPERIMENTAL_SplitThenMergeMovies != null
- ? config.EXPERIMENTAL_SplitThenMergeMovies : true;
- form.querySelector("#EXPERIMENTAL_SplitThenMergeEpisodes").checked = config.EXPERIMENTAL_SplitThenMergeEpisodes || false;
form.querySelector("#EXPERIMENTAL_MergeSeasons").checked = config.EXPERIMENTAL_MergeSeasons || false;
if (!config.ApiKey) {
diff --git a/Shokofin/Configuration/configPage.html b/Shokofin/Configuration/configPage.html
index 933a284e..0bad911c 100644
--- a/Shokofin/Configuration/configPage.html
+++ b/Shokofin/Configuration/configPage.html
@@ -1095,6 +1095,13 @@
Library Settings
+
+
+
Automatically merge multiple versions of the same video together after a library scan or refresh. Only applies to videos with Shoko IDs set.
+