diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
index 85599176..9e690c31 100644
--- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
+++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
@@ -1615,6 +1615,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T114706247
-- Select a log file
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1231773010"] = "Select a log file"
+-- Show only matching lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T131451442"] = "Show only matching lines"
+
-- Log level
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1318706515"] = "Log level"
@@ -1645,6 +1648,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T228853842
-- Showing {0} of {1} lines. Last refresh: {2}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2378353570"] = "Showing {0} of {1} lines. Last refresh: {2}."
+-- Disable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T240826492"] = "Disable auto-refresh"
+
+-- Enable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2467283075"] = "Enable auto-refresh"
+
-- No matching log lines.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2511997530"] = "No matching log lines."
@@ -1657,8 +1666,8 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T268681396
-- Loaded {0} lines. Last refresh: {1}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2920304709"] = "Loaded {0} lines. Last refresh: {1}."
--- Filter only
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3152625639"] = "Filter only"
+-- Disable inverted dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3035207754"] = "Disable inverted dropdown filters"
-- Copy visible lines
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3292961985"] = "Copy visible lines"
@@ -1669,21 +1678,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T333036481
-- Unknown error
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3461425987"] = "Unknown error"
+-- Exclude
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3551498825"] = "Exclude"
+
-- The log file path is not available yet.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3686775689"] = "The log file path is not available yet."
-- Logger
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T376222229"] = "Logger"
--- Auto-refresh
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3837203600"] = "Auto-refresh"
-
-- not loaded yet
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3863250749"] = "not loaded yet"
-- Loading...
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T397479987"] = "Loading..."
+-- Select a dropdown filter to invert
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3991737584"] = "Select a dropdown filter to invert"
+
-- Usage log
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4031747274"] = "Usage log"
@@ -1696,14 +1708,17 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T413024177
-- Opened the log file location.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4162897654"] = "Opened the log file location."
+-- Hide timestamps
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4263992002"] = "Hide timestamps"
+
-- Show timestamps
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T469116133"] = "Show timestamps"
--- Invert filters
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T721900298"] = "Invert filters"
+-- Highlight matches without hiding lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T661180902"] = "Highlight matches without hiding lines"
--- Clear
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T77955010"] = "Clear"
+-- Invert dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T8477641"] = "Invert dropdown filters"
-- You can enter text, attach one or more documents, or use both. At least one input is required.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T1442535450"] = "You can enter text, attach one or more documents, or use both. At least one input is required."
diff --git a/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor b/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor
index b7e23e9b..8e80856a 100644
--- a/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor
+++ b/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor
@@ -13,17 +13,22 @@
@T("Usage log")
@T("Startup log")
-
+
+
+
@if (!this.autoRefresh)
{
-
- @T("Refresh")
-
+
+
+
}
-
- @T("Open in folder")
-
+
+
+
+
+
+
@@ -51,19 +56,20 @@
}
-
+
+
+
+
+
+
-
-
- @T("Clear")
-
-
- @T("Copy visible lines")
-
-
-
+
+
+
+
+
diff --git a/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor.cs b/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor.cs
index dfccfcd7..dbeb98fe 100644
--- a/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor.cs
+++ b/app/MindWork AI Studio/Assistants/LogViewer/AssistantLogViewer.razor.cs
@@ -56,8 +56,10 @@ public partial class AssistantLogViewer : MSGComponentBase
private List sourceDetailOptions = [OTHER_OPTION_VALUE];
private string[] activeSearchTerms = [];
+ private string[] activeExcludeTerms = [];
private CancellationTokenSource? autoRefreshCancellationTokenSource;
private string filterText = string.Empty;
+ private string excludeText = string.Empty;
private string loadError = string.Empty;
private bool isLoading;
private bool autoRefresh;
@@ -75,12 +77,41 @@ public partial class AssistantLogViewer : MSGComponentBase
private bool HasDropdownFilter => this.selectedLogLevels.Count > 0 || this.selectedLoggers.Count > 0 || this.selectedSourceDetails.Count > 0;
- private bool HasActiveFilter => !string.IsNullOrWhiteSpace(this.filterText) || this.HasDropdownFilter || this.invertFilters;
-
- private bool HasActiveVisibilityFilter => this.HasDropdownFilter || (this.filterOnly && this.activeSearchTerms.Length > 0);
-
private bool CanCopyDisplayedLines => this.displayLines.Count > 0;
+ private string AutoRefreshTooltip => this.autoRefresh ? T("Disable auto-refresh") : T("Enable auto-refresh");
+
+ private Variant AutoRefreshButtonVariant => GetToggleVariant(this.autoRefresh);
+
+ private Color AutoRefreshButtonColor => GetToggleColor(this.autoRefresh);
+
+ private string FilterOnlyTooltip => this.filterOnly ? T("Highlight matches without hiding lines") : T("Show only matching lines");
+
+ private Variant FilterOnlyButtonVariant => GetToggleVariant(this.filterOnly);
+
+ private Color FilterOnlyButtonColor => GetToggleColor(this.filterOnly);
+
+ private string ShowTimestampsTooltip => this.showTimestamps ? T("Hide timestamps") : T("Show timestamps");
+
+ private Variant ShowTimestampsButtonVariant => GetToggleVariant(this.showTimestamps);
+
+ private Color ShowTimestampsButtonColor => GetToggleColor(this.showTimestamps);
+
+ private string InvertFiltersTooltip
+ {
+ get
+ {
+ if (!this.HasDropdownFilter)
+ return T("Select a dropdown filter to invert");
+
+ return this.invertFilters ? T("Disable inverted dropdown filters") : T("Invert dropdown filters");
+ }
+ }
+
+ private Variant InvertFiltersButtonVariant => GetToggleVariant(this.invertFilters);
+
+ private Color InvertFiltersButtonColor => GetToggleColor(this.invertFilters);
+
private string FilterText
{
get => this.filterText;
@@ -94,6 +125,19 @@ public partial class AssistantLogViewer : MSGComponentBase
}
}
+ private string ExcludeText
+ {
+ get => this.excludeText;
+ set
+ {
+ if (this.excludeText == value)
+ return;
+
+ this.excludeText = value;
+ this.RefreshDisplayLines();
+ }
+ }
+
private bool FilterOnly
{
get => this.filterOnly;
@@ -112,10 +156,11 @@ public partial class AssistantLogViewer : MSGComponentBase
get => this.invertFilters;
set
{
- if (this.invertFilters == value)
+ var normalizedValue = value && this.HasDropdownFilter;
+ if (this.invertFilters == normalizedValue)
return;
- this.invertFilters = value;
+ this.invertFilters = normalizedValue;
this.RefreshDisplayLines();
}
}
@@ -188,6 +233,7 @@ public partial class AssistantLogViewer : MSGComponentBase
private Task SelectedLogLevelsChanged(IEnumerable? selectedValues)
{
UpdateSelectedValues(this.selectedLogLevels, selectedValues);
+ this.DisableInvertFiltersIfNoDropdownFilter();
this.RefreshDisplayLines();
return Task.CompletedTask;
}
@@ -195,6 +241,7 @@ public partial class AssistantLogViewer : MSGComponentBase
private Task SelectedLoggersChanged(IEnumerable? selectedValues)
{
UpdateSelectedValues(this.selectedLoggers, selectedValues);
+ this.DisableInvertFiltersIfNoDropdownFilter();
this.RefreshDisplayLines();
return Task.CompletedTask;
}
@@ -202,6 +249,7 @@ public partial class AssistantLogViewer : MSGComponentBase
private Task SelectedSourceDetailsChanged(IEnumerable? selectedValues)
{
UpdateSelectedValues(this.selectedSourceDetails, selectedValues);
+ this.DisableInvertFiltersIfNoDropdownFilter();
this.RefreshDisplayLines();
return Task.CompletedTask;
}
@@ -217,6 +265,26 @@ public partial class AssistantLogViewer : MSGComponentBase
await Task.CompletedTask;
}
+ private async Task ToggleAutoRefresh()
+ {
+ await this.AutoRefreshChanged(!this.autoRefresh);
+ }
+
+ private void ToggleFilterOnly()
+ {
+ this.FilterOnly = !this.filterOnly;
+ }
+
+ private void ToggleShowTimestamps()
+ {
+ this.ShowTimestamps = !this.showTimestamps;
+ }
+
+ private void ToggleInvertFilters()
+ {
+ this.InvertFilters = !this.invertFilters;
+ }
+
private async Task MaxLinesChanged(int value)
{
var normalizedValue = Math.Clamp(value, MIN_MAX_LINES, MAX_MAX_LINES);
@@ -280,13 +348,15 @@ public partial class AssistantLogViewer : MSGComponentBase
});
}
- private void ClearFilters()
+ private void ClearFilterText()
{
this.filterText = string.Empty;
- this.selectedLogLevels.Clear();
- this.selectedLoggers.Clear();
- this.selectedSourceDetails.Clear();
- this.invertFilters = false;
+ this.RefreshDisplayLines();
+ }
+
+ private void ClearExcludeText()
+ {
+ this.excludeText = string.Empty;
this.RefreshDisplayLines();
}
@@ -384,11 +454,29 @@ public partial class AssistantLogViewer : MSGComponentBase
NormalizeSelectedValues(this.selectedLogLevels, this.logLevelOptions);
NormalizeSelectedValues(this.selectedLoggers, this.loggerOptions);
NormalizeSelectedValues(this.selectedSourceDetails, this.sourceDetailOptions);
+ this.DisableInvertFiltersIfNoDropdownFilter();
+ }
+
+ private void DisableInvertFiltersIfNoDropdownFilter()
+ {
+ if (!this.HasDropdownFilter)
+ this.invertFilters = false;
+ }
+
+ private static Variant GetToggleVariant(bool isActive)
+ {
+ return isActive ? Variant.Filled : Variant.Outlined;
+ }
+
+ private static Color GetToggleColor(bool isActive)
+ {
+ return isActive ? Color.Primary : Color.Default;
}
private void RefreshDisplayLines()
{
this.activeSearchTerms = BuildSearchTerms(this.filterText);
+ this.activeExcludeTerms = BuildSearchTerms(this.excludeText);
this.displayLines = this.loadedLines
.Where(this.LineMatchesFilters)
.ToList();
@@ -396,41 +484,26 @@ public partial class AssistantLogViewer : MSGComponentBase
private bool LineMatchesFilters(LogLine line)
{
- if (this.invertFilters && this.HasActiveVisibilityFilter)
- return !this.LineMatchesAnyActiveFilter(line);
+ if (!this.LineMatchesDropdownFilters(line))
+ return false;
- return this.LineMatchesActiveFilters(line);
+ var renderedLine = this.GetPlainRenderedLine(line);
+ if (this.filterOnly && this.activeSearchTerms.Length > 0 && !MatchesSearchTerms(renderedLine, this.activeSearchTerms))
+ return false;
+
+ return this.activeExcludeTerms.Length == 0 || !MatchesSearchTerms(renderedLine, this.activeExcludeTerms);
}
- private bool LineMatchesActiveFilters(LogLine line)
+ private bool LineMatchesDropdownFilters(LogLine line)
{
- if (!MatchesSelection(line.Segments.Level, this.selectedLogLevels))
- return false;
+ var matchesDropdownFilters = MatchesSelection(line.Segments.Level, this.selectedLogLevels)
+ && MatchesSelection(line.Segments.Logger, this.selectedLoggers)
+ && MatchesSelection(line.Segments.SourceDetails, this.selectedSourceDetails);
- if (!MatchesSelection(line.Segments.Logger, this.selectedLoggers))
- return false;
-
- if (!MatchesSelection(line.Segments.SourceDetails, this.selectedSourceDetails))
- return false;
-
- if (!this.filterOnly || this.activeSearchTerms.Length == 0)
+ if (!this.HasDropdownFilter)
return true;
- return MatchesSearchTerms(this.GetPlainRenderedLine(line), this.activeSearchTerms);
- }
-
- private bool LineMatchesAnyActiveFilter(LogLine line)
- {
- if (ActiveSelectionMatches(line.Segments.Level, this.selectedLogLevels))
- return true;
-
- if (ActiveSelectionMatches(line.Segments.Logger, this.selectedLoggers))
- return true;
-
- if (ActiveSelectionMatches(line.Segments.SourceDetails, this.selectedSourceDetails))
- return true;
-
- return this.filterOnly && this.activeSearchTerms.Length > 0 && MatchesSearchTerms(this.GetPlainRenderedLine(line), this.activeSearchTerms);
+ return this.invertFilters ? !matchesDropdownFilters : matchesDropdownFilters;
}
private string RenderLine(LogLine line)
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 4768f267..4d3f9733 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
@@ -1617,6 +1617,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T114706247
-- Select a log file
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1231773010"] = "Protokolldatei auswählen"
+-- Show only matching lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T131451442"] = "Nur passende Zeilen anzeigen"
+
-- Log level
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1318706515"] = "Protokollierungsstufe"
@@ -1647,6 +1650,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T228853842
-- Showing {0} of {1} lines. Last refresh: {2}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2378353570"] = "Anzeige von {0} von {1} Zeilen. Letzte Aktualisierung: {2}."
+-- Disable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T240826492"] = "Automatische Aktualisierung deaktivieren"
+
+-- Enable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2467283075"] = "Automatische Aktualisierung aktivieren"
+
-- No matching log lines.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2511997530"] = "Keine passenden Protokollzeilen."
@@ -1659,10 +1668,10 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T268681396
-- Loaded {0} lines. Last refresh: {1}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2920304709"] = "{0} Zeilen geladen. Letzte Aktualisierung: {1}."
--- Filter only
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3152625639"] = "Nur filtern"
+-- Disable inverted dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3035207754"] = "Invertierung der Dropdown-Filter deaktivieren"
--- Copy visible lines
+-- Copy view
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3292961985"] = "Ansicht kopieren"
-- Loading log file...
@@ -1671,21 +1680,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T333036481
-- Unknown error
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3461425987"] = "Unbekannter Fehler"
+-- Exclude
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3551498825"] = "Ausschließen"
+
-- The log file path is not available yet.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3686775689"] = "Der Pfad zur Protokolldatei ist noch nicht verfügbar."
-- Logger
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T376222229"] = "Logger"
--- Auto-refresh
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3837203600"] = "Automatisch aktualisieren"
-
-- not loaded yet
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3863250749"] = "noch nicht geladen"
-- Loading...
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T397479987"] = "Wird geladen..."
+-- Select a dropdown filter to invert
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3991737584"] = "Wählen Sie einen Dropdown-Filter zur Invertierung aus"
+
-- Usage log
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4031747274"] = "Nutzungsprotokoll"
@@ -1698,14 +1710,17 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T413024177
-- Opened the log file location.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4162897654"] = "Der Speicherort der Protokolldatei wurde geöffnet."
+-- Hide timestamps
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4263992002"] = "Zeitstempel ausblenden"
+
-- Show timestamps
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T469116133"] = "Zeitstempel anzeigen"
--- Invert filters
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T721900298"] = "Filter umkehren"
+-- Highlight matches without hiding lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T661180902"] = "Treffer hervorheben, ohne übrige Zeilen auszublenden"
--- Clear
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T77955010"] = "Löschen"
+-- Invert dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T8477641"] = "Dropdown-Filter invertieren"
-- You can enter text, attach one or more documents, or use both. At least one input is required.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T1442535450"] = "Sie können Text eingeben, ein oder mehrere Dokumente anhängen oder beides verwenden. Mindestens eine Eingabe ist erforderlich."
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 f7792d12..b4669564 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
@@ -1617,6 +1617,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T114706247
-- Select a log file
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1231773010"] = "Select a log file"
+-- Show only matching lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T131451442"] = "Show only matching lines"
+
-- Log level
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T1318706515"] = "Log level"
@@ -1647,6 +1650,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T228853842
-- Showing {0} of {1} lines. Last refresh: {2}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2378353570"] = "Showing {0} of {1} lines. Last refresh: {2}."
+-- Disable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T240826492"] = "Disable auto-refresh"
+
+-- Enable auto-refresh
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2467283075"] = "Enable auto-refresh"
+
-- No matching log lines.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2511997530"] = "No matching log lines."
@@ -1659,10 +1668,10 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T268681396
-- Loaded {0} lines. Last refresh: {1}.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T2920304709"] = "Loaded {0} lines. Last refresh: {1}."
--- Filter only
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3152625639"] = "Filter only"
+-- Disable inverted dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3035207754"] = "Disable inverted dropdown filters"
--- Copy visible lines
+-- Copy view
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3292961985"] = "Copy view"
-- Loading log file...
@@ -1671,21 +1680,24 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T333036481
-- Unknown error
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3461425987"] = "Unknown error"
+-- Exclude
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3551498825"] = "Exclude"
+
-- The log file path is not available yet.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3686775689"] = "The log file path is not available yet."
-- Logger
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T376222229"] = "Logger"
--- Auto-refresh
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3837203600"] = "Auto-refresh"
-
-- not loaded yet
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3863250749"] = "not loaded yet"
-- Loading...
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T397479987"] = "Loading..."
+-- Select a dropdown filter to invert
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T3991737584"] = "Select a dropdown filter to invert"
+
-- Usage log
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4031747274"] = "Usage log"
@@ -1698,14 +1710,17 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T413024177
-- Opened the log file location.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4162897654"] = "Opened the log file location."
+-- Hide timestamps
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T4263992002"] = "Hide timestamps"
+
-- Show timestamps
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T469116133"] = "Show timestamps"
--- Invert filters
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T721900298"] = "Invert filters"
+-- Highlight matches without hiding other lines
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T661180902"] = "Highlight matches without hiding other lines"
--- Clear
-UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T77955010"] = "Clear"
+-- Invert dropdown filters
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::LOGVIEWER::ASSISTANTLOGVIEWER::T8477641"] = "Invert dropdown filters"
-- You can enter text, attach one or more documents, or use both. At least one input is required.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::MYTASKS::ASSISTANTMYTASKS::T1442535450"] = "You can enter text, attach one or more documents, or use both. At least one input is required."