diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
index 768c4435..ad6aac89 100644
--- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
+++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua
@@ -2299,6 +2299,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- The visual briefing settings could not be saved.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T131371789"] = "The visual briefing settings could not be saved."
+-- Please provide a custom target language.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1330607941"] = "Please provide a custom target language."
+
-- AI Studio cannot read this visual briefing. Its files may be incompatible or damaged.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T138425430"] = "AI Studio cannot read this visual briefing. Its files may be incompatible or damaged."
@@ -2338,6 +2341,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- This briefing revision was already imported.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1732858483"] = "This briefing revision was already imported."
+-- Please select a provider.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1809312323"] = "Please select a provider."
+
-- Cannot be opened
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1981873292"] = "Cannot be opened"
@@ -2452,6 +2458,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Export visual briefing
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3261790455"] = "Export visual briefing"
+-- The source '{0}' is no longer reachable. Restore or relink it.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3270802829"] = "The source '{0}' is no longer reachable. Restore or relink it."
+
-- Could not open the visual briefing project folder.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3290777125"] = "Could not open the visual briefing project folder."
@@ -2518,6 +2527,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Actions
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3865031940"] = "Actions"
+-- The transcript for '{0}' is missing or outdated. Transcribe the media source again.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3882911085"] = "The transcript for '{0}' is missing or outdated. Transcribe the media source again."
+
-- Export
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3898821075"] = "Export"
@@ -2623,6 +2635,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Visual briefing preview
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T740269027"] = "Visual briefing preview"
+-- Please provide a custom protection level.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T799692129"] = "Please provide a custom protection level."
+
+-- Please provide a briefing name.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T902674552"] = "Please provide a briefing name."
+
-- Build progress
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T909046610"] = "Build progress"
diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor
index fa083093..d31026c8 100644
--- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor
+++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor
@@ -78,152 +78,160 @@
}
else
{
-
- @this.projectName
-
- @T("Rename")
- @T("Delete")
+
+
+ @this.projectName
+
+ @T("Rename")
+ @T("Delete")
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @T("Source material")
+ @T("Documents, spreadsheets, images, audio, and video are considered as source context.")
+
+
-
-
+
+
+ @T("Visual assets")
+ @T("PNG, JPEG, and WebP assets are analyzed and must appear visibly in the briefing.")
+
+
-
-
-
-
-
-
-
- @T("Source material")
- @T("Documents, spreadsheets, images, audio, and video are considered as source context.")
-
-
-
-
-
- @T("Visual assets")
- @T("PNG, JPEG, and WebP assets are analyzed and must appear visibly in the briefing.")
-
-
-
-
-
- @if (this.selectedBriefing.Sources.Count > 0)
- {
-
-
- @T("Linked sources")
- @T("Refresh status")
-
-
-
- @T("File")
- @T("Kind")
- @T("Status")
- @T("Actions")
-
-
- @Path.GetFileName(context.Path)
- @context.Kind
-
- @this.SourceStatusName(context.Status)
-
-
-
-
-
- @if (context.IsMedia && context.Status is VisualBriefingSourceStatus.TRANSCRIPT_OUTDATED)
- {
-
-
+ @if (this.selectedBriefing.Sources.Count > 0)
+ {
+
+
+ @T("Linked sources")
+ @T("Refresh status")
+
+
+
+ @T("File")
+ @T("Kind")
+ @T("Status")
+ @T("Actions")
+
+
+ @Path.GetFileName(context.Path)
+ @context.Kind
+
+ @this.SourceStatusName(context.Status)
+
+
+
+
- }
-
-
-
-
-
-
+ @if (context.IsMedia && context.Status is VisualBriefingSourceStatus.TRANSCRIPT_OUTDATED)
+ {
+
+
+
+ }
+
+
+
+
+
+
+
+ }
+
+
+ @T("Briefing settings")
+
+
+
+
+
+
+
+ @T("Show source references")
+ @T("Optimize large visual assets")
- }
-
- @T("Briefing settings")
-
-
-
-
-
-
-
- @T("Show source references")
- @T("Optimize large visual assets")
-
+
+ @if (this.selectedBriefing.Versions.Count == 0)
+ {
+ @T("Create briefing")
+ }
+ else
+ {
+
+
+ @T("Change design")
+
+
+
+
+ @T("Update content")
+
+
+
+
+ @T("Recompile briefing")
+
+
+
+
+ @T("Rebuild briefing")
+
+
+ }
+
+
-
- @if (this.selectedBriefing.Versions.Count == 0)
- {
- @T("Create briefing")
- }
- else
- {
-
-
- @T("Change design")
-
-
-
-
- @T("Update content")
-
-
-
-
- @T("Recompile briefing")
-
-
-
-
- @T("Rebuild briefing")
-
-
- }
-
+
@if (this.latestBuild is not null)
{
@@ -294,7 +302,7 @@
Color="Color.Warning"
StartIcon="@Icons.Material.Filled.Refresh"
OnClick="@(() => this.GenerateAsync(VisualBriefingEditMode.REBUILD, reusableBuildId))"
- Disabled="@this.IsCurrentBusy">
+ Disabled="@this.CannotGenerate(VisualBriefingEditMode.REBUILD)">
@T("Continue as rebuild")
diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Projects.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Projects.cs
index 1c6ee3e4..e64fccec 100644
--- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Projects.cs
+++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Projects.cs
@@ -295,6 +295,9 @@ public partial class VisualBriefingAssistant
}
this.lastPersistedState = this.BuildPersistenceFingerprint();
+ this.formIssues = [];
+ this.formIsValid = false;
+ this.formValidationPending = true;
}
///
@@ -328,6 +331,10 @@ public partial class VisualBriefingAssistant
this.lastBuildDiagnostics = null;
this.reusableContentBuildId = null;
this.lastPersistedState = string.Empty;
+ this.formIssues = [];
+ this.formIsValid = false;
+ this.formValidationPending = false;
+ this.visualBriefingForm?.ResetValidation();
}
///
diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Validation.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Validation.cs
new file mode 100644
index 00000000..4178854f
--- /dev/null
+++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Validation.cs
@@ -0,0 +1,82 @@
+using AIStudio.Provider;
+
+using ProviderSettings = AIStudio.Settings.Provider;
+
+namespace AIStudio.Assistants.VisualBriefing;
+
+public partial class VisualBriefingAssistant
+{
+ /// Gets all current field, source, and revision issues shown below the actions.
+ private IReadOnlyList ValidationIssues
+ {
+ get
+ {
+ List issues = [.. this.formIssues];
+
+ AddIssue(issues, this.ValidateProjectName(this.projectName));
+ AddIssue(issues, this.ValidateProvider(this.provider));
+ AddIssue(issues, this.ValidateCustomTargetLanguage(this.customTargetLanguage));
+ AddIssue(issues, this.ValidateCustomProtectionLevel(this.customProtectionLevel));
+
+ if (this.selectedBriefing is not null)
+ {
+ foreach (var source in this.selectedBriefing.Sources)
+ {
+ var fileName = Path.GetFileName(source.Path);
+ switch (source.Status)
+ {
+ case VisualBriefingSourceStatus.UNREACHABLE:
+ issues.Add(string.Format(T("The source '{0}' is no longer reachable. Restore or relink it."), fileName));
+ break;
+
+ case VisualBriefingSourceStatus.TRANSCRIPT_OUTDATED:
+ issues.Add(string.Format(T("The transcript for '{0}' is missing or outdated. Transcribe the media source again."), fileName));
+ break;
+ }
+ }
+
+ if (this.selectedBriefing.Versions.Count > 0 && !this.SelectedVersionSupportsEdits)
+ issues.Add(T("This version has no compatible semantic artifacts. Rebuild the briefing instead."));
+ }
+
+ return [.. issues.Where(issue => !string.IsNullOrWhiteSpace(issue)).Distinct(StringComparer.Ordinal)];
+ }
+ }
+
+ /// Validates the briefing name.
+ private string? ValidateProjectName(string name) => string.IsNullOrWhiteSpace(name) ? T("Please provide a briefing name.") : null;
+
+ /// Validates the selected generation provider.
+ private string? ValidateProvider(ProviderSettings value) =>
+ value == ProviderSettings.NONE || value.UsedLLMProvider is LLMProviders.NONE
+ ? T("Please select a provider.")
+ : null;
+
+ /// Validates the free-form target language when Other is selected.
+ private string? ValidateCustomTargetLanguage(string language) =>
+ this.targetLanguage is CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language)
+ ? T("Please provide a custom target language.")
+ : null;
+
+ /// Validates the free-form protection level when Other is selected.
+ private string? ValidateCustomProtectionLevel(string level) =>
+ this.protectionLevel is VisualBriefingProtectionLevel.OTHER && string.IsNullOrWhiteSpace(level)
+ ? T("Please provide a custom protection level.")
+ : null;
+
+ /// Revalidates after a conditional Other field has been added or removed.
+ private Task ScheduleFormValidation()
+ {
+ this.formValidationPending = true;
+ this.StateHasChanged();
+
+ return Task.CompletedTask;
+ }
+
+ /// Adds one optional validation message.
+ private static void AddIssue(ICollection issues, string? issue)
+ {
+ if (!string.IsNullOrWhiteSpace(issue))
+ issues.Add(issue);
+ }
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs
index 73075d4e..6248ffc7 100644
--- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs
+++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs
@@ -178,6 +178,18 @@ public partial class VisualBriefingAssistant : MSGComponentBase
/// Stores incompatible validated content offered for rebuild continuation.
private Guid? reusableContentBuildId;
+ /// Owns MudBlazor validation for the selected briefing editor.
+ private MudForm? visualBriefingForm;
+
+ /// Stores whether all MudBlazor fields in the editor are currently valid.
+ private bool formIsValid;
+
+ /// Stores the current MudBlazor validation messages.
+ private string[] formIssues = [];
+
+ /// Requests validation after conditional form controls have rendered.
+ private bool formValidationPending;
+
///
/// Defines IsCurrentBusy for the visual briefing feature.
///
@@ -240,6 +252,12 @@ public partial class VisualBriefingAssistant : MSGComponentBase
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
+ if (this.formValidationPending && this.visualBriefingForm is not null)
+ {
+ this.formValidationPending = false;
+ await this.visualBriefingForm.Validate();
+ }
+
if (this.selectedBriefing is null || this.IsCurrentBusy)
return;
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 df84faec..7abca7f8 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
@@ -2301,6 +2301,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- The visual briefing settings could not be saved.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T131371789"] = "Die Einstellungen für das visuelle Briefing konnten nicht gespeichert werden."
+-- Please provide a custom target language.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1330607941"] = "Bitte geben Sie eine benutzerdefinierte Zielsprache an."
+
-- AI Studio cannot read this visual briefing. Its files may be incompatible or damaged.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T138425430"] = "AI Studio kann dieses visuelle Briefing nicht lesen. Die Dateien sind möglicherweise inkompatibel oder beschädigt."
@@ -2340,6 +2343,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- This briefing revision was already imported.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1732858483"] = "Diese Briefing-Revision wurde bereits importiert."
+-- Please select a provider.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1809312323"] = "Bitte wählen Sie einen Anbieter aus."
+
-- Cannot be opened
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1981873292"] = "Kann nicht geöffnet werden"
@@ -2454,6 +2460,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Export visual briefing
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3261790455"] = "Visuelles Briefing exportieren"
+-- The source '{0}' is no longer reachable. Restore or relink it.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3270802829"] = "Die Quelle „{0}“ ist nicht mehr erreichbar. Stelle sie wieder her oder verknüpfe sie erneut."
+
-- Could not open the visual briefing project folder.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3290777125"] = "Der Projektordner für das visuelle Briefing konnte nicht geöffnet werden."
@@ -2520,6 +2529,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Actions
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3865031940"] = "Aktionen"
+-- The transcript for '{0}' is missing or outdated. Transcribe the media source again.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3882911085"] = "Das Transkript für „{0}“ fehlt oder ist nicht mehr aktuell. Transkribieren Sie die Medienquelle erneut."
+
-- Export
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3898821075"] = "Exportieren"
@@ -2625,6 +2637,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Visual briefing preview
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T740269027"] = "Vorschau des visuellen Briefings"
+-- Please provide a custom protection level.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T799692129"] = "Bitte geben Sie eine benutzerdefinierte Schutzstufe an."
+
+-- Please provide a briefing name.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T902674552"] = "Bitte geben Sie einen Namen für das Briefing ein."
+
-- Build progress
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T909046610"] = "Erstellungsfortschritt"
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 1bdb9d24..edf3c54c 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
@@ -2301,6 +2301,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- The visual briefing settings could not be saved.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T131371789"] = "The visual briefing settings could not be saved."
+-- Please provide a custom target language.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1330607941"] = "Please provide a custom target language."
+
-- AI Studio cannot read this visual briefing. Its files may be incompatible or damaged.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T138425430"] = "AI Studio cannot read this visual briefing. Its files may be incompatible or damaged."
@@ -2340,6 +2343,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- This briefing revision was already imported.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1732858483"] = "This briefing revision was already imported."
+-- Please select a provider.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1809312323"] = "Please select a provider."
+
-- Cannot be opened
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1981873292"] = "Cannot be opened"
@@ -2454,6 +2460,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Export visual briefing
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3261790455"] = "Export visual briefing"
+-- The source '{0}' is no longer reachable. Restore or relink it.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3270802829"] = "The source '{0}' is no longer reachable. Restore or relink it."
+
-- Could not open the visual briefing project folder.
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3290777125"] = "Could not open the visual briefing project folder."
@@ -2520,6 +2529,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Actions
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3865031940"] = "Actions"
+-- The transcript for '{0}' is missing or outdated. Transcribe the media source again.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3882911085"] = "The transcript for '{0}' is missing or outdated. Transcribe the media source again."
+
-- Export
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3898821075"] = "Export"
@@ -2625,6 +2637,12 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::
-- Visual briefing preview
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T740269027"] = "Visual briefing preview"
+-- Please provide a custom protection level.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T799692129"] = "Please provide a custom protection level."
+
+-- Please provide a briefing name.
+UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T902674552"] = "Please provide a briefing name."
+
-- Build progress
UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T909046610"] = "Build progress"