diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor
index eeb6e3b..2820b10 100644
--- a/app/MindWork AI Studio/Components/Pages/Settings.razor
+++ b/app/MindWork AI Studio/Components/Pages/Settings.razor
@@ -20,7 +20,7 @@
Actions
-
+ @context.Num
@context.InstanceName
@context.UsedProvider
@context.Model
diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
index ce824e3..b287877 100644
--- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
+++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
@@ -52,6 +52,8 @@ public partial class Settings : ComponentBase
return;
var addedProvider = (AIStudio.Settings.Provider)dialogResult.Data;
+ addedProvider = addedProvider with { Num = this.SettingsManager.ConfigurationData.NextProviderNum++ };
+
this.SettingsManager.ConfigurationData.Providers.Add(addedProvider);
await this.SettingsManager.StoreSettings();
}
@@ -60,6 +62,7 @@ public partial class Settings : ComponentBase
{
var dialogParameters = new DialogParameters
{
+ { x => x.DataNum, provider.Num },
{ x => x.DataId, provider.Id },
{ x => x.DataInstanceName, provider.InstanceName },
{ x => x.DataProvider, provider.UsedProvider },
@@ -73,6 +76,12 @@ public partial class Settings : ComponentBase
return;
var editedProvider = (AIStudio.Settings.Provider)dialogResult.Data;
+
+ // Set the provider number if it's not set. This is important for providers
+ // added before we started saving the provider number.
+ if(editedProvider.Num == 0)
+ editedProvider = editedProvider with { Num = this.SettingsManager.ConfigurationData.NextProviderNum++ };
+
this.SettingsManager.ConfigurationData.Providers[this.SettingsManager.ConfigurationData.Providers.IndexOf(provider)] = editedProvider;
await this.SettingsManager.StoreSettings();
}
diff --git a/app/MindWork AI Studio/Settings/Data.cs b/app/MindWork AI Studio/Settings/Data.cs
index ff89a31..465ebe6 100644
--- a/app/MindWork AI Studio/Settings/Data.cs
+++ b/app/MindWork AI Studio/Settings/Data.cs
@@ -14,7 +14,12 @@ public sealed class Data
///
/// List of configured providers.
///
- public List Providers { get; init; } = new();
+ public List Providers { get; init; } = [];
+
+ ///
+ /// The next provider number to use.
+ ///
+ public uint NextProviderNum { get; set; } = 1;
///
/// Should we save energy? When true, we will update content streamed
diff --git a/app/MindWork AI Studio/Settings/Provider.cs b/app/MindWork AI Studio/Settings/Provider.cs
index 1c94814..d1f6194 100644
--- a/app/MindWork AI Studio/Settings/Provider.cs
+++ b/app/MindWork AI Studio/Settings/Provider.cs
@@ -5,11 +5,12 @@ namespace AIStudio.Settings;
///
/// Data model for configured providers.
///
+/// The provider's number.
/// The provider's ID.
/// The provider's instance name. Useful for multiple instances of the same provider, e.g., to distinguish between different OpenAI API keys.
/// The provider used.
/// The LLM model to use for chat.
-public readonly record struct Provider(string Id, string InstanceName, Providers UsedProvider, Model Model)
+public readonly record struct Provider(uint Num, string Id, string InstanceName, Providers UsedProvider, Model Model)
{
#region Overrides of ValueType
diff --git a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs
index 6a668ae..1a267ca 100644
--- a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs
+++ b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs
@@ -16,6 +16,12 @@ public partial class ProviderDialog : ComponentBase
{
[CascadingParameter]
private MudDialogInstance MudDialog { get; set; } = null!;
+
+ ///
+ /// The provider's number in the list.
+ ///
+ [Parameter]
+ public uint DataNum { get; set; }
///
/// The provider's ID.
@@ -129,6 +135,7 @@ public partial class ProviderDialog : ComponentBase
// We just return this data to the parent component:
var addedProvider = new Provider
{
+ Num = this.DataNum,
Id = this.DataId,
InstanceName = this.DataInstanceName,
UsedProvider = this.DataProvider,