diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor
index 373ae70e..0b2e5c0e 100644
--- a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor
+++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor
@@ -25,7 +25,7 @@
var availablePreviewFeatures = ConfigurationSelectDataFactory.GetPreviewFeaturesData(this.SettingsManager).ToList();
if (availablePreviewFeatures.Count > 0)
{
-
+
}
}
diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor.cs
index f5290c88..81c2b7e5 100644
--- a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor.cs
+++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor.cs
@@ -27,30 +27,7 @@ public partial class SettingsPanelApp : SettingsPanelBase
private void UpdatePreviewFeatures(PreviewVisibility previewVisibility)
{
this.SettingsManager.ConfigurationData.App.PreviewVisibility = previewVisibility;
- var filtered = previewVisibility.FilterPreviewFeatures(this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures);
- filtered.UnionWith(this.GetManagedPreviewFeatures());
- this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures = filtered;
- }
-
- private HashSet GetManagedPreviewFeatures()
- {
- if (ManagedConfiguration.TryGet(x => x.App, x => x.EnabledPreviewFeatures, out var meta) && meta.HasManagedValue)
- return meta.ManagedValue.Where(x => !x.IsReleased()).ToHashSet();
-
- return [];
- }
-
- private HashSet GetSelectedPreviewFeatures()
- {
- var enabled = this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures.Where(x => !x.IsReleased()).ToHashSet();
- enabled.UnionWith(this.GetManagedPreviewFeatures());
- return enabled;
- }
-
- private void UpdateEnabledPreviewFeatures(HashSet selectedFeatures)
- {
- selectedFeatures.UnionWith(this.GetManagedPreviewFeatures());
- this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures = selectedFeatures;
+ this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures = previewVisibility.FilterPreviewFeatures(this.SettingsManager.ConfigurationData.App.EnabledPreviewFeatures);
}
private async Task UpdateLangBehaviour(LangBehavior behavior)
@@ -64,4 +41,4 @@ public partial class SettingsPanelApp : SettingsPanelBase
this.SettingsManager.ConfigurationData.App.LanguagePluginId = pluginId;
await this.MessageBus.SendMessage(this, Event.PLUGINS_RELOADED);
}
-}
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/ConfigMeta.cs b/app/MindWork AI Studio/Settings/ConfigMeta.cs
index 7789ad86..f8d50ecc 100644
--- a/app/MindWork AI Studio/Settings/ConfigMeta.cs
+++ b/app/MindWork AI Studio/Settings/ConfigMeta.cs
@@ -42,21 +42,6 @@ public record ConfigMeta : ConfigMetaBase
///
public required TValue Default { get; init; }
- ///
- /// Indicates whether a managed value is available.
- ///
- public bool HasManagedValue { get; private set; }
-
- ///
- /// The managed value provided by a configuration plugin.
- ///
- public TValue ManagedValue { get; private set; } = default!;
-
- ///
- /// The ID of the plugin that provided the managed value.
- ///
- public Guid ManagedValueByConfigPluginId { get; private set; }
-
///
/// Locks the configuration state, indicating that it is managed by a specific plugin.
///
@@ -77,35 +62,6 @@ public record ConfigMeta : ConfigMetaBase
this.MangedByConfigPluginId = Guid.Empty;
this.Reset();
}
-
- ///
- /// Unlocks the configuration state without changing the current value.
- ///
- public void UnlockManagedState()
- {
- this.IsLocked = false;
- this.MangedByConfigPluginId = Guid.Empty;
- }
-
- ///
- /// Stores a managed value provided by a configuration plugin.
- ///
- public void SetManagedValue(TValue value, Guid pluginId)
- {
- this.ManagedValue = value;
- this.ManagedValueByConfigPluginId = pluginId;
- this.HasManagedValue = true;
- }
-
- ///
- /// Clears the managed value without changing the current value.
- ///
- public void ClearManagedValue()
- {
- this.ManagedValue = default!;
- this.ManagedValueByConfigPluginId = Guid.Empty;
- this.HasManagedValue = false;
- }
///
/// Resets the configuration property to its default value.
@@ -129,4 +85,4 @@ public record ConfigMeta : ConfigMetaBase
if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo)
propertyInfo.SetValue(configInstance, value);
}
-}
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs b/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs
index c4b58161..99b95203 100644
--- a/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs
+++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs
@@ -581,90 +581,6 @@ public static partial class ManagedConfiguration
return HandleParsedValue(configPluginId, dryRun, successful, configMeta, configuredValue);
}
-
- ///
- /// Attempts to process the configuration settings from a Lua table for enum set types.
- /// The configured values are merged into the existing set and the setting is left unlocked
- /// so users can add additional values.
- ///
- /// The ID of the related configuration plugin.
- /// The Lua table containing the settings to process.
- /// The expression to select the configuration class.
- /// The expression to select the property within the configuration class.
- /// When true, the method will not apply any changes but only check if the configuration can be read.
- /// The type of the configuration class.
- /// The type of the property within the configuration class. It is also the type of the set
- /// elements, which must be an enum.
- /// True when the configuration was successfully processed, otherwise false.
- public static bool TryProcessConfigurationAdditive(
- Expression> configSelection,
- Expression>> propertyExpression,
- Guid configPluginId,
- LuaTable settings,
- bool dryRun)
- where TValue : Enum
- {
- //
- // Handle configured enum sets (additive merge)
- //
-
- // Check if that configuration was registered:
- if (!TryGet(configSelection, propertyExpression, out var configMeta))
- return false;
-
- var successful = false;
- var configuredValue = new HashSet();
-
- // Step 1 -- try to read the Lua value (we expect a table) out of the Lua table:
- if (settings.TryGetValue(SettingsManager.ToSettingName(propertyExpression), out var configuredLuaList) &&
- configuredLuaList.Type is LuaValueType.Table &&
- configuredLuaList.TryRead(out var valueTable))
- {
- // Determine the length of the Lua table and prepare a set to hold the parsed values:
- var len = valueTable.ArrayLength;
- var set = new HashSet(len);
-
- // Iterate over each entry in the Lua table:
- for (var index = 1; index <= len; index++)
- {
- // Retrieve the Lua value at the current index:
- var value = valueTable[index];
-
- // Step 2 -- try to read the Lua value as a string:
- if (value.Type is LuaValueType.String && value.TryRead(out var configuredLuaValueText))
- {
- // Step 3 -- try to parse the string as the target type:
- if (Enum.TryParse(typeof(TValue), configuredLuaValueText, true, out var configuredEnum))
- set.Add((TValue)configuredEnum);
- }
- }
-
- configuredValue = set;
- successful = true;
- }
-
- if (dryRun)
- return successful;
-
- if (successful)
- {
- var configInstance = configSelection.Compile().Invoke(SETTINGS_MANAGER.ConfigurationData);
- var currentValue = propertyExpression.Compile().Invoke(configInstance);
- var merged = new HashSet(currentValue);
- merged.UnionWith(configuredValue);
- configMeta.SetValue(merged);
- configMeta.SetManagedValue(new HashSet(configuredValue), configPluginId);
- }
- else if (configMeta.HasManagedValue && configMeta.ManagedValueByConfigPluginId == configPluginId)
- {
- configMeta.ClearManagedValue();
- }
-
- if (configMeta.IsLocked && configMeta.MangedByConfigPluginId == configPluginId)
- configMeta.UnlockManagedState();
-
- return successful;
- }
///
/// Attempts to process the configuration settings from a Lua table for string set types.
@@ -857,4 +773,4 @@ public static partial class ManagedConfiguration
return successful;
}
-}
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs
index 427ac5a3..5cc7a700 100644
--- a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs
+++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs
@@ -9,7 +9,6 @@ namespace AIStudio.Settings;
public static partial class ManagedConfiguration
{
private static readonly ConcurrentDictionary METADATA = new();
- private static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService();
///
/// Attempts to retrieve the configuration metadata for a given configuration selection and
@@ -354,31 +353,6 @@ public static partial class ManagedConfiguration
return false;
}
- ///
- /// Checks if a managed value is left over from a configuration plugin that is no longer available.
- /// If so, it clears the managed value and returns true.
- ///
- public static bool IsManagedValueLeftOver(
- Expression> configSelection,
- Expression>> propertyExpression,
- IEnumerable availablePlugins)
- {
- if (!TryGet(configSelection, propertyExpression, out var configMeta))
- return false;
-
- if (!configMeta.HasManagedValue || configMeta.ManagedValueByConfigPluginId == Guid.Empty)
- return false;
-
- var plugin = availablePlugins.FirstOrDefault(x => x.Id == configMeta.ManagedValueByConfigPluginId);
- if (plugin is null)
- {
- configMeta.ClearManagedValue();
- return true;
- }
-
- return false;
- }
-
public static bool IsConfigurationLeftOver(
Expression> configSelection,
Expression>> propertyExpression,
@@ -413,4 +387,4 @@ public static partial class ManagedConfiguration
var configPath = $"{configName}.{className}.{propertyName}";
return configPath;
}
-}
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs
index 64bc276e..1f122697 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs
@@ -108,8 +108,8 @@ public sealed class PluginConfiguration(bool isInternal, LuaState state, PluginT
// Config: preview features visibility
ManagedConfiguration.TryProcessConfiguration(x => x.App, x => x.PreviewVisibility, this.Id, settingsTable, dryRun);
- // Config: enabled preview features (additive; users can enable additional features)
- ManagedConfiguration.TryProcessConfigurationAdditive(x => x.App, x => x.EnabledPreviewFeatures, this.Id, settingsTable, dryRun);
+ // Config: enabled preview features
+ ManagedConfiguration.TryProcessConfiguration(x => x.App, x => x.EnabledPreviewFeatures, this.Id, settingsTable, dryRun);
// Config: hide some assistants?
ManagedConfiguration.TryProcessConfiguration(x => x.App, x => x.HiddenAssistants, this.Id, settingsTable, dryRun);
diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs
index 48d65553..bc1a0dcb 100644
--- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs
+++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs
@@ -184,8 +184,6 @@ public static partial class PluginFactory
// Check for enabled preview features:
if(ManagedConfiguration.IsConfigurationLeftOver(x => x.App, x => x.EnabledPreviewFeatures, AVAILABLE_PLUGINS))
wasConfigurationChanged = true;
- if(ManagedConfiguration.IsManagedValueLeftOver(x => x.App, x => x.EnabledPreviewFeatures, AVAILABLE_PLUGINS))
- wasConfigurationChanged = true;
// Check for the transcription provider:
if(ManagedConfiguration.IsConfigurationLeftOver(x => x.App, x => x.UseTranscriptionProvider, AVAILABLE_PLUGINS))