From 070cbd01cb3a1580d9906638dfef78a8475ba4fa Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 2 Aug 2026 12:45:08 +0200 Subject: [PATCH] Extracted the visual briefing build progress into its own component --- .../Assistants/I18N/allTexts.lua | 96 +++--- .../VisualBriefingAssistant.razor | 57 +--- .../VisualBriefingAssistant.razor.Build.cs | 193 ------------ .../VisualBriefingAssistant.razor.cs | 9 - .../VisualBriefingBuildProgress.razor | 48 +++ .../VisualBriefingBuildProgress.razor.cs | 291 ++++++++++++++++++ .../VisualBriefingBuildRecord.cs | 30 +- .../plugin.lua | 96 +++--- .../plugin.lua | 96 +++--- 9 files changed, 499 insertions(+), 417 deletions(-) create mode 100644 app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor create mode 100644 app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor.cs diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index f70ad3ff..64313c27 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -2281,9 +2281,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Stop build UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1150899861"] = "Stop build" --- Running -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1160324588"] = "Running" - -- changed UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1177151643"] = "changed" @@ -2314,12 +2311,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Protection level UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1407518380"] = "Protection level" --- Failed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1434043348"] = "Failed" - --- Curate content -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1458812674"] = "Curate content" - -- Import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1463683828"] = "Import" @@ -2356,9 +2347,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Refresh status UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2035829510"] = "Refresh status" --- Analyze material -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T204596900"] = "Analyze material" - -- Unavailable visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2068761945"] = "Unavailable visual briefing" @@ -2368,9 +2356,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Documents, spreadsheets, images, audio, and video are considered as source context. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2228157968"] = "Documents, spreadsheets, images, audio, and video are considered as source context." --- Compile and save -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2332777012"] = "Compile and save" - -- Target language UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T237828418"] = "Target language" @@ -2431,15 +2416,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Enter a new name for this visual briefing. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2782842014"] = "Enter a new name for this visual briefing." --- Prepare sources -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2838352358"] = "Prepare sources" - -- Linked sources UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2857875074"] = "Linked sources" --- Action required -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2870470104"] = "Action required" - -- import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T288002260"] = "import" @@ -2452,9 +2431,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Opened the visual briefing project folder. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2964042492"] = "Opened the visual briefing project folder." --- Resume build -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3016389190"] = "Resume build" - -- Visual assets UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3226971402"] = "Visual assets" @@ -2470,9 +2446,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Could not open the visual briefing project folder. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3290777125"] = "Could not open the visual briefing project folder." --- {0} in progress... -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3291403991"] = "{0} in progress..." - -- The visual briefing was imported. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3348040099"] = "The visual briefing was imported." @@ -2503,15 +2476,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Author (optional) UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3529399925"] = "Author (optional)" --- Not started -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3531294543"] = "Not started" - -- The visual briefing project folder is not available. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3564616779"] = "The visual briefing project folder is not available." --- Plan briefing -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3576809882"] = "Plan briefing" - -- The visual briefing recompilation failed unexpectedly. Copy the technical details for support. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3614047460"] = "The visual briefing recompilation failed unexpectedly. Copy the technical details for support." @@ -2545,9 +2512,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Choose a different export location so the immutable briefing version is not overwritten. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3955270674"] = "Choose a different export location so the immutable briefing version is not overwritten." --- Completed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3968379570"] = "Completed" - -- Show source references UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3977003073"] = "Show source references" @@ -2557,9 +2521,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- unchanged UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4017131198"] = "unchanged" --- Design presentation -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4023219825"] = "Design presentation" - -- Create briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4028101071"] = "Create briefing" @@ -2575,9 +2536,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- transcript outdated UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4158473953"] = "transcript outdated" --- Canceled -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4165352378"] = "Canceled" - -- Large visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4198749440"] = "Large visual briefing" @@ -2605,9 +2563,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The briefing was recompiled with the current AI Studio version. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T453632597"] = "The briefing was recompiled with the current AI Studio version." --- Reused -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T48113973"] = "Reused" - -- The updated content no longer fits the current presentation. You can continue as a rebuild without another content model call. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T494870741"] = "The updated content no longer fits the current presentation. You can continue as a rebuild without another content model call." @@ -2650,9 +2605,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- 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" - -- Briefing settings UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T937201158"] = "Briefing settings" @@ -2665,6 +2617,54 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The media file changed. Transcribe it again with the configured transcription provider? UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T998394163"] = "The media file changed. Transcribe it again with the configured transcription provider?" +-- Running +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1160324588"] = "Running" + +-- Failed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1434043348"] = "Failed" + +-- Curate content +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1458812674"] = "Curate content" + +-- Analyze material +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T204596900"] = "Analyze material" + +-- Compile and save +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2332777012"] = "Compile and save" + +-- Prepare sources +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2838352358"] = "Prepare sources" + +-- Action required +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2870470104"] = "Action required" + +-- Resume build +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3016389190"] = "Resume build" + +-- {0} in progress... +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3291403991"] = "{0} in progress..." + +-- Not started +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3531294543"] = "Not started" + +-- Plan briefing +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3576809882"] = "Plan briefing" + +-- Completed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3968379570"] = "Completed" + +-- Design presentation +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4023219825"] = "Design presentation" + +-- Canceled +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4165352378"] = "Canceled" + +-- Reused +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T48113973"] = "Reused" + +-- Build progress +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T909046610"] = "Build progress" + -- System UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System" diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor index ed4423fb..5325d85e 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor @@ -245,62 +245,7 @@ @if (this.latestBuild is not null) { - string[] buildStepTitles = - [ - T("Prepare sources"), - T("Analyze material"), - T("Plan briefing"), - T("Curate content"), - T("Design presentation"), - T("Compile and save"), - ]; - - - - - @for (var index = 0; index < buildStepTitles.Length; index++) - { - var stepIndex = index; - - - @this.BuildGroupSummary(stepIndex) - @if (this.BuildGroupRunning(stepIndex)) - { - - @string.Format(T("{0} in progress..."), buildStepTitles[stepIndex]) - } - @if (this.BuildGroupStopped(stepIndex)) - { - - @this.BuildGroupFailure(stepIndex) - - @if (this.latestBuild.Status is VisualBriefingBuildStatus.FAILED or VisualBriefingBuildStatus.CANCELED) - { - - @T("Resume build") - - } - } - - - } - - - - + } @if (this.reusableContentBuildId is { } reusableBuildId) diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Build.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Build.cs index eede041a..141a25c7 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Build.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.Build.cs @@ -38,61 +38,6 @@ public partial class VisualBriefingAssistant this.selectedBriefing?.Sources.Any(source => source.Status is VisualBriefingSourceStatus.UNREACHABLE or VisualBriefingSourceStatus.TRANSCRIPT_OUTDATED) == true; - /// Gets the active build stepper index. - private int BuildStepperIndex - { - get - { - if (this.latestBuild is null) - return 0; - - var groups = BuildStageGroups(); - for (var index = 0; index < groups.Length; index++) - { - var statuses = groups[index].Select(this.StageStatus).ToArray(); - if (statuses.Any(status => status is VisualBriefingBuildStageStatus.RUNNING or - VisualBriefingBuildStageStatus.FAILED or VisualBriefingBuildStageStatus.CANCELED)) - return index; - - if (statuses.Any(status => status is VisualBriefingBuildStageStatus.NOT_STARTED)) - return index; - } - - return groups.Length - 1; - } - } - - /// - /// Gets the localized collapsed build-progress summary. - /// - private string BuildProgressTitle - { - get - { - var title = this.latestBuild?.Status switch - { - VisualBriefingBuildStatus.COMPLETED => $"{T("Build progress")} · {T("Completed")}", - VisualBriefingBuildStatus.FAILED => $"{T("Build progress")} · {T("Failed")}", - VisualBriefingBuildStatus.CANCELED => $"{T("Build progress")} · {T("Canceled")}", - VisualBriefingBuildStatus.AWAITING_REBUILD => $"{T("Build progress")} · {T("Action required")}", - - _ => $"{T("Build progress")} · {T("Running")}", - }; - - var duration = this.CalculateBuildDuration(this.latestBuild?.Stages ?? []); - return duration > TimeSpan.Zero ? $"{title} · {FormatBuildDuration(duration)}" : title; - } - } - - /// - /// Keeps the status stepper informational while allowing actions inside the active step. - /// - private static Task PreventBuildStepperInteractionAsync(StepperInteractionEventArgs args) - { - args.Cancel = true; - return Task.CompletedTask; - } - /// /// Defines GenerateAsync for the visual briefing feature. /// @@ -358,34 +303,10 @@ public partial class VisualBriefingAssistant return; this.latestBuild = this.BuildProgressService.GetLatest(briefingId); - this.buildDurationReferenceUtc = DateTimeOffset.UtcNow; this.StateHasChanged(); }); } - /// - /// Refreshes live build durations at most once per second while a selected stage is running. - /// - private async Task MonitorBuildDurationAsync(CancellationToken token) - { - using var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)); - try - { - while (await timer.WaitForNextTickAsync(token)) - await this.InvokeAsync(() => - { - if (this.latestBuild?.Stages.Any(stage => stage.Status is VisualBriefingBuildStageStatus.RUNNING) != true) - return; - - this.buildDurationReferenceUtc = DateTimeOffset.UtcNow; - this.StateHasChanged(); - }); - } - catch (OperationCanceledException) when (token.IsCancellationRequested) - { - } - } - /// /// Resumes the latest failed build with its persisted operation inputs. /// @@ -418,120 +339,6 @@ public partial class VisualBriefingAssistant this.StateHasChanged(); } - /// - /// Gets the six UI groups for the eight durable build stages. - /// - private static VisualBriefingBuildStage[][] BuildStageGroups() => - [ - [VisualBriefingBuildStage.SOURCE_PREPARATION], - [VisualBriefingBuildStage.EVIDENCE], - [VisualBriefingBuildStage.PLAN], - [VisualBriefingBuildStage.CONTENT], - [VisualBriefingBuildStage.DESIGN], - [VisualBriefingBuildStage.COMPILATION, VisualBriefingBuildStage.ASSEMBLY, VisualBriefingBuildStage.COMMIT], - ]; - - /// - /// Gets a persistent stage status, defaulting to not started. - /// - private VisualBriefingBuildStageStatus StageStatus(VisualBriefingBuildStage stage) => - this.latestBuild?.Stages.FirstOrDefault(item => item.Stage == stage)?.Status ?? - VisualBriefingBuildStageStatus.NOT_STARTED; - - /// - /// Gets whether one UI group completed or was reused. - /// - private bool BuildGroupCompleted(int index) => - BuildStageGroups()[index].All(stage => - this.StageStatus(stage) is VisualBriefingBuildStageStatus.COMPLETED or VisualBriefingBuildStageStatus.SKIPPED); - - /// - /// Gets whether one UI group failed. - /// - private bool BuildGroupFailed(int index) => - BuildStageGroups()[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.FAILED); - - /// - /// Gets whether one UI group was canceled. - /// - private bool BuildGroupCanceled(int index) => - BuildStageGroups()[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.CANCELED); - - /// - /// Gets whether one UI group stopped with a failure or cancellation. - /// - private bool BuildGroupStopped(int index) => - this.BuildGroupFailed(index) || this.BuildGroupCanceled(index); - - /// - /// Gets whether one UI group is active. - /// - private bool BuildGroupRunning(int index) => - BuildStageGroups()[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.RUNNING); - - /// - /// Formats a safe localized status summary and duration. - /// - private string BuildGroupSummary(int index) - { - if (this.latestBuild is null) - return T("Not started"); - - var records = BuildStageGroups()[index] - .Select(stage => this.latestBuild.Stages.FirstOrDefault(item => item.Stage == stage)) - .Where(record => record is not null) - .Cast() - .ToArray(); - - var status = this.BuildGroupRunning(index) - ? T("Running") - : this.BuildGroupFailed(index) - ? T("Failed") - : this.BuildGroupCanceled(index) - ? T("Canceled") - : records.Length > 0 && records.All(record => record.Status is VisualBriefingBuildStageStatus.SKIPPED) - ? T("Reused") - : this.BuildGroupCompleted(index) - ? T("Completed") - : T("Not started"); - - var duration = this.CalculateBuildDuration(records); - return duration > TimeSpan.Zero ? $"{status} · {FormatBuildDuration(duration)}" : status; - } - - /// - /// Calculates active processing time without counting reused stages or time between resume attempts. - /// - private TimeSpan CalculateBuildDuration(IEnumerable records) => records - .Where(record => record.StartedAtUtc is not null && record.Status is not VisualBriefingBuildStageStatus.SKIPPED) - .Aggregate(TimeSpan.Zero, (total, record) => total + this.CalculateStageDuration(record)); - - /// - /// Calculates one stage duration against the shared live timestamp. - /// - private TimeSpan CalculateStageDuration(VisualBriefingBuildStageRecord record) - { - var finishedAtUtc = record.Status is VisualBriefingBuildStageStatus.RUNNING ? this.buildDurationReferenceUtc : record.FinishedAtUtc; - if (record.StartedAtUtc is null || finishedAtUtc is null) - return TimeSpan.Zero; - - var duration = finishedAtUtc.Value - record.StartedAtUtc.Value; - return duration > TimeSpan.Zero ? duration : TimeSpan.Zero; - } - - /// - /// Formats a build duration using the current UI culture. - /// - private static string FormatBuildDuration(TimeSpan duration) => $"{duration.TotalSeconds:0.0} s"; - - /// - /// Gets the safe failure reason for a UI group. - /// - private string BuildGroupFailure(int index) => - BuildStageGroups()[index] - .Select(stage => this.latestBuild?.Stages.FirstOrDefault(item => item.Stage == stage)?.Failure) - .FirstOrDefault(failure => failure is not null)?.UserMessage ?? this.latestBuild?.Failure?.UserMessage ?? string.Empty; - /// /// Defines CopyTechnicalDetailsAsync for the visual briefing feature. /// diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs index f308e298..06c14ffc 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingAssistant.razor.cs @@ -91,9 +91,6 @@ public partial class VisualBriefingAssistant : MSGComponentBase /// Stops the background source-status monitor. private readonly CancellationTokenSource sourceMonitorCancellation = new(); - /// Stops the live build-duration monitor. - private readonly CancellationTokenSource buildDurationMonitorCancellation = new(); - /// Stores available and recoverable projects ordered by most recent modification. private IReadOnlyList projects = []; @@ -172,9 +169,6 @@ public partial class VisualBriefingAssistant : MSGComponentBase /// Stores the latest persistent or live build shown in the stepper. private VisualBriefingBuildRecord? latestBuild; - /// Stores the shared timestamp used to render consistent live build durations. - private DateTimeOffset buildDurationReferenceUtc = DateTimeOffset.UtcNow; - /// Stores incompatible validated content offered for rebuild continuation. private Guid? reusableContentBuildId; @@ -220,7 +214,6 @@ public partial class VisualBriefingAssistant : MSGComponentBase this.BuildProgressService.Changed += this.BuildProgressChanged; await this.ReloadListAsync(); _ = this.MonitorSourceStatusAsync(this.sourceMonitorCancellation.Token); - _ = this.MonitorBuildDurationAsync(this.buildDurationMonitorCancellation.Token); var deferredInstruction = this.MessageBus.CheckDeferredMessages(Event.SEND_TO_VISUAL_BRIEFING_ASSISTANT).FirstOrDefault(); if (!string.IsNullOrWhiteSpace(deferredInstruction)) @@ -243,8 +236,6 @@ public partial class VisualBriefingAssistant : MSGComponentBase this.isDisposed = true; this.sourceMonitorCancellation.Cancel(); this.sourceMonitorCancellation.Dispose(); - this.buildDurationMonitorCancellation.Cancel(); - this.buildDurationMonitorCancellation.Dispose(); this.MediaTranscriptionService.StateChanged -= this.MediaStateChanged; this.BuildProgressService.Changed -= this.BuildProgressChanged; base.DisposeResources(); diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor new file mode 100644 index 00000000..35c1ede3 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor @@ -0,0 +1,48 @@ +@inherits MSGComponentBase + + + + + + @for (var index = 0; index < STAGE_GROUPS.Length; index++) + { + var stepIndex = index; + + + @this.BuildGroupSummary(stepIndex) + @if (this.BuildGroupRunning(stepIndex)) + { + + @string.Format(T("{0} in progress..."), this.StepTitle(stepIndex)) + } + + @if (this.BuildGroupStopped(stepIndex)) + { + + @this.BuildGroupFailure(stepIndex) + + + @if (this.Build?.Status is VisualBriefingBuildStatus.FAILED or VisualBriefingBuildStatus.CANCELED) + { + + @T("Resume build") + + } + } + + + } + + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor.cs new file mode 100644 index 00000000..c99e0148 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildProgress.razor.cs @@ -0,0 +1,291 @@ +using AIStudio.Components; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Assistants.VisualBriefing; + +/// +/// Renders the staged progress, durations, and failures of one visual briefing build. +/// +/// +/// The component derives everything it shows from alone. It also owns the timer +/// that keeps the duration of a running stage current, so a build in progress re-renders this panel +/// once per second instead of the entire assistant page. +/// +public partial class VisualBriefingBuildProgress : MSGComponentBase +{ + /// + /// Gets or sets the build whose progress is displayed. + /// + [Parameter, EditorRequired] + public VisualBriefingBuildRecord? Build { get; set; } + + /// + /// Gets or sets whether the resume action is blocked because other work is running. + /// + [Parameter] + public bool Disabled { get; set; } + + /// + /// Gets or sets the callback raised when the user resumes a failed or canceled build. + /// + [Parameter] + public EventCallback OnResume { get; set; } + + /// + /// The six UI groups covering the eight durable build stages. + /// + private static readonly VisualBriefingBuildStage[][] STAGE_GROUPS = + [ + [VisualBriefingBuildStage.SOURCE_PREPARATION], + [VisualBriefingBuildStage.EVIDENCE], + [VisualBriefingBuildStage.PLAN], + [VisualBriefingBuildStage.CONTENT], + [VisualBriefingBuildStage.DESIGN], + [VisualBriefingBuildStage.COMPILATION, VisualBriefingBuildStage.ASSEMBLY, VisualBriefingBuildStage.COMMIT], + ]; + + /// Stops the live build-duration monitor. + private readonly CancellationTokenSource durationMonitorCancellation = new(); + + /// Stores the shared timestamp used to render consistent live build durations. + private DateTimeOffset durationReferenceUtc = DateTimeOffset.UtcNow; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + _ = this.MonitorBuildDurationAsync(this.durationMonitorCancellation.Token); + } + + protected override void OnParametersSet() + { + // The parent re-renders us whenever it received a progress update, so this is the moment the + // durations of running stages must be measured against again. + this.durationReferenceUtc = DateTimeOffset.UtcNow; + } + + #endregion + + #region Overrides of MSGComponentBase + + protected override void DisposeResources() + { + this.durationMonitorCancellation.Cancel(); + this.durationMonitorCancellation.Dispose(); + base.DisposeResources(); + } + + #endregion + + /// + /// Refreshes live build durations at most once per second while a stage is running. + /// + /// The token that stops the monitor. + /// A task that completes once the monitor was stopped. + private async Task MonitorBuildDurationAsync(CancellationToken token) + { + using var timer = new PeriodicTimer(TimeSpan.FromSeconds(1)); + try + { + while (await timer.WaitForNextTickAsync(token)) + await this.InvokeAsync(() => + { + if (this.Build?.Stages.Any(stage => stage.Status is VisualBriefingBuildStageStatus.RUNNING) != true) + return; + + this.durationReferenceUtc = DateTimeOffset.UtcNow; + this.StateHasChanged(); + }); + } + catch (OperationCanceledException) when (token.IsCancellationRequested) + { + } + } + + /// + /// Gets the localized title of one build step. + /// + /// The zero-based index of the step. + /// The localized step title. + private string StepTitle(int index) => index switch + { + 0 => T("Prepare sources"), + 1 => T("Analyze material"), + 2 => T("Plan briefing"), + 3 => T("Curate content"), + 4 => T("Design presentation"), + + _ => T("Compile and save"), + }; + + /// Gets the active build stepper index. + private int BuildStepperIndex + { + get + { + for (var index = 0; index < STAGE_GROUPS.Length; index++) + { + var statuses = STAGE_GROUPS[index].Select(this.StageStatus).ToArray(); + if (statuses.Any(status => status is VisualBriefingBuildStageStatus.RUNNING or VisualBriefingBuildStageStatus.FAILED or VisualBriefingBuildStageStatus.CANCELED)) + return index; + + if (statuses.Any(status => status is VisualBriefingBuildStageStatus.NOT_STARTED)) + return index; + } + + return STAGE_GROUPS.Length - 1; + } + } + + /// + /// Gets the localized collapsed build-progress summary. + /// + private string BuildProgressTitle + { + get + { + if(this.Build is null) + return $"{T("Build progress")} · {T("Running")}"; + + var title = this.Build.Status switch + { + VisualBriefingBuildStatus.COMPLETED => $"{T("Build progress")} · {T("Completed")}", + VisualBriefingBuildStatus.FAILED => $"{T("Build progress")} · {T("Failed")}", + VisualBriefingBuildStatus.CANCELED => $"{T("Build progress")} · {T("Canceled")}", + VisualBriefingBuildStatus.AWAITING_REBUILD => $"{T("Build progress")} · {T("Action required")}", + + _ => $"{T("Build progress")} · {T("Running")}", + }; + + var duration = this.CalculateBuildDuration(this.Build.Stages); + return duration > TimeSpan.Zero ? $"{title} · {FormatBuildDuration(duration)}" : title; + } + } + + /// + /// Keeps the status stepper informational while allowing actions inside the active step. + /// + /// The interaction to cancel. + /// A completed task. + private static Task PreventBuildStepperInteractionAsync(StepperInteractionEventArgs args) + { + args.Cancel = true; + return Task.CompletedTask; + } + + /// + /// Gets a persistent stage status, defaulting to not started. + /// + /// The stage to look up. + /// The stage status. + private VisualBriefingBuildStageStatus StageStatus(VisualBriefingBuildStage stage) => this.Build?.Stages.FirstOrDefault(item => item.Stage == stage)?.Status ?? VisualBriefingBuildStageStatus.NOT_STARTED; + + /// + /// Gets whether one UI group completed or was reused. + /// + /// The zero-based index of the group. + /// true when the group finished. + private bool BuildGroupCompleted(int index) => STAGE_GROUPS[index].All(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.COMPLETED or VisualBriefingBuildStageStatus.SKIPPED); + + /// + /// Gets whether one UI group failed. + /// + /// The zero-based index of the group. + /// true when the group failed. + private bool BuildGroupFailed(int index) => STAGE_GROUPS[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.FAILED); + + /// + /// Gets whether one UI group was canceled. + /// + /// The zero-based index of the group. + /// true when the group was canceled. + private bool BuildGroupCanceled(int index) => STAGE_GROUPS[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.CANCELED); + + /// + /// Gets whether one UI group stopped with a failure or cancellation. + /// + /// The zero-based index of the group. + /// true when the group stopped. + private bool BuildGroupStopped(int index) => this.BuildGroupFailed(index) || this.BuildGroupCanceled(index); + + /// + /// Gets whether one UI group is active. + /// + /// The zero-based index of the group. + /// true when the group is running. + private bool BuildGroupRunning(int index) => STAGE_GROUPS[index].Any(stage => this.StageStatus(stage) is VisualBriefingBuildStageStatus.RUNNING); + + /// + /// Formats a safe localized status summary and duration. + /// + /// The zero-based index of the group. + /// The localized summary. + private string BuildGroupSummary(int index) + { + if(this.Build is null) + return T("Not started"); + + var records = STAGE_GROUPS[index] + .Select(stage => this.Build.Stages.FirstOrDefault(item => item.Stage == stage)) + .Where(record => record is not null) + .Cast() + .ToArray(); + + var status = this.BuildGroupRunning(index) + ? T("Running") + : this.BuildGroupFailed(index) + ? T("Failed") + : this.BuildGroupCanceled(index) + ? T("Canceled") + : records.Length > 0 && records.All(record => record.Status is VisualBriefingBuildStageStatus.SKIPPED) + ? T("Reused") + : this.BuildGroupCompleted(index) + ? T("Completed") + : T("Not started"); + + var duration = this.CalculateBuildDuration(records); + return duration > TimeSpan.Zero ? $"{status} · {FormatBuildDuration(duration)}" : status; + } + + /// + /// Calculates active processing time without counting reused stages or time between resume attempts. + /// + /// The stage records to aggregate. + /// The aggregated duration. + private TimeSpan CalculateBuildDuration(IEnumerable records) => records + .Where(record => record.StartedAtUtc is not null && record.Status is not VisualBriefingBuildStageStatus.SKIPPED) + .Aggregate(TimeSpan.Zero, (total, record) => total + this.CalculateStageDuration(record)); + + /// + /// Calculates one stage duration against the shared live timestamp. + /// + /// The stage record to measure. + /// The stage duration. + private TimeSpan CalculateStageDuration(VisualBriefingBuildStageRecord record) + { + var finishedAtUtc = record.Status is VisualBriefingBuildStageStatus.RUNNING ? this.durationReferenceUtc : record.FinishedAtUtc; + if (record.StartedAtUtc is null || finishedAtUtc is null) + return TimeSpan.Zero; + + var duration = finishedAtUtc.Value - record.StartedAtUtc.Value; + return duration > TimeSpan.Zero ? duration : TimeSpan.Zero; + } + + /// + /// Formats a build duration in seconds using the current culture. + /// + /// The duration to format. + /// The formatted duration. + private static string FormatBuildDuration(TimeSpan duration) => $"{duration.TotalSeconds:0.0} s"; + + /// + /// Gets the safe failure reason for a UI group. + /// + /// The zero-based index of the group. + /// The user-facing failure message. + private string BuildGroupFailure(int index) => this.Build is null ? string.Empty : STAGE_GROUPS[index] + .Select(stage => this.Build.Stages.FirstOrDefault(item => item.Stage == stage)?.Failure) + .FirstOrDefault(failure => failure is not null)?.UserMessage ?? this.Build.Failure?.UserMessage ?? string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildRecord.cs b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildRecord.cs index 290834c1..c7b988b5 100644 --- a/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildRecord.cs +++ b/app/MindWork AI Studio/Assistants/VisualBriefing/VisualBriefingBuildRecord.cs @@ -8,12 +8,12 @@ public sealed class VisualBriefingBuildRecord /// /// Gets or sets the build-record schema version. /// - public int BuildVersion { get; set; } = VisualBriefingVersions.BUILD; + public int BuildVersion { get; init; } = VisualBriefingVersions.BUILD; /// /// Gets or sets the build identifier. /// - public Guid BuildId { get; set; } + public Guid BuildId { get; init; } /// /// Gets or sets the operation identifier shown in diagnostics and logs. @@ -23,17 +23,17 @@ public sealed class VisualBriefingBuildRecord /// /// Gets or sets the owning briefing identifier. /// - public Guid BriefingId { get; set; } + public Guid BriefingId { get; init; } /// /// Gets or sets the requested edit mode. /// - public VisualBriefingEditMode Mode { get; set; } + public VisualBriefingEditMode Mode { get; init; } /// /// Gets or sets the parent revision identifier. /// - public Guid? ParentRevisionId { get; set; } + public Guid? ParentRevisionId { get; init; } /// /// Gets or sets the local revision instruction used for recovery. @@ -48,7 +48,7 @@ public sealed class VisualBriefingBuildRecord /// /// Gets or sets durable stage progress. /// - public List Stages { get; set; } = []; + public List Stages { get; init; } = []; /// /// Gets or sets the content artifact identifier. @@ -83,47 +83,47 @@ public sealed class VisualBriefingBuildRecord /// /// Gets or sets the complete safe input fingerprint. /// - public string InputFingerprint { get; set; } = string.Empty; + public string InputFingerprint { get; init; } = string.Empty; /// /// Gets or sets the source and transcript fingerprint. /// - public string SourceFingerprint { get; set; } = string.Empty; + public string SourceFingerprint { get; init; } = string.Empty; /// /// Gets or sets the content prompt contract version. /// - public int ContentContractVersion { get; set; } = VisualBriefingVersions.CONTENT_CONTRACT; + public int ContentContractVersion { get; init; } = VisualBriefingVersions.CONTENT_CONTRACT; /// /// Gets or sets the evidence prompt contract version. /// - public int EvidenceContractVersion { get; set; } = VisualBriefingVersions.EVIDENCE_CONTRACT; + public int EvidenceContractVersion { get; init; } = VisualBriefingVersions.EVIDENCE_CONTRACT; /// /// Gets or sets the plan prompt contract version. /// - public int PlanContractVersion { get; set; } = VisualBriefingVersions.PLAN_CONTRACT; + public int PlanContractVersion { get; init; } = VisualBriefingVersions.PLAN_CONTRACT; /// /// Gets or sets the design prompt contract version. /// - public int DesignContractVersion { get; set; } = VisualBriefingVersions.DESIGN_CONTRACT; + public int DesignContractVersion { get; init; } = VisualBriefingVersions.DESIGN_CONTRACT; /// /// Gets or sets the selected provider family. /// - public string ProviderFamily { get; set; } = string.Empty; + public string ProviderFamily { get; init; } = string.Empty; /// /// Gets or sets the selected model name. /// - public string Model { get; set; } = string.Empty; + public string Model { get; init; } = string.Empty; /// /// Gets or sets the build creation time. /// - public DateTimeOffset CreatedAtUtc { get; set; } + public DateTimeOffset CreatedAtUtc { get; init; } /// /// Gets or sets the most recent build update time. 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 d931ab66..f46ff72c 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 @@ -2283,9 +2283,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Stop build UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1150899861"] = "Erstellung stoppen" --- Running -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1160324588"] = "Wird ausgeführt" - -- changed UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1177151643"] = "geändert" @@ -2316,12 +2313,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Protection level UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1407518380"] = "Schutzstufe" --- Failed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1434043348"] = "fehlgeschlagen" - --- Curate content -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1458812674"] = "Inhalte kuratieren" - -- Import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1463683828"] = "Importieren" @@ -2358,9 +2349,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Refresh status UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2035829510"] = "Status aktualisieren" --- Analyze material -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T204596900"] = "Material analysieren" - -- Unavailable visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2068761945"] = "Nicht verfügbares visuelles Briefing" @@ -2370,9 +2358,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Documents, spreadsheets, images, audio, and video are considered as source context. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2228157968"] = "Dokumente, Tabellenkalkulationen, Bilder, Audio- und Videodateien werden als Ausgangsmaterial berücksichtigt." --- Compile and save -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2332777012"] = "Kompilieren und speichern" - -- Target language UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T237828418"] = "Zielsprache" @@ -2433,15 +2418,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Enter a new name for this visual briefing. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2782842014"] = "Geben Sie einen neuen Namen für dieses visuelle Briefing ein." --- Prepare sources -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2838352358"] = "Ausgangsmaterial vorbereiten" - -- Linked sources UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2857875074"] = "Verknüpfte Quellen" --- Action required -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2870470104"] = "Handlung erforderlich" - -- import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T288002260"] = "Importieren" @@ -2454,9 +2433,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Opened the visual briefing project folder. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2964042492"] = "Projektordner für das visuelle Briefing öffnen." --- Resume build -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3016389190"] = "Erstellung fortsetzen" - -- Visual assets UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3226971402"] = "Visuelle Elemente" @@ -2472,9 +2448,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- 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." --- {0} in progress... -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3291403991"] = "{0} wird verarbeitet ..." - -- The visual briefing was imported. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3348040099"] = "Das visuelle Briefing wurde importiert." @@ -2505,15 +2478,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Author (optional) UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3529399925"] = "Autor/in (optional)" --- Not started -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3531294543"] = "Nicht gestartet" - -- The visual briefing project folder is not available. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3564616779"] = "Der Projektordner für das visuelle Briefing ist nicht verfügbar." --- Plan briefing -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3576809882"] = "Briefing planen" - -- The visual briefing recompilation failed unexpectedly. Copy the technical details for support. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3614047460"] = "Die erneute Erstellung des visuellen Briefings ist unerwartet fehlgeschlagen. Kopieren Sie die technischen Details für den Support." @@ -2547,9 +2514,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Choose a different export location so the immutable briefing version is not overwritten. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3955270674"] = "Wähle einen anderen Ort für den Export, damit die unveränderliche Briefing-Version nicht überschrieben wird." --- Completed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3968379570"] = "Abgeschlossen" - -- Show source references UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3977003073"] = "Quellverweise anzeigen" @@ -2559,9 +2523,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- unchanged UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4017131198"] = "unverändert" --- Design presentation -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4023219825"] = "Präsentation gestalten" - -- Create briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4028101071"] = "Briefing erstellen" @@ -2577,9 +2538,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- transcript outdated UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4158473953"] = "Transkript veraltet" --- Canceled -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4165352378"] = "Abgebrochen" - -- Large visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4198749440"] = "Umfassendes visuelles Briefing" @@ -2607,9 +2565,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The briefing was recompiled with the current AI Studio version. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T453632597"] = "Das Briefing wurde mit der aktuellen AI Studio-Version neu kompiliert." --- Reused -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T48113973"] = "Wiederverwendet" - -- The updated content no longer fits the current presentation. You can continue as a rebuild without another content model call. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T494870741"] = "Die aktualisierten Inhalte passen nicht mehr in die aktuelle Präsentation. Sie können ohne weiteren Aufruf des KI-Modells mit einer Neuerstellung fortfahren." @@ -2652,9 +2607,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- 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" - -- Briefing settings UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T937201158"] = "Briefing-Einstellungen" @@ -2667,6 +2619,54 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The media file changed. Transcribe it again with the configured transcription provider? UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T998394163"] = "Die Mediendatei wurde geändert. Mit dem konfigurierten Transkriptionsanbieter erneut transkribieren?" +-- Running +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1160324588"] = "Wird ausgeführt" + +-- Failed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1434043348"] = "Fehlgeschlagen" + +-- Curate content +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1458812674"] = "Inhalte kuratieren" + +-- Analyze material +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T204596900"] = "Material analysieren" + +-- Compile and save +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2332777012"] = "Kompilieren und speichern" + +-- Prepare sources +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2838352358"] = "Quellen vorbereiten" + +-- Action required +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2870470104"] = "Aktion erforderlich" + +-- Resume build +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3016389190"] = "Erstellung fortsetzen" + +-- {0} in progress... +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3291403991"] = "{0} wird bearbeitet …" + +-- Not started +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3531294543"] = "Nicht gestartet" + +-- Plan briefing +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3576809882"] = "Briefing planen" + +-- Completed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3968379570"] = "Abgeschlossen" + +-- Design presentation +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4023219825"] = "Präsentation gestalten" + +-- Canceled +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4165352378"] = "Abgebrochen" + +-- Reused +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T48113973"] = "Wiederverwendet" + +-- Build progress +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T909046610"] = "Erstellungsfortschritt" + -- System UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System" 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 84c7892a..0579dfb8 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 @@ -2283,9 +2283,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Stop build UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1150899861"] = "Stop build" --- Running -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1160324588"] = "Running" - -- changed UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1177151643"] = "changed" @@ -2316,12 +2313,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Protection level UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1407518380"] = "Protection level" --- Failed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1434043348"] = "Failed" - --- Curate content -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1458812674"] = "Curate content" - -- Import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T1463683828"] = "Import" @@ -2358,9 +2349,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Refresh status UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2035829510"] = "Refresh status" --- Analyze material -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T204596900"] = "Analyze material" - -- Unavailable visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2068761945"] = "Unavailable visual briefing" @@ -2370,9 +2358,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Documents, spreadsheets, images, audio, and video are considered as source context. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2228157968"] = "Documents, spreadsheets, images, audio, and video are considered as source context." --- Compile and save -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2332777012"] = "Compile and save" - -- Target language UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T237828418"] = "Target language" @@ -2433,15 +2418,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Enter a new name for this visual briefing. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2782842014"] = "Enter a new name for this visual briefing." --- Prepare sources -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2838352358"] = "Prepare sources" - -- Linked sources UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2857875074"] = "Linked sources" --- Action required -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2870470104"] = "Action required" - -- import UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T288002260"] = "import" @@ -2454,9 +2433,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Opened the visual briefing project folder. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T2964042492"] = "Opened the visual briefing project folder." --- Resume build -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3016389190"] = "Resume build" - -- Visual assets UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3226971402"] = "Visual assets" @@ -2472,9 +2448,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Could not open the visual briefing project folder. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3290777125"] = "Could not open the visual briefing project folder." --- {0} in progress... -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3291403991"] = "{0} in progress..." - -- The visual briefing was imported. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3348040099"] = "The visual briefing was imported." @@ -2505,15 +2478,9 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Author (optional) UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3529399925"] = "Author (optional)" --- Not started -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3531294543"] = "Not started" - -- The visual briefing project folder is not available. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3564616779"] = "The visual briefing project folder is not available." --- Plan briefing -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3576809882"] = "Plan briefing" - -- The visual briefing recompilation failed unexpectedly. Copy the technical details for support. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3614047460"] = "The visual briefing recompilation failed unexpectedly. Copy the technical details for support." @@ -2547,9 +2514,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- Choose a different export location so the immutable briefing version is not overwritten. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3955270674"] = "Choose a different export location so the immutable briefing version is not overwritten." --- Completed -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3968379570"] = "Completed" - -- Show source references UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T3977003073"] = "Show source references" @@ -2559,9 +2523,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- unchanged UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4017131198"] = "unchanged" --- Design presentation -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4023219825"] = "Design presentation" - -- Create briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4028101071"] = "Create briefing" @@ -2577,9 +2538,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- transcript outdated UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4158473953"] = "transcript outdated" --- Canceled -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4165352378"] = "Canceled" - -- Large visual briefing UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T4198749440"] = "Large visual briefing" @@ -2607,9 +2565,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The briefing was recompiled with the current AI Studio version. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T453632597"] = "The briefing was recompiled with the current AI Studio version." --- Reused -UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T48113973"] = "Reused" - -- The updated content no longer fits the current presentation. You can continue as a rebuild without another content model call. UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T494870741"] = "The updated content no longer fits the current presentation. You can continue as a rebuild without another content model call." @@ -2652,9 +2607,6 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- 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" - -- Briefing settings UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T937201158"] = "Briefing settings" @@ -2667,6 +2619,54 @@ UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT:: -- The media file changed. Transcribe it again with the configured transcription provider? UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGASSISTANT::T998394163"] = "The media file changed. Transcribe it again with the configured transcription provider?" +-- Running +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1160324588"] = "Running" + +-- Failed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1434043348"] = "Failed" + +-- Curate content +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T1458812674"] = "Curate content" + +-- Analyze material +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T204596900"] = "Analyze material" + +-- Compile and save +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2332777012"] = "Compile and save" + +-- Prepare sources +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2838352358"] = "Prepare sources" + +-- Action required +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T2870470104"] = "Action required" + +-- Resume build +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3016389190"] = "Resume build" + +-- {0} in progress... +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3291403991"] = "{0} in progress..." + +-- Not started +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3531294543"] = "Not started" + +-- Plan briefing +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3576809882"] = "Plan briefing" + +-- Completed +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T3968379570"] = "Completed" + +-- Design presentation +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4023219825"] = "Design presentation" + +-- Canceled +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T4165352378"] = "Canceled" + +-- Reused +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T48113973"] = "Reused" + +-- Build progress +UI_TEXT_CONTENT["AISTUDIO::ASSISTANTS::VISUALBRIEFING::VISUALBRIEFINGBUILDPROGRESS::T909046610"] = "Build progress" + -- System UI_TEXT_CONTENT["AISTUDIO::CHAT::CHATROLEEXTENSIONS::T2402387132"] = "System"