diff --git a/app/MindWork AI Studio/Settings/ConfigMeta.cs b/app/MindWork AI Studio/Settings/ConfigMeta.cs index 46a248b3..71b8b33f 100644 --- a/app/MindWork AI Studio/Settings/ConfigMeta.cs +++ b/app/MindWork AI Studio/Settings/ConfigMeta.cs @@ -151,7 +151,7 @@ public record ConfigMeta : ConfigMetaBase /// private void Reset() { - var configInstance = this.ConfigSelection.Compile().Invoke(SETTINGS_MANAGER.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo) propertyInfo.SetValue(configInstance, this.Default); @@ -163,7 +163,7 @@ public record ConfigMeta : ConfigMetaBase /// The value to set for the configuration property. public void SetValue(TValue value) { - var configInstance = this.ConfigSelection.Compile().Invoke(SETTINGS_MANAGER.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo) propertyInfo.SetValue(configInstance, value); @@ -174,7 +174,7 @@ public record ConfigMeta : ConfigMetaBase /// public TValue GetValue() { - var configInstance = this.ConfigSelection.Compile().Invoke(SETTINGS_MANAGER.ConfigurationData); + var configInstance = this.ConfigSelection.Compile().Invoke(SettingsManager.ConfigurationData); var memberExpression = this.PropertyExpression.GetMemberExpression(); if (memberExpression.Member is System.Reflection.PropertyInfo propertyInfo && propertyInfo.GetValue(configInstance) is TValue value) return value; diff --git a/app/MindWork AI Studio/Settings/ConfigMetaBase.cs b/app/MindWork AI Studio/Settings/ConfigMetaBase.cs index 4ef74e88..bd30e0fa 100644 --- a/app/MindWork AI Studio/Settings/ConfigMetaBase.cs +++ b/app/MindWork AI Studio/Settings/ConfigMetaBase.cs @@ -2,5 +2,5 @@ namespace AIStudio.Settings; public abstract record ConfigMetaBase : IConfig { - protected static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService(); + protected static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); } \ 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 4b453d27..7004e093 100644 --- a/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs +++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.Parsing.cs @@ -654,7 +654,7 @@ public static partial class ManagedConfiguration if (successful) { - var configInstance = configSelection.Compile().Invoke(SETTINGS_MANAGER.ConfigurationData); + var configInstance = configSelection.Compile().Invoke(SettingsManager.ConfigurationData); var currentValue = propertyExpression.Compile().Invoke(configInstance); var merged = new HashSet(currentValue); merged.UnionWith(configuredValue); diff --git a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs index 0e62f2c6..572acf68 100644 --- a/app/MindWork AI Studio/Settings/ManagedConfiguration.cs +++ b/app/MindWork AI Studio/Settings/ManagedConfiguration.cs @@ -9,7 +9,7 @@ namespace AIStudio.Settings; public static partial class ManagedConfiguration { private static readonly ConcurrentDictionary METADATA = new(); - private static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); /// /// Attempts to retrieve the configuration metadata for a given configuration selection and @@ -418,19 +418,19 @@ public static partial class ManagedConfiguration private static bool TryGetEditableDefaultState(string settingName, out ManagedEditableDefaultState editableDefaultState) { - return SETTINGS_MANAGER.ConfigurationData.ManagedEditableDefaults.TryGetValue(settingName, out editableDefaultState!); + return SettingsManager.ConfigurationData.ManagedEditableDefaults.TryGetValue(settingName, out editableDefaultState!); } private static void SetEditableDefaultState(string settingName, Guid pluginId, string lastAppliedValue) { - SETTINGS_MANAGER.ConfigurationData.ManagedEditableDefaults[settingName] = new() + SettingsManager.ConfigurationData.ManagedEditableDefaults[settingName] = new() { ConfigPluginId = pluginId, LastAppliedValue = lastAppliedValue, }; } - private static bool ClearEditableDefaultState(string settingName) => SETTINGS_MANAGER.ConfigurationData.ManagedEditableDefaults.Remove(settingName); + private static bool ClearEditableDefaultState(string settingName) => SettingsManager.ConfigurationData.ManagedEditableDefaults.Remove(settingName); private static bool CleanupEditableDefaultState( ConfigMeta configMeta, diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs index 11116fd9..d5d62e8d 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfiguration.cs @@ -9,7 +9,7 @@ namespace AIStudio.Tools.PluginSystem; public sealed class PluginConfiguration(bool isInternal, LuaState state, PluginType type) : PluginBase(isInternal, state, type) { private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginConfiguration).Namespace, nameof(PluginConfiguration)); - private static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(nameof(PluginConfiguration)); private List configObjects = []; @@ -41,7 +41,7 @@ public sealed class PluginConfiguration(bool isInternal, LuaState state, PluginT await StoreEnterpriseApiKeysAsync(); await StoreEnterpriseSecretsAsync(); - await SETTINGS_MANAGER.StoreSettings(); + await SettingsManager.StoreSettings(); await MessageBus.INSTANCE.SendMessage(null, Event.CONFIGURATION_CHANGED); } } diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs index 934de5dc..4af834cb 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginConfigurationObject.cs @@ -15,7 +15,7 @@ namespace AIStudio.Tools.PluginSystem; public sealed record PluginConfigurationObject { private static readonly RustService RUST_SERVICE = Program.SERVICE_PROVIDER.GetRequiredService(); - private static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(); /// @@ -91,7 +91,8 @@ public sealed record PluginConfigurationObject return false; } - var storedObjects = configObjectSelection.Compile()(SETTINGS_MANAGER.ConfigurationData); + var localSettingsManager = SettingsManager; + var storedObjects = configObjectSelection.Compile()(localSettingsManager.ConfigurationData); var numberObjects = luaTable.ArrayLength; ThreadSafeRandom? random = null; for (var i = 1; i <= numberObjects; i++) @@ -141,7 +142,7 @@ public sealed record PluginConfigurationObject // Case: The object does not exist, we have to add it else { - if (nextConfigObjectNumSelection.TryIncrement(SETTINGS_MANAGER.ConfigurationData, IncrementType.POST) is { Success: true, UpdatedValue: var nextNum }) + if (nextConfigObjectNumSelection.TryIncrement(localSettingsManager.ConfigurationData, IncrementType.POST) is { Success: true, UpdatedValue: var nextNum }) { // Case: Increment the next number was successful configObject = configObject with { Num = nextNum }; @@ -185,7 +186,8 @@ public sealed record PluginConfigurationObject return false; } - var storedObjects = SETTINGS_MANAGER.ConfigurationData.DataSources; + var localSettingsManager = SettingsManager; + var storedObjects = localSettingsManager.ConfigurationData.DataSources; var numberObjects = luaTable.ArrayLength; ThreadSafeRandom? random = null; for (var i = 1; i <= numberObjects; i++) @@ -222,7 +224,7 @@ public sealed record PluginConfigurationObject } else { - if (IncrementDataSourceNum() is { Success: true, UpdatedValue: var nextNum }) + if (IncrementDataSourceNum(localSettingsManager.ConfigurationData) is { Success: true, UpdatedValue: var nextNum }) { configObject = configObject with { Num = nextNum }; storedObjects.Add(configObject); @@ -239,9 +241,9 @@ public sealed record PluginConfigurationObject return true; - static IncrementResult IncrementDataSourceNum() + static IncrementResult IncrementDataSourceNum(Data data) { - return ((Expression>)(x => x.NextDataSourceNum)).TryIncrement(SETTINGS_MANAGER.ConfigurationData, IncrementType.POST); + return ((Expression>)(x => x.NextDataSourceNum)).TryIncrement(data, IncrementType.POST); } } @@ -264,7 +266,8 @@ public sealed record PluginConfigurationObject SecretStoreType? secretStoreType = null, bool deleteSecret = false) where TClass : IConfigurationObject { - var configuredObjects = configObjectSelection.Compile()(SETTINGS_MANAGER.ConfigurationData); + var localSettingsManager = SettingsManager; + var configuredObjects = configObjectSelection.Compile()(localSettingsManager.ConfigurationData); var leftOverObjects = new List(); foreach (var configuredObject in configuredObjects) { diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs index e076a842..87b89ede 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Loading.cs @@ -191,7 +191,7 @@ public static partial class PluginFactory wasConfigurationChanged = true; // Check left-over mandatory info acceptances: - if (SETTINGS_MANAGER.ConfigurationData.MandatoryInformation.RemoveLeftOverAcceptances(GetMandatoryInfos())) + if (SettingsManager.ConfigurationData.MandatoryInformation.RemoveLeftOverAcceptances(GetMandatoryInfos())) wasConfigurationChanged = true; // Check for a preselected provider: @@ -285,7 +285,7 @@ public static partial class PluginFactory if (wasConfigurationChanged) { - await SETTINGS_MANAGER.StoreSettings(); + await SettingsManager.StoreSettings(); await MessageBus.INSTANCE.SendMessage(null, Event.CONFIGURATION_CHANGED); } } diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs index 04bf73e3..d200f08f 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Starting.cs @@ -64,7 +64,7 @@ public static partial class PluginFactory try { - if (availablePlugin.IsInternal || SETTINGS_MANAGER.IsPluginEnabled(availablePlugin) || availablePlugin.Type == PluginType.CONFIGURATION || availablePlugin.Type == PluginType.ASSISTANT) + if (availablePlugin.IsInternal || SettingsManager.IsPluginEnabled(availablePlugin) || availablePlugin.Type == PluginType.CONFIGURATION || availablePlugin.Type == PluginType.ASSISTANT) if(await Start(availablePlugin, cancellationToken) is { IsValid: true } plugin) { if (plugin is PluginConfiguration configPlugin) diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs index a707ab06..8a59e240 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs @@ -6,7 +6,7 @@ namespace AIStudio.Tools.PluginSystem; public static partial class PluginFactory { private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger(nameof(PluginFactory)); - private static readonly SettingsManager SETTINGS_MANAGER = Program.SERVICE_PROVIDER.GetRequiredService(); + private static SettingsManager SettingsManager => Program.SERVICE_PROVIDER.GetRequiredService(); private static string DATA_DIR = string.Empty; private static string PLUGINS_ROOT = string.Empty; diff --git a/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs b/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs index 90203b2b..3da98ff4 100644 --- a/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs +++ b/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs @@ -17,7 +17,6 @@ public sealed class TemporaryChatService(ILogger logger, S logger.LogInformation("The temporary chat maintenance service was initialized."); - await settingsManager.LoadSettings(); if(settingsManager.ConfigurationData.Workspace.StorageTemporaryMaintenancePolicy is WorkspaceStorageTemporaryMaintenancePolicy.NO_AUTOMATIC_MAINTENANCE) { logger.LogWarning("Automatic maintenance of temporary chat storage is disabled. Exiting maintenance service."); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v26.6.1.md b/app/MindWork AI Studio/wwwroot/changelog/v26.6.1.md index de8f89d7..6bbb8f6b 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v26.6.1.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v26.6.1.md @@ -10,7 +10,8 @@ - Improved workspaces by allowing new workspaces to be created while moving a chat. - Improved voice recording shortcut labels so they match the user's keyboard layout after being configured. - Improved the enterprise configuration details on the information page by showing where each configuration comes from and which configuration slot was used. -- Fixed renamed chat templates and profiles continuing to show their old names in the chat toolbar until restarting the app. +- Fixed an issue where newly added profiles and chat templates were not usable until the app was restarted. +- Fixed an issue where renamed chat templates and profiles continued to show their old names in the chat toolbar until the app was restarted. - Fixed workspace creation and renaming to prevent new workspaces from using an existing name. - Fixed an issue on Microsoft Windows where reading attached documents could briefly open a terminal window while processing files. - Upgraded dependencies. \ No newline at end of file