From 739bdb106864d06b987ed0eb96e523adbfcc06bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Thu, 24 Jul 2025 14:04:12 +0200 Subject: [PATCH 01/22] Initial version works, but needs a lot of refinement --- app/MindWork AI Studio/Pages/About.razor | 59 ++++++++++++++++++++- app/MindWork AI Studio/Pages/About.razor.cs | 22 ++++++++ 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 04b43128..fee1a535 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -1,4 +1,6 @@ @attribute [Route(Routes.ABOUT)] +@using AIStudio.Tools.PluginSystem +@using AIStudio.Tools.Services @inherits MSGComponentBase
@@ -23,7 +25,60 @@ - + + @{ + var configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); + var currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; + } + + @if (!currentEnvironment.IsActive && configPlug is null) + { + @T("AI Studio runs without an enterprise configuration.") + } + else if (!currentEnvironment.IsActive) + { + @T("AI Studio runs with an enterprise configuration using the configuration plugin.") + + Plugin ID: @configPlug!.Id + + } + else if (currentEnvironment.IsActive && configPlug is null) + { + @T("AI Studio runs with an enterprise configuration. The configuration plugin is not yet available.") + + Config ID: @currentEnvironment.ConfigurationId + Server URL: @currentEnvironment.ConfigurationServerUrl + + } + else if (currentEnvironment.IsActive) + { + @T("AI Studio runs with an enterprise configuration. The configuration plugin is active.") + +
+ Config ID: @currentEnvironment.ConfigurationId + +
+
+ Server URL: @currentEnvironment.ConfigurationServerUrl + +
+
+ } + + + @(showConfigDetails ? "Hide Details" : "Show Details") + +
@@ -48,7 +103,7 @@
@T("View our project roadmap and help shape AI Studio's future development.") - +
@T("Did you find a bug or are you experiencing issues? Report your concern here.") diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index 8c4fe923..38526e8f 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -120,6 +120,28 @@ private async Task ShowPandocDialog() await this.DeterminePandocVersion(); } + private bool showConfigDetails = false; + + private void ToggleConfigDetails() + { + this.showConfigDetails = !this.showConfigDetails; + } + + [Inject] private IJSRuntime JSRuntime { get; set; } = default!; + + private async Task CopyToClipboard(string text) + { + try + { + await this.JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", text); + this.Snackbar.Add("Copied to clipboard!", Severity.Success); + } + catch (Exception) + { + this.Snackbar.Add("Failed to copy to clipboard", Severity.Error); + } + } + private string GetEnterpriseEnvironment() { var configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); From 7f367d83aa782a3761f5deffdb59f88293edc967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:10:11 +0200 Subject: [PATCH 02/22] Created custom CopyToClipboard button and made refinements --- .../Components/MudCopyClipboardButton.razor | 5 + .../MudCopyClipboardButton.razor.cs | 42 +++++++++ app/MindWork AI Studio/Pages/About.razor | 93 +++++++++---------- app/MindWork AI Studio/Pages/About.razor.cs | 50 +++------- 4 files changed, 100 insertions(+), 90 deletions(-) create mode 100644 app/MindWork AI Studio/Components/MudCopyClipboardButton.razor create mode 100644 app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor new file mode 100644 index 00000000..6f12d927 --- /dev/null +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs new file mode 100644 index 00000000..91a3bc0b --- /dev/null +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -0,0 +1,42 @@ +using AIStudio.Pages; +using AIStudio.Tools.PluginSystem; +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Components; + +public partial class MudCopyClipboardButton : ComponentBase +{ + private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(About).Namespace, nameof(About)); + + /// + /// The string that will be copied when the button is clicked. + /// + [Parameter] + public required string CopyableContent { get; set; } + + /// + /// The tooltip that should be shown to the user. + /// + [Parameter] + public string ToolTipMessage { get; set; } = TB("Copies the content to the clipboard"); + + [Inject] + private IJSRuntime JsRuntime { get; set; } = null!; + + [Inject] + private ISnackbar Snackbar { get; init; } = null!; + + private async Task CopyToClipboard(string text) + { + try + { + await this.JsRuntime.InvokeVoidAsync("navigator.clipboard.writeText", text); + this.Snackbar.Add(TB("Successfully copied the content to your clipboard"), Severity.Success); + } + catch (Exception) + { + this.Snackbar.Add(TB("Failed to copy the content to your clipboard"), Severity.Error); + } + } + +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index fee1a535..97ec88f4 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -1,6 +1,4 @@ @attribute [Route(Routes.ABOUT)] -@using AIStudio.Tools.PluginSystem -@using AIStudio.Tools.Services @inherits MSGComponentBase
@@ -26,57 +24,50 @@ - @{ - var configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); - var currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; - } - - @if (!currentEnvironment.IsActive && configPlug is null) - { - @T("AI Studio runs without an enterprise configuration.") - } - else if (!currentEnvironment.IsActive) - { - @T("AI Studio runs with an enterprise configuration using the configuration plugin.") - - Plugin ID: @configPlug!.Id - - } - else if (currentEnvironment.IsActive && configPlug is null) - { - @T("AI Studio runs with an enterprise configuration. The configuration plugin is not yet available.") - - Config ID: @currentEnvironment.ConfigurationId - Server URL: @currentEnvironment.ConfigurationServerUrl - - } - else if (currentEnvironment.IsActive) + @switch (currentEnvironment.IsActive) { - @T("AI Studio runs with an enterprise configuration. The configuration plugin is active.") - -
- Config ID: @currentEnvironment.ConfigurationId - -
-
- Server URL: @currentEnvironment.ConfigurationServerUrl - -
-
+ case false when configPlug is null: + @T("AI Studio runs without an enterprise configuration.") + break; + case false: + @T("AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management.") + + @T("Configuration Plugin ID:") @configPlug!.Id + + + + break; + case true when configPlug is null: + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") + + @T("Configuration Plugin ID:") @currentEnvironment.ConfigurationId + + + + @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl + + + + break; + case true: + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") + + @T("Configuration Plugin ID:") @currentEnvironment.ConfigurationId + + + + @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl + + + + break; } - - - @(showConfigDetails ? "Hide Details" : "Show Details") + + + @(showConfigDetails ? @T("Hide Details") : @T("Show Details"))
diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index 38526e8f..0d48690f 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -58,6 +58,12 @@ public partial class About : MSGComponentBase private GetLogPathsResponse logPaths; + private bool showConfigDetails = false; + + private IPluginMetadata? configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); + + private EnterpriseEnvironment currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; + #region Overrides of ComponentBase protected override async Task OnInitializedAsync() @@ -119,49 +125,15 @@ private async Task ShowPandocDialog() await dialogReference.Result; await this.DeterminePandocVersion(); } - - private bool showConfigDetails = false; - private void ToggleConfigDetails() + private void ToggleEnterpriseConfigDetails() { + // can configPlug and currentEnvironment change? + this.configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); + this.currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; + this.showConfigDetails = !this.showConfigDetails; } - - [Inject] private IJSRuntime JSRuntime { get; set; } = default!; - - private async Task CopyToClipboard(string text) - { - try - { - await this.JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", text); - this.Snackbar.Add("Copied to clipboard!", Severity.Success); - } - catch (Exception) - { - this.Snackbar.Add("Failed to copy to clipboard", Severity.Error); - } - } - - private string GetEnterpriseEnvironment() - { - var configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); - var currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; - - switch (currentEnvironment) - { - case { IsActive: false } when configPlug is null: - return T("AI Studio runs without an enterprise configuration."); - - case { IsActive: false }: - return string.Format(T("AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management."), configPlug.Id); - - case { IsActive: true } when configPlug is null: - return string.Format(T("AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available."), currentEnvironment.ConfigurationId, currentEnvironment.ConfigurationServerUrl); - - case { IsActive: true }: - return string.Format(T("AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active."), currentEnvironment.ConfigurationId, currentEnvironment.ConfigurationServerUrl); - } - } private async Task CopyStartupLogPath() { From 05696a559f6a95668b818f9d9aeaf38e2a472e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:14:46 +0200 Subject: [PATCH 03/22] Added translations --- .../Assistants/I18N/allTexts.lua | 43 +++++++++++++++---- .../plugin.lua | 43 +++++++++++++++---- .../plugin.lua | 43 +++++++++++++++---- 3 files changed, 105 insertions(+), 24 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 83ed2620..91c74a78 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1588,6 +1588,15 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T372007989"] = "Relying on we -- Cross-Platform and Modern Development UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platform and Modern Development" +-- Copies the content to the clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" + +-- Successfully copied the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Successfully copied the content to your clipboard" + +-- Failed to copy the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Failed to copy the content to your clipboard" + -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." @@ -4183,8 +4192,8 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "About MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Browse AI Studio's source code on GitHub — we welcome your contributions." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1297057566"] = "AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available." -- This library is used to read PDF files. This is necessary, e.g., for using PDFs as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "This library is used to read PDF files. This is necessary, e.g., for using PDFs as a data source for a chat." @@ -4192,12 +4201,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "This library is used t -- This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1421513382"] = "This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1454889560"] = "AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active." - --- AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1530477579"] = "AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management." - -- We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T162898512"] = "We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library." @@ -4207,6 +4210,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Building on .NET, ASP. -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files." +-- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management." + -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant." @@ -4231,6 +4237,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1924365263"] = "This library is used t -- We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1943216839"] = "We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust." +-- Copies the server URL to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2037899437"] = "Copies the server URL to the clipboard" + -- This library is used to determine the file type of a file. This is necessary, e.g., when we want to stream a file. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "This library is used to determine the file type of a file. This is necessary, e.g., when we want to stream a file." @@ -4285,6 +4294,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2765814390"] = "Determine Pandoc versi -- Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2777988282"] = "Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor." +-- Show Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T27924674"] = "Show Details" + -- View our project roadmap and help shape AI Studio's future development. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2829971158"] = "View our project roadmap and help shape AI Studio's future development." @@ -4306,6 +4318,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Connect AI Studio to yo -- Have feature ideas? Submit suggestions for future AI Studio enhancements. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3178730036"] = "Have feature ideas? Submit suggestions for future AI Studio enhancements." +-- Hide Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3183837919"] = "Hide Details" + -- Update Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3249965383"] = "Update Pandoc" @@ -4330,6 +4345,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3563271893"] = "Motivation" -- This library is used to read Excel and OpenDocument spreadsheet files. This is necessary, e.g., for using spreadsheets as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3722989559"] = "This library is used to read Excel and OpenDocument spreadsheet files. This is necessary, e.g., for using spreadsheets as a data source for a chat." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3741877842"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active." + -- this version does not met the requirements UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3813932670"] = "this version does not met the requirements" @@ -4360,6 +4378,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "We use the HtmlAgility -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project." +-- Configuration Server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Configuration Server:" + -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow." @@ -4372,6 +4393,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T639371534"] = "Did you find a bug or a -- This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T64689067"] = "This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible." +-- Copies the config ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T788846912"] = "Copies the config ID to the clipboard" + -- installed by AI Studio UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T833849470"] = "installed by AI Studio" @@ -4381,6 +4405,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "We use this library to -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose." +-- Configuration Plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Configuration Plugin ID:" + -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Install Pandoc" diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua index 13dc2f12..2526bfae 100644 --- a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -1590,6 +1590,15 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T372007989"] = "Sich auf Webd -- Cross-Platform and Modern Development UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Plattformübergreifende und moderne Entwicklung" +-- Copies the content to the clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Kopiert den Inhalt in die Zwischenablage" + +-- Successfully copied the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Inhalt erfolgreich in die Zwischenablage kopiert" + +-- Failed to copy the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Der Inhalt konnte nicht in die Zwischenablage kopiert werden" + -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha-Phase bedeutet, dass wir an den letzten Details arbeiten, bevor die Beta-Phase beginnt." @@ -4185,8 +4194,8 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "Über MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Sehen Sie sich den Quellcode von AI Studio auf GitHub an – wir freuen uns über ihre Beiträge." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1297057566"] = "AI Studio läuft mit der Konfigurations-ID '{0}' ihrer Organisation und dem Konfigurationsserver '{1}'. Das Konfigurations-Plugin ist noch nicht verfügbar." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio läuft mit einer Unternehmenskonfiguration und einem Konfigurationsserver. Das Konfigurations-Plugin ist noch nicht verfügbar." -- This library is used to read PDF files. This is necessary, e.g., for using PDFs as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "Diese Bibliothek wird verwendet, um PDF-Dateien zu lesen. Das ist zum Beispiel notwendig, um PDFs als Datenquelle für einen Chat zu nutzen." @@ -4194,12 +4203,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "Diese Bibliothek wird -- This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1421513382"] = "Diese Bibliothek wird verwendet, um die MudBlazor-Bibliothek zu erweitern. Sie stellt zusätzliche Komponenten bereit, die nicht Teil der MudBlazor-Bibliothek sind." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1454889560"] = "AI Studio läuft mit der Konfigurations-ID '{0}' ihrer Organisation und dem Konfigurationsserver '{1}'. Das Konfigurations-Plugin ist aktiv." - --- AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1530477579"] = "AI Studio läuft mit einer Unternehmenseinstellung und verwendet das Konfigurations-Plugin '{0}', jedoch ohne zentrale Konfigurationsverwaltung." - -- We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T162898512"] = "Wir verwenden Lua als Sprache für Plugins. Lua-CSharp ermöglicht die Kommunikation zwischen Lua-Skripten und AI Studio in beide Richtungen. Vielen Dank an Yusuke Nakada für diese großartige Bibliothek." @@ -4209,6 +4212,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Basierend auf .NET, AS -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio erstellt beim Start eine Protokolldatei, in der Ereignisse während des Starts aufgezeichnet werden. Nach dem Start wird eine weitere Protokolldatei erstellt, die alle Ereignisse während der Nutzung der App dokumentiert. Dazu gehören auch eventuell auftretende Fehler. Je nachdem, wann ein Fehler auftritt (beim Start oder während der Nutzung), können die Inhalte dieser Protokolldateien bei der Fehlerbehebung hilfreich sein. Sensible Informationen wie Passwörter werden nicht in den Protokolldateien gespeichert." +-- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio läuft mit einer Unternehmenskonfiguration über das Konfigurations-Plugin, ohne zentrale Konfigurationsverwaltung." + -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "Diese Bibliothek wird verwendet, um die Unterschiede zwischen zwei Texten anzuzeigen. Das ist zum Beispiel für den Grammatik- und Rechtschreibassistenten notwendig." @@ -4233,6 +4239,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1924365263"] = "Diese Bibliothek wird -- We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1943216839"] = "Wir verwenden Rocket zur Implementierung der Runtime-API. Dies ist notwendig, da die Runtime mit der Benutzeroberfläche (IPC) kommunizieren muss. Rocket ist ein ausgezeichnetes Framework zur Umsetzung von Web-APIs in Rust." +-- Copies the server URL to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2037899437"] = "Kopiert die Server-URL in die Zwischenablage" + -- This library is used to determine the file type of a file. This is necessary, e.g., when we want to stream a file. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "Diese Bibliothek wird verwendet, um den Dateityp einer Datei zu bestimmen. Das ist zum Beispiel notwendig, wenn wir eine Datei streamen möchten." @@ -4287,6 +4296,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2765814390"] = "Pandoc-Version wird er -- Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2777988282"] = "Code in der Programmiersprache Rust kann als synchron oder asynchron spezifiziert werden. Im Gegensatz zu .NET und der Sprache C# kann Rust asynchronen Code jedoch nicht von selbst ausführen. Dafür benötigt Rust Unterstützung in Form eines Executors. Tokio ist ein solcher Executor." +-- Show Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T27924674"] = "Details anzeigen" + -- View our project roadmap and help shape AI Studio's future development. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2829971158"] = "Sehen Sie sich unsere Roadmap an und helfen Sie mit, die zukünftige Entwicklung von AI Studio mitzugestalten." @@ -4308,6 +4320,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Verbinden Sie AI Studio -- Have feature ideas? Submit suggestions for future AI Studio enhancements. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3178730036"] = "Haben Sie Ideen für neue Funktionen? Senden Sie uns Vorschläge für zukünftige Verbesserungen von AI Studio." +-- Hide Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3183837919"] = "Details ausblenden" + -- Update Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3249965383"] = "Pandoc aktualisieren" @@ -4332,6 +4347,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3563271893"] = "Motivation" -- This library is used to read Excel and OpenDocument spreadsheet files. This is necessary, e.g., for using spreadsheets as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3722989559"] = "Diese Bibliothek wird verwendet, um Excel- und OpenDocument-Tabellendateien zu lesen. Dies ist zum Beispiel notwendig, wenn Tabellen als Datenquelle für einen Chat verwendet werden sollen." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3741877842"] = "AI Studio läuft mit einer Unternehmenskonfiguration und einem Konfigurationsserver. Das Konfigurations-Plugin ist aktiv." + -- this version does not met the requirements UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3813932670"] = "diese Version erfüllt die Anforderungen nicht" @@ -4362,6 +4380,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "Wir verwenden das Html -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "Beim Übertragen sensibler Daten zwischen der Rust-Laufzeitumgebung und der .NET-Anwendung verschlüsseln wir die Daten. Dafür verwenden wir einige Bibliotheken aus dem Rust Crypto-Projekt: cipher, aes, cbc, pbkdf2, hmac und sha2. Wir sind dankbar für die großartige Arbeit des Rust Crypto-Projekts." +-- Configuration Server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Konfigurationsserver:" + -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "Dies ist eine Bibliothek, die die Grundlagen für asynchrones Programmieren in Rust bereitstellt. Sie enthält zentrale Trait-Definitionen wie Stream sowie Hilfsfunktionen wie join!, select! und verschiedene Methoden zur Kombination von Futures, die einen ausdrucksstarken asynchronen Kontrollfluss ermöglichen." @@ -4374,6 +4395,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T639371534"] = "Haben Sie einen Fehler -- This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T64689067"] = "Diese Rust-Bibliothek wird verwendet, um die Nachrichten der App im Terminal auszugeben. Das ist während der Entwicklung und Fehlersuche hilfreich. Diese Funktion ist zunächst unsichtbar; werden App über das Terminal gestartet, werden die Nachrichten sichtbar." +-- Copies the config ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T788846912"] = "Kopiert die Konfigurations-ID in die Zwischenablage" + -- installed by AI Studio UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T833849470"] = "installiert von AI Studio" @@ -4383,6 +4407,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "Wir verwenden diese Bib -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "Für einige Datenübertragungen müssen wir die Daten in Base64 kodieren. Diese Rust-Bibliothek eignet sich dafür hervorragend." +-- Configuration Plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Konfiguration Plugin-ID:" + -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Pandoc installieren" diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index 99371d03..5d66b3a5 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -1590,6 +1590,15 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T372007989"] = "Relying on we -- Cross-Platform and Modern Development UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platform and Modern Development" +-- Copies the content to the clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" + +-- Successfully copied the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Successfully copied the content to your clipboard" + +-- Failed to copy the content to your clipboard +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Failed to copy the content to your clipboard" + -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." @@ -4185,8 +4194,8 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "About MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Browse AI Studio's source code on GitHub — we welcome your contributions." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1297057566"] = "AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is not yet available." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available." -- This library is used to read PDF files. This is necessary, e.g., for using PDFs as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "This library is used to read PDF files. This is necessary, e.g., for using PDFs as a data source for a chat." @@ -4194,12 +4203,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1388816916"] = "This library is used t -- This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1421513382"] = "This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library." --- AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1454889560"] = "AI Studio runs with an enterprise configuration id '{0}' and configuration server URL '{1}'. The configuration plugin is active." - --- AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1530477579"] = "AI Studio runs with an enterprise configuration using the configuration plugin '{0}', without central configuration management." - -- We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T162898512"] = "We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library." @@ -4209,6 +4212,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Building on .NET, ASP. -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files." +-- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management." + -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant." @@ -4233,6 +4239,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1924365263"] = "This library is used t -- We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1943216839"] = "We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust." +-- Copies the server URL to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2037899437"] = "Copies the server URL to the clipboard" + -- This library is used to determine the file type of a file. This is necessary, e.g., when we want to stream a file. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "This library is used to determine the file type of a file. This is necessary, e.g., when we want to stream a file." @@ -4287,6 +4296,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2765814390"] = "Determine Pandoc versi -- Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2777988282"] = "Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor." +-- Show Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T27924674"] = "Show Details" + -- View our project roadmap and help shape AI Studio's future development. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2829971158"] = "View our project roadmap and help shape AI Studio's future development." @@ -4308,6 +4320,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Connect AI Studio to yo -- Have feature ideas? Submit suggestions for future AI Studio enhancements. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3178730036"] = "Have feature ideas? Submit suggestions for future AI Studio enhancements." +-- Hide Details +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3183837919"] = "Hide Details" + -- Update Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3249965383"] = "Update Pandoc" @@ -4332,6 +4347,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3563271893"] = "Motivation" -- This library is used to read Excel and OpenDocument spreadsheet files. This is necessary, e.g., for using spreadsheets as a data source for a chat. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3722989559"] = "This library is used to read Excel and OpenDocument spreadsheet files. This is necessary, e.g., for using spreadsheets as a data source for a chat." +-- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3741877842"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active." + -- this version does not met the requirements UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3813932670"] = "this version does not met the requirements" @@ -4362,6 +4380,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "We use the HtmlAgility -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project." +-- Configuration Server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Configuration Server:" + -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow." @@ -4374,6 +4395,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T639371534"] = "Did you find a bug or a -- This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T64689067"] = "This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible." +-- Copies the config ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T788846912"] = "Copies the config ID to the clipboard" + -- installed by AI Studio UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T833849470"] = "installed by AI Studio" @@ -4383,6 +4407,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "We use this library to -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose." +-- Configuration Plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Configuration Plugin ID:" + -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Install Pandoc" From c43abaa7354bc04d998f0edbf960317f6297616e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:24:27 +0200 Subject: [PATCH 04/22] Minor text changes --- app/MindWork AI Studio/Pages/About.razor | 4 ++-- .../de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua | 3 +++ .../en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 97ec88f4..090c285e 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -40,7 +40,7 @@ case true when configPlug is null: @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") - @T("Configuration Plugin ID:") @currentEnvironment.ConfigurationId + @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId @@ -52,7 +52,7 @@ case true: @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") - @T("Configuration Plugin ID:") @currentEnvironment.ConfigurationId + @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua index 2526bfae..8669eb8b 100644 --- a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -4338,6 +4338,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "Die folgende Liste zei -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Verwendeter Rust-Compiler" +-- Enterprise Configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise-Konfigurations-ID:" + -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri wird verwendet, um die Blazor-Benutzeroberfläche bereitzustellen. Es ist ein großartiges Projekt, das die Erstellung von Desktop-Anwendungen mit Webtechnologien ermöglicht. Ich liebe Tauri!" diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index 5d66b3a5..ceddaadc 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -4338,6 +4338,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "The following list sho -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Used Rust compiler" +-- Enterprise Configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise Configuration ID:" + -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!" From 609be6ad5d92121d13c397a0244f6068c7f5a1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Thu, 24 Jul 2025 15:25:18 +0200 Subject: [PATCH 05/22] Minor change --- app/MindWork AI Studio/Assistants/I18N/allTexts.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 91c74a78..3dccf55f 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -4336,6 +4336,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "The following list sho -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Used Rust compiler" +-- Enterprise Configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise Configuration ID:" + -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!" From 87bc18b8f97215eeef82979d209041d2ee6ba479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Fri, 25 Jul 2025 10:58:23 +0200 Subject: [PATCH 06/22] Unified the copy to clipboard functionality --- .../Assistants/I18N/allTexts.lua | 13 +--- .../Chat/ContentBlockComponent.razor | 7 +- .../Chat/ContentBlockComponent.razor.cs | 30 -------- .../Components/MudCopyClipboardButton.razor | 5 +- .../MudCopyClipboardButton.razor.cs | 70 +++++++++++++++---- app/MindWork AI Studio/Pages/About.razor | 10 +-- 6 files changed, 71 insertions(+), 64 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 3dccf55f..56dd964c 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1315,9 +1315,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "AI" -- Edit Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message" --- Copies the content to the clipboard -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T12948066"] = "Copies the content to the clipboard" - -- Do you really want to remove this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1347427447"] = "Do you really want to remove this message?" @@ -1351,9 +1348,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3587744975"] = "Regener -- Do you really want to regenerate this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3878878761"] = "Do you really want to regenerate this message?" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4021525742"] = "Cannot copy this content type to clipboard!" - -- Remove Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4070211974"] = "Remove Message" @@ -1591,11 +1585,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platfor -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" --- Successfully copied the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Successfully copied the content to your clipboard" - --- Failed to copy the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Failed to copy the content to your clipboard" +-- Cannot copy this content type to clipboard! +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Cannot copy this content type to clipboard!" -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor index 9f3da228..43e6d566 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor @@ -1,5 +1,7 @@ +@using System.Runtime.CompilerServices @using AIStudio.Tools @using MudBlazor +@using AIStudio.Components @inherits AIStudio.Components.MSGComponentBase @@ -38,9 +40,8 @@ } - - - + + diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs index 47adb668..1f5c86b7 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Components; -using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; @@ -61,12 +60,6 @@ public partial class ContentBlockComponent : MSGComponentBase [Parameter] public Func RegenerateEnabled { get; set; } = () => false; - [Inject] - private RustService RustService { get; init; } = null!; - - [Inject] - private ISnackbar Snackbar { get; init; } = null!; - [Inject] private IDialogService DialogService { get; init; } = null!; @@ -115,29 +108,6 @@ await this.InvokeAsync(async () => } #endregion - - /// - /// Copy this block's content to the clipboard. - /// - private async Task CopyToClipboard() - { - switch (this.Type) - { - case ContentType.TEXT: - var textContent = (ContentText) this.Content; - await this.RustService.CopyText2Clipboard(this.Snackbar, textContent.Text); - break; - - default: - this.Snackbar.Add(T("Cannot copy this content type to clipboard!"), Severity.Error, config => - { - config.Icon = Icons.Material.Filled.ContentCopy; - config.IconSize = Size.Large; - config.IconColor = Color.Error; - }); - break; - } - } private string CardClasses => $"my-2 rounded-lg {this.Class}"; diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor index 6f12d927..0cb6f053 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor @@ -1,5 +1,6 @@ - +@using AIStudio.Chat + + OnClick="@(() => HandleCopyClick())"/> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index 91a3bc0b..e2453a1d 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -1,5 +1,7 @@ -using AIStudio.Pages; +using AIStudio.Chat; +using AIStudio.Pages; using AIStudio.Tools.PluginSystem; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; namespace AIStudio.Components; @@ -7,12 +9,24 @@ namespace AIStudio.Components; public partial class MudCopyClipboardButton : ComponentBase { private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(About).Namespace, nameof(About)); + + /// + /// The string, if you want to copy a string. + /// + [Parameter] + public string StringContent { get; set; } = string.Empty; /// - /// The string that will be copied when the button is clicked. + /// The content, if you want to copy content. /// [Parameter] - public required string CopyableContent { get; set; } + public IContent? Content { get; init; } + + /// + /// The content type, if you want to copy Content. + /// + [Parameter] + public ContentType Type { get; init; } = ContentType.NONE; /// /// The tooltip that should be shown to the user. @@ -20,22 +34,52 @@ public partial class MudCopyClipboardButton : ComponentBase [Parameter] public string ToolTipMessage { get; set; } = TB("Copies the content to the clipboard"); - [Inject] - private IJSRuntime JsRuntime { get; set; } = null!; - [Inject] private ISnackbar Snackbar { get; init; } = null!; - - private async Task CopyToClipboard(string text) + + [Inject] + private RustService RustService { get; init; } = null!; + + private async Task HandleCopyClick() { - try + if (this.Type == ContentType.NONE) { - await this.JsRuntime.InvokeVoidAsync("navigator.clipboard.writeText", text); - this.Snackbar.Add(TB("Successfully copied the content to your clipboard"), Severity.Success); + await this.CopyToClipboard(this.StringContent); } - catch (Exception) + else + { + await this.CopyToClipboard(this.Content!); + } + } + + /// + /// Copy this the string to the clipboard. + /// + private async Task CopyToClipboard(string textContent) + { + await this.RustService.CopyText2Clipboard(this.Snackbar, textContent); + } + + /// + /// Copy this block's content to the clipboard. + /// + private async Task CopyToClipboard(IContent contentToCopy) + { + switch (this.Type) { - this.Snackbar.Add(TB("Failed to copy the content to your clipboard"), Severity.Error); + case ContentType.TEXT: + var textContent = (ContentText) contentToCopy; + await this.RustService.CopyText2Clipboard(this.Snackbar, textContent.Text); + break; + + default: + this.Snackbar.Add(TB("Cannot copy this content type to clipboard!"), Severity.Error, config => + { + config.Icon = Icons.Material.Filled.ContentCopy; + config.IconSize = Size.Large; + config.IconColor = Color.Error; + }); + break; } } diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 090c285e..2ede473a 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -33,7 +33,7 @@ @T("AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management.") @T("Configuration Plugin ID:") @configPlug!.Id - + break; @@ -41,11 +41,11 @@ @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId - + @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl - + break; @@ -53,11 +53,11 @@ @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId - + @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl - + break; From c9dd01a1ec9f13c37105a6812136b90d7db53394 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 20:39:20 +0200 Subject: [PATCH 07/22] Refactored about page to consistently use `this` for member references & applied formatting --- app/MindWork AI Studio/Pages/About.razor | 69 ++++++++++++++---------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 2ede473a..e4c3a347 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -14,60 +14,75 @@ - - - - - + + + + + - @switch (currentEnvironment.IsActive) + @switch (this.currentEnvironment.IsActive) { - case false when configPlug is null: - @T("AI Studio runs without an enterprise configuration.") + case false when this.configPlug is null: + + @T("AI Studio runs without an enterprise configuration.") + break; + case false: - @T("AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management.") - - @T("Configuration Plugin ID:") @configPlug!.Id - + + @T("AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management.") + + + + @T("Configuration Plugin ID:") @this.configPlug!.Id + break; - case true when configPlug is null: - @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") - - @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId - + + case true when this.configPlug is null: + + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") + + + + @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId + - @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl - + + @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl + break; + case true: - @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") - - @T("Enterprise Configuration ID:") @currentEnvironment.ConfigurationId - + + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") + + + @T("Enterprise Configuration ID:") @this.currentEnvironment.ConfigurationId + - @T("Configuration Server:") @currentEnvironment.ConfigurationServerUrl - + + @T("Configuration Server:") @this.currentEnvironment.ConfigurationServerUrl + break; } - - @(showConfigDetails ? @T("Hide Details") : @T("Show Details")) + @(this.showConfigDetails ? T("Hide Details") : T("Show Details")) From 0e9b9770b3905e8efa0a20d0ba298d4c5f3db904 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:22:43 +0200 Subject: [PATCH 08/22] Improved formatting --- .../Components/MudCopyClipboardButton.razor | 7 ++----- .../Components/MudCopyClipboardButton.razor.cs | 6 +----- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor index 0cb6f053..7a87336f 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor @@ -1,6 +1,3 @@ -@using AIStudio.Chat - - + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index e2453a1d..df6ddd1d 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -32,7 +32,7 @@ public partial class MudCopyClipboardButton : ComponentBase /// The tooltip that should be shown to the user. /// [Parameter] - public string ToolTipMessage { get; set; } = TB("Copies the content to the clipboard"); + public string TooltipMessage { get; set; } = TB("Copies the content to the clipboard"); [Inject] private ISnackbar Snackbar { get; init; } = null!; @@ -43,13 +43,9 @@ public partial class MudCopyClipboardButton : ComponentBase private async Task HandleCopyClick() { if (this.Type == ContentType.NONE) - { await this.CopyToClipboard(this.StringContent); - } else - { await this.CopyToClipboard(this.Content!); - } } /// From 10cea3d1bd1f6e2a1e798305cb5434a4b08fe400 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:23:45 +0200 Subject: [PATCH 09/22] Enhanced About page layout and formatting for improved consistency and readability --- app/MindWork AI Studio/Pages/About.razor | 64 +++++++++++++++--------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index e4c3a347..337f70a2 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -27,52 +27,68 @@ @switch (this.currentEnvironment.IsActive) { case false when this.configPlug is null: - + @T("AI Studio runs without an enterprise configuration.") break; case false: - - @T("AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management.") + + @T("AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management.") - - - @T("Configuration Plugin ID:") @this.configPlug!.Id - + + +
+ + @T("Configuration plugin ID:") @this.configPlug!.Id + +
break; case true when this.configPlug is null: - + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") - - - @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId - + + +
+ + @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId + +
- - - @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl - + + +
+ + @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl + +
break; case true: - + @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") - - @T("Enterprise Configuration ID:") @this.currentEnvironment.ConfigurationId - + + +
+ + @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId + +
- - - @T("Configuration Server:") @this.currentEnvironment.ConfigurationServerUrl - + + +
+ + @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl + +
break; From 98e2796604e531e9f917b9918ecae0047ad60cac Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:24:18 +0200 Subject: [PATCH 10/22] Added configuration plugin ID to the full enterprise config case --- app/MindWork AI Studio/Pages/About.razor | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 337f70a2..75e2bd8b 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -90,6 +90,14 @@
+ + +
+ + @T("Configuration plugin ID:") @this.configPlug!.Id + +
+
break; } From 2f47cc69a7881793b68a5cbbe13a7ea280b8e2cb Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:25:37 +0200 Subject: [PATCH 11/22] Conditionally render enterprise configuration details button in the about page --- app/MindWork AI Studio/Pages/About.razor | 15 ++++++++----- app/MindWork AI Studio/Pages/About.razor.cs | 25 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 75e2bd8b..ff904daa 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -102,12 +102,15 @@ break; } - - @(this.showConfigDetails ? T("Hide Details") : T("Show Details")) - + @if (this.HasEnterpriseConfigurationDetails) + { + + @(this.showEnterpriseConfigDetails ? T("Hide Details") : T("Show Details")) + + }
diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index 0d48690f..c0119e1a 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -63,6 +63,31 @@ public partial class About : MSGComponentBase private IPluginMetadata? configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); private EnterpriseEnvironment currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; + + /// + /// Determines whether the enterprise configuration has details that can be shown/hidden. + /// Returns true if there are details available, false otherwise. + /// + private bool HasEnterpriseConfigurationDetails + { + get + { + return this.currentEnvironment.IsActive switch + { + // Case 1: No enterprise config and no plugin - no details available + false when this.configPlug is null => false, + + // Case 2: Enterprise config with plugin but no central management - has details + false => true, + + // Case 3: Enterprise config active but no plugin - has details + true when this.configPlug is null => true, + + // Case 4: Enterprise config active with plugin - has details + true => true + }; + } + } #region Overrides of ComponentBase From 8bec2022784ff163b43071cb9c85e905ea4586ea Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:26:10 +0200 Subject: [PATCH 12/22] Renamed variable --- app/MindWork AI Studio/Pages/About.razor.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index c0119e1a..8c1aabca 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -58,10 +58,10 @@ public partial class About : MSGComponentBase private GetLogPathsResponse logPaths; - private bool showConfigDetails = false; - + private bool showEnterpriseConfigDetails = false; + private IPluginMetadata? configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); - + private EnterpriseEnvironment currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; /// @@ -156,8 +156,8 @@ private void ToggleEnterpriseConfigDetails() // can configPlug and currentEnvironment change? this.configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); this.currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; - - this.showConfigDetails = !this.showConfigDetails; + + this.showEnterpriseConfigDetails = !this.showEnterpriseConfigDetails; } private async Task CopyStartupLogPath() From 60f7743749b50b74b4e4b676f4249c037cc1b7d7 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:35:35 +0200 Subject: [PATCH 13/22] Added configurable size to MudCopyClipboardButton and updated usage in ContentBlockComponent --- app/MindWork AI Studio/Chat/ContentBlockComponent.razor | 4 +--- .../Components/MudCopyClipboardButton.razor | 2 +- .../Components/MudCopyClipboardButton.razor.cs | 6 ++++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor index 43e6d566..25bf3d4c 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor @@ -1,4 +1,3 @@ -@using System.Runtime.CompilerServices @using AIStudio.Tools @using MudBlazor @using AIStudio.Components @@ -40,8 +39,7 @@ } - - + diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor index 7a87336f..ed7c34ea 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor @@ -1,3 +1,3 @@  - + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index df6ddd1d..1ddf1f23 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -33,6 +33,12 @@ public partial class MudCopyClipboardButton : ComponentBase /// [Parameter] public string TooltipMessage { get; set; } = TB("Copies the content to the clipboard"); + + /// + /// The size of the button. The default size is small. + /// + [Parameter] + public Size Size { get; set; } = Size.Small; [Inject] private ISnackbar Snackbar { get; init; } = null!; From e4cd2a75a1b28be8f86f1cd64dc4a4f5ef071217 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:39:13 +0200 Subject: [PATCH 14/22] Removed left indent --- app/MindWork AI Studio/Pages/About.razor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index ff904daa..3c13e8da 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -37,7 +37,7 @@ @T("AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management.") - +
@T("Configuration plugin ID:") @this.configPlug!.Id @@ -52,7 +52,7 @@ @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available.") - +
@T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId @@ -60,7 +60,7 @@
- +
@T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl @@ -75,7 +75,7 @@ @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") - +
@T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId @@ -83,7 +83,7 @@
- +
@T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl @@ -91,7 +91,7 @@
- +
@T("Configuration plugin ID:") @this.configPlug!.Id From eca0d33da3c51fcecec20bdee5648b10bb8e400f Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:42:53 +0200 Subject: [PATCH 15/22] Handled nullable content and improved null checks in MudCopyClipboardButton. --- .../Components/MudCopyClipboardButton.razor.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index 1ddf1f23..6dcf128d 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -48,10 +48,10 @@ public partial class MudCopyClipboardButton : ComponentBase private async Task HandleCopyClick() { - if (this.Type == ContentType.NONE) + if (this.Type is ContentType.NONE) await this.CopyToClipboard(this.StringContent); else - await this.CopyToClipboard(this.Content!); + await this.CopyToClipboard(this.Content); } /// @@ -65,8 +65,11 @@ private async Task CopyToClipboard(string textContent) /// /// Copy this block's content to the clipboard. /// - private async Task CopyToClipboard(IContent contentToCopy) + private async Task CopyToClipboard(IContent? contentToCopy) { + if (contentToCopy is null) + return; + switch (this.Type) { case ContentType.TEXT: From 6a62a69a0706ee0dec3dff6dafe380f1ed48a40c Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 9 Aug 2025 21:52:11 +0200 Subject: [PATCH 16/22] Refactored about page to streamline environment usage and added plugin reload handling --- app/MindWork AI Studio/Pages/About.razor | 19 ++++++++------- app/MindWork AI Studio/Pages/About.razor.cs | 27 +++++++++++++++------ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 3c13e8da..4cd02e40 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -1,4 +1,5 @@ @attribute [Route(Routes.ABOUT)] +@using AIStudio.Tools.Services @inherits MSGComponentBase
@@ -24,7 +25,7 @@ - @switch (this.currentEnvironment.IsActive) + @switch (EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.IsActive) { case false when this.configPlug is null: @@ -55,16 +56,16 @@
- @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId - + @T("Enterprise configuration ID:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationId +
- @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl - + @T("Configuration server:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationServerUrl +
@@ -78,16 +79,16 @@
- @T("Enterprise configuration ID:") @this.currentEnvironment.ConfigurationId - + @T("Enterprise configuration ID:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationId +
- @T("Configuration server:") @this.currentEnvironment.ConfigurationServerUrl - + @T("Configuration server:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationServerUrl +
diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index 8c1aabca..ecdf1d17 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -58,12 +58,10 @@ public partial class About : MSGComponentBase private GetLogPathsResponse logPaths; - private bool showEnterpriseConfigDetails = false; + private bool showEnterpriseConfigDetails; private IPluginMetadata? configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); - private EnterpriseEnvironment currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; - /// /// Determines whether the enterprise configuration has details that can be shown/hidden. /// Returns true if there are details available, false otherwise. @@ -72,7 +70,7 @@ private bool HasEnterpriseConfigurationDetails { get { - return this.currentEnvironment.IsActive switch + return EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.IsActive switch { // Case 1: No enterprise config and no plugin - no details available false when this.configPlug is null => false, @@ -105,6 +103,23 @@ protected override async Task OnInitializedAsync() #endregion + #region Overrides of MSGComponentBase + + protected override async Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default + { + switch (triggeredEvent) + { + case Event.PLUGINS_RELOADED: + this.configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); + await this.InvokeAsync(this.StateHasChanged); + break; + } + + await base.ProcessIncomingMessage(sendingComponent, triggeredEvent, data); + } + + #endregion + private async Task DeterminePandocVersion() { this.pandocInstallation = await Pandoc.CheckAvailabilityAsync(this.RustService, false); @@ -153,10 +168,6 @@ private async Task ShowPandocDialog() private void ToggleEnterpriseConfigDetails() { - // can configPlug and currentEnvironment change? - this.configPlug = PluginFactory.AvailablePlugins.FirstOrDefault(x => x.Type is PluginType.CONFIGURATION); - this.currentEnvironment = EnterpriseEnvironmentService.CURRENT_ENVIRONMENT; - this.showEnterpriseConfigDetails = !this.showEnterpriseConfigDetails; } From 339dc08a25a0e4b4308177495bd8faf6c3bf4f27 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 08:18:39 +0200 Subject: [PATCH 17/22] Updated I18N --- .../Assistants/I18N/allTexts.lua | 24 ++++++------ .../plugin.lua | 37 +++++++------------ .../plugin.lua | 37 +++++++------------ 3 files changed, 40 insertions(+), 58 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 56dd964c..c923923f 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -4201,9 +4201,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Building on .NET, ASP. -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files." --- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management." - -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant." @@ -4243,9 +4240,18 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "AI Studio runs without -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" +-- Configuration server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2272122662"] = "Configuration server:" + -- We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2273492381"] = "We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose." +-- AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2280402765"] = "AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management." + +-- Configuration plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2301484629"] = "Configuration plugin ID:" + -- The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2329884315"] = "The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK." @@ -4303,6 +4309,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2868174483"] = "The .NET backend canno -- Changelog UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3017574265"] = "Changelog" +-- Enterprise configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3092349641"] = "Enterprise configuration ID:" + -- Connect AI Studio to your organization's data with our External Retrieval Interface (ERI). UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Connect AI Studio to your organization's data with our External Retrieval Interface (ERI)." @@ -4327,9 +4336,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "The following list sho -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Used Rust compiler" --- Enterprise Configuration ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise Configuration ID:" - -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!" @@ -4372,9 +4378,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "We use the HtmlAgility -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project." --- Configuration Server: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Configuration Server:" - -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow." @@ -4399,9 +4402,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "We use this library to -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose." --- Configuration Plugin ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Configuration Plugin ID:" - -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Install Pandoc" diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua index 8669eb8b..b4d56bc7 100644 --- a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -1317,9 +1317,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "KI" -- Edit Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Nachricht bearbeiten" --- Copies the content to the clipboard -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T12948066"] = "Kopiert den Inhalt in die Zwischenablage" - -- Do you really want to remove this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1347427447"] = "Möchten Sie diese Nachricht wirklich löschen?" @@ -1353,9 +1350,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3587744975"] = "Neu gen -- Do you really want to regenerate this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3878878761"] = "Möchten Sie diese Nachricht wirklich neu generieren?" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4021525742"] = "Dieser Inhaltstyp kann nicht in die Zwischenablage kopiert werden!" - -- Remove Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4070211974"] = "Nachricht entfernen" @@ -1593,11 +1587,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Plattformübe -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Kopiert den Inhalt in die Zwischenablage" --- Successfully copied the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Inhalt erfolgreich in die Zwischenablage kopiert" - --- Failed to copy the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Der Inhalt konnte nicht in die Zwischenablage kopiert werden" +-- Cannot copy this content type to clipboard! +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Dieser Inhaltstyp kann nicht in die Zwischenablage kopiert werden." -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha-Phase bedeutet, dass wir an den letzten Details arbeiten, bevor die Beta-Phase beginnt." @@ -4212,9 +4203,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Basierend auf .NET, AS -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio erstellt beim Start eine Protokolldatei, in der Ereignisse während des Starts aufgezeichnet werden. Nach dem Start wird eine weitere Protokolldatei erstellt, die alle Ereignisse während der Nutzung der App dokumentiert. Dazu gehören auch eventuell auftretende Fehler. Je nachdem, wann ein Fehler auftritt (beim Start oder während der Nutzung), können die Inhalte dieser Protokolldateien bei der Fehlerbehebung hilfreich sein. Sensible Informationen wie Passwörter werden nicht in den Protokolldateien gespeichert." --- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio läuft mit einer Unternehmenskonfiguration über das Konfigurations-Plugin, ohne zentrale Konfigurationsverwaltung." - -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "Diese Bibliothek wird verwendet, um die Unterschiede zwischen zwei Texten anzuzeigen. Das ist zum Beispiel für den Grammatik- und Rechtschreibassistenten notwendig." @@ -4254,9 +4242,18 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "Dies ist eine private -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" +-- Configuration server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2272122662"] = "Konfigurationsserver:" + -- We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2273492381"] = "Wir müssen Zufallszahlen erzeugen, z. B. um die Kommunikation zwischen der Benutzeroberfläche und der Laufzeitumgebung abzusichern. Die rand-Bibliothek eignet sich dafür hervorragend." +-- AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2280402765"] = "AI Studio läuft mit einer Unternehmenskonfiguration über ein Konfigurations-Plugin, ohne zentrale Konfigurationsverwaltung." + +-- Configuration plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2301484629"] = "Konfigurations-Plugin-ID:" + -- The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2329884315"] = "Die Programmiersprache C# wird für die Umsetzung der Benutzeroberfläche und des Backends verwendet. Für die Entwicklung der Benutzeroberfläche mit C# kommt die Blazor-Technologie aus ASP.NET Core zum Einsatz. Alle diese Technologien sind im .NET SDK integriert." @@ -4314,6 +4311,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2868174483"] = "Das .NET-Backend kann -- Changelog UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3017574265"] = "Änderungsprotokoll" +-- Enterprise configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3092349641"] = "Unternehmenskonfigurations-ID:" + -- Connect AI Studio to your organization's data with our External Retrieval Interface (ERI). UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Verbinden Sie AI Studio mit den Daten ihrer Organisation über unsere Schnittstelle für externe Datenabfrage (ERI)." @@ -4338,9 +4338,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "Die folgende Liste zei -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Verwendeter Rust-Compiler" --- Enterprise Configuration ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise-Konfigurations-ID:" - -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri wird verwendet, um die Blazor-Benutzeroberfläche bereitzustellen. Es ist ein großartiges Projekt, das die Erstellung von Desktop-Anwendungen mit Webtechnologien ermöglicht. Ich liebe Tauri!" @@ -4383,9 +4380,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "Wir verwenden das Html -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "Beim Übertragen sensibler Daten zwischen der Rust-Laufzeitumgebung und der .NET-Anwendung verschlüsseln wir die Daten. Dafür verwenden wir einige Bibliotheken aus dem Rust Crypto-Projekt: cipher, aes, cbc, pbkdf2, hmac und sha2. Wir sind dankbar für die großartige Arbeit des Rust Crypto-Projekts." --- Configuration Server: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Konfigurationsserver:" - -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "Dies ist eine Bibliothek, die die Grundlagen für asynchrones Programmieren in Rust bereitstellt. Sie enthält zentrale Trait-Definitionen wie Stream sowie Hilfsfunktionen wie join!, select! und verschiedene Methoden zur Kombination von Futures, die einen ausdrucksstarken asynchronen Kontrollfluss ermöglichen." @@ -4410,9 +4404,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "Wir verwenden diese Bib -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "Für einige Datenübertragungen müssen wir die Daten in Base64 kodieren. Diese Rust-Bibliothek eignet sich dafür hervorragend." --- Configuration Plugin ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Konfiguration Plugin-ID:" - -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Pandoc installieren" diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index ceddaadc..0ffc43e0 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -1317,9 +1317,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T601166687"] = "AI" -- Edit Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1183581066"] = "Edit Message" --- Copies the content to the clipboard -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T12948066"] = "Copies the content to the clipboard" - -- Do you really want to remove this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T1347427447"] = "Do you really want to remove this message?" @@ -1353,9 +1350,6 @@ UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3587744975"] = "Regener -- Do you really want to regenerate this message? UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T3878878761"] = "Do you really want to regenerate this message?" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4021525742"] = "Cannot copy this content type to clipboard!" - -- Remove Message UI_TEXT_CONTENT["AISTUDIO::CHAT::CONTENTBLOCKCOMPONENT::T4070211974"] = "Remove Message" @@ -1593,11 +1587,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platfor -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" --- Successfully copied the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T2721950880"] = "Successfully copied the content to your clipboard" - --- Failed to copy the content to your clipboard -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T424495418"] = "Failed to copy the content to your clipboard" +-- Cannot copy this content type to clipboard! +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Cannot copy this content type to clipboard!" -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." @@ -4212,9 +4203,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1629800076"] = "Building on .NET, ASP. -- AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1630237140"] = "AI Studio creates a log file at startup, in which events during startup are recorded. After startup, another log file is created that records all events that occur during the use of the app. This includes any errors that may occur. Depending on when an error occurs (at startup or during use), the contents of these log files can be helpful for troubleshooting. Sensitive information such as passwords is not included in the log files." --- AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1660603837"] = "AI Studio runs with an enterprise configuration using the configuration plugin, without central configuration management." - -- This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1772678682"] = "This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant." @@ -4254,9 +4242,18 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "This is a private AI S -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" +-- Configuration server: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2272122662"] = "Configuration server:" + -- We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2273492381"] = "We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose." +-- AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2280402765"] = "AI Studio runs with an enterprise configuration using a configuration plugin, without central configuration management." + +-- Configuration plugin ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2301484629"] = "Configuration plugin ID:" + -- The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2329884315"] = "The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK." @@ -4314,6 +4311,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2868174483"] = "The .NET backend canno -- Changelog UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3017574265"] = "Changelog" +-- Enterprise configuration ID: +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3092349641"] = "Enterprise configuration ID:" + -- Connect AI Studio to your organization's data with our External Retrieval Interface (ERI). UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T313276297"] = "Connect AI Studio to your organization's data with our External Retrieval Interface (ERI)." @@ -4338,9 +4338,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3405978777"] = "The following list sho -- Used Rust compiler UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3440211747"] = "Used Rust compiler" --- Enterprise Configuration ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3454644521"] = "Enterprise Configuration ID:" - -- Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri! UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T3494984593"] = "Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!" @@ -4383,9 +4380,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4184485147"] = "We use the HtmlAgility -- When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4229014037"] = "When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project." --- Configuration Server: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T4266826118"] = "Configuration Server:" - -- This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T566998575"] = "This is a library providing the foundations for asynchronous programming in Rust. It includes key trait definitions like Stream, as well as utilities like join!, select!, and various futures combinator methods which enable expressive asynchronous control flow." @@ -4410,9 +4404,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T855925638"] = "We use this library to -- For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T870640199"] = "For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose." --- Configuration Plugin ID: -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T955742901"] = "Configuration Plugin ID:" - -- Install Pandoc UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T986578435"] = "Install Pandoc" From 873d2fab0bac12e168302de7982170d489fe2d70 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 15:23:53 +0200 Subject: [PATCH 18/22] Fixed I18N --- app/MindWork AI Studio/Assistants/I18N/allTexts.lua | 6 +++--- app/MindWork AI Studio/Pages/About.razor | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index c923923f..f2ff50e2 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -4183,6 +4183,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "About MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Browse AI Studio's source code on GitHub — we welcome your contributions." +-- This is a private AI Studio installation. It runs without an enterprise configuration. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1209549230"] = "This is a private AI Studio installation. It runs without an enterprise configuration." + -- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available." @@ -4234,9 +4237,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "This library is used t -- For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2174764529"] = "For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose." --- AI Studio runs without an enterprise configuration. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "AI Studio runs without an enterprise configuration." - -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 4cd02e40..100c4236 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -29,7 +29,7 @@ { case false when this.configPlug is null: - @T("AI Studio runs without an enterprise configuration.") + @T("This is a private AI Studio installation. It runs without an enterprise configuration.") break; From e1a650f6c3a06a3a6b5d9440c3b5c92ce7621e42 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 15:32:13 +0200 Subject: [PATCH 19/22] Updated changelog --- app/MindWork AI Studio/wwwroot/changelog/v0.9.50.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.50.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.50.md index cf1aee39..57f77b5c 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.50.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.50.md @@ -1,3 +1,4 @@ # v0.9.50, build 225 (2025-07-xx xx:xx UTC) - Added an option for chat templates to predefine a user input. -- Added the ability to create chat templates from existing chats. \ No newline at end of file +- Added the ability to create chat templates from existing chats. +- Improved the display of enterprise configurations on the about page; configuration details are only shown when needed. \ No newline at end of file From 265aee4a8ba00547aec6c852b801ecd6142d3208 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 15:54:25 +0200 Subject: [PATCH 20/22] Fixed layout --- app/MindWork AI Studio/Pages/About.razor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 100c4236..b25c4527 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -76,7 +76,7 @@ @T("AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is active.") - +
@T("Enterprise configuration ID:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationId @@ -84,7 +84,7 @@
- +
@T("Configuration server:") @EnterpriseEnvironmentService.CURRENT_ENVIRONMENT.ConfigurationServerUrl From 4b284ed4807570b9fe32a80c2cea3c71b8d3a0b6 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 15:55:26 +0200 Subject: [PATCH 21/22] Fixed tooltip --- app/MindWork AI Studio/Assistants/I18N/allTexts.lua | 7 +++++-- .../Components/MudCopyClipboardButton.razor.cs | 4 ++-- app/MindWork AI Studio/Pages/About.razor | 4 ++-- .../plugin.lua | 13 ++++++++----- .../plugin.lua | 13 ++++++++----- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 64b87fe4..f40ea97d 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1588,8 +1588,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platfor -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Cannot copy this content type to clipboard!" +-- Cannot copy this content type to clipboard. +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T3937637647"] = "Cannot copy this content type to clipboard." -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." @@ -4216,6 +4216,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1806897624"] = "By clicking on the res -- Pandoc Installation UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T185447014"] = "Pandoc Installation" +-- Copies the configuration plugin ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1859295819"] = "Copies the configuration plugin ID to the clipboard" + -- Check for updates UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1890416390"] = "Check for updates" diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index 6dcf128d..65304735 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Components; public partial class MudCopyClipboardButton : ComponentBase { - private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(About).Namespace, nameof(About)); + private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(MudCopyClipboardButton).Namespace, nameof(MudCopyClipboardButton)); /// /// The string, if you want to copy a string. @@ -78,7 +78,7 @@ private async Task CopyToClipboard(IContent? contentToCopy) break; default: - this.Snackbar.Add(TB("Cannot copy this content type to clipboard!"), Severity.Error, config => + this.Snackbar.Add(TB("Cannot copy this content type to clipboard."), Severity.Error, config => { config.Icon = Icons.Material.Filled.ContentCopy; config.IconSize = Size.Large; diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index b25c4527..b7ecc945 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -42,7 +42,7 @@
@T("Configuration plugin ID:") @this.configPlug!.Id - +
@@ -96,7 +96,7 @@
@T("Configuration plugin ID:") @this.configPlug!.Id - +
diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua index c795a001..94f95f3e 100644 --- a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -1590,8 +1590,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Plattformübe -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Kopiert den Inhalt in die Zwischenablage" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Dieser Inhaltstyp kann nicht in die Zwischenablage kopiert werden." +-- Cannot copy this content type to clipboard. +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T3937637647"] = "Dieser Inhaltstyp kann nicht in die Zwischenablage kopiert werden." -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha-Phase bedeutet, dass wir an den letzten Details arbeiten, bevor die Beta-Phase beginnt." @@ -4188,6 +4188,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "Über MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Sehen Sie sich den Quellcode von AI Studio auf GitHub an – wir freuen uns über ihre Beiträge." +-- This is a private AI Studio installation. It runs without an enterprise configuration. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1209549230"] = "Dies ist eine private AI Studio-Installation. Sie läuft ohne Unternehmenskonfiguration." + -- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio läuft mit einer Unternehmenskonfiguration und einem Konfigurationsserver. Das Konfigurations-Plugin ist noch nicht verfügbar." @@ -4215,6 +4218,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1806897624"] = "Wenn Sie auf den jewei -- Pandoc Installation UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T185447014"] = "Pandoc-Installation" +-- Copies the configuration plugin ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1859295819"] = "Kopiert die Konfigurations-Plugin-ID in die Zwischenablage" + -- Check for updates UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1890416390"] = "Nach Updates suchen" @@ -4239,9 +4245,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "Diese Bibliothek wird -- For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2174764529"] = "Für die sichere Kommunikation zwischen der Benutzeroberfläche und der Laufzeit müssen wir Zertifikate erstellen. Diese Rust-Bibliothek eignet sich hervorragend dafür." --- This is a private AI Studio installation. It runs without an enterprise configuration. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "Dies ist eine private AI Studio-Installation. Es wird keine Konfiguration einer Organisation verwendet." - -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index ebbca11b..c0b8aebe 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -1590,8 +1590,8 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MOTIVATION::T843057510"] = "Cross-Platfor -- Copies the content to the clipboard UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T12948066"] = "Copies the content to the clipboard" --- Cannot copy this content type to clipboard! -UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T4021525742"] = "Cannot copy this content type to clipboard!" +-- Cannot copy this content type to clipboard. +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::MUDCOPYCLIPBOARDBUTTON::T3937637647"] = "Cannot copy this content type to clipboard." -- Alpha phase means that we are working on the last details before the beta phase. UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PREVIEWALPHA::T166807685"] = "Alpha phase means that we are working on the last details before the beta phase." @@ -4188,6 +4188,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1020427799"] = "About MindWork AI Stud -- Browse AI Studio's source code on GitHub — we welcome your contributions. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1107156991"] = "Browse AI Studio's source code on GitHub — we welcome your contributions." +-- This is a private AI Studio installation. It runs without an enterprise configuration. +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1209549230"] = "This is a private AI Studio installation. It runs without an enterprise configuration." + -- AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1282228996"] = "AI Studio runs with an enterprise configuration and a configuration server. The configuration plugin is not yet available." @@ -4215,6 +4218,9 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1806897624"] = "By clicking on the res -- Pandoc Installation UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T185447014"] = "Pandoc Installation" +-- Copies the configuration plugin ID to the clipboard +UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1859295819"] = "Copies the configuration plugin ID to the clipboard" + -- Check for updates UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T1890416390"] = "Check for updates" @@ -4239,9 +4245,6 @@ UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2173617769"] = "This library is used t -- For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose. UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2174764529"] = "For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose." --- This is a private AI Studio installation. It runs without an enterprise configuration. -UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2244723851"] = "This is a private AI Studio installation. It runs without an enterprise configuration." - -- OK UI_TEXT_CONTENT["AISTUDIO::PAGES::ABOUT::T2246359087"] = "OK" From 39347c6efc75c2f19a3ce53afabf360f2ceecc32 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Aug 2025 15:55:59 +0200 Subject: [PATCH 22/22] Remove unused namespace imports --- .../Components/MudCopyClipboardButton.razor.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs index 65304735..644034f3 100644 --- a/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs +++ b/app/MindWork AI Studio/Components/MudCopyClipboardButton.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Pages; using AIStudio.Tools.PluginSystem; using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components;