From 9a96f47d51734392727c472bd8d91279507b3c7c Mon Sep 17 00:00:00 2001 From: Peer Hogeterp <20603780+peerschuett@users.noreply.github.com> Date: Tue, 22 Sep 2026 15:30:18 +0200 Subject: [PATCH] Only do it for html --- .../Tools/PlainFileExport.cs | 26 +++++++------------ .../wwwroot/changelog/v26.9.1.md | 2 +- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/app/MindWork AI Studio/Tools/PlainFileExport.cs b/app/MindWork AI Studio/Tools/PlainFileExport.cs index e1edc61e..d248b49f 100644 --- a/app/MindWork AI Studio/Tools/PlainFileExport.cs +++ b/app/MindWork AI Studio/Tools/PlainFileExport.cs @@ -17,27 +17,19 @@ public static class PlainFileExport private static string TB(string fallbackEn) => I18N.I.T(fallbackEn, typeof(PlainFileExport).Namespace, nameof(PlainFileExport)); /// - /// Reads a complete HTML or LaTeX source file out of a message which consists only of the - /// matching fenced code block. + /// Reads a complete HTML source file out of a message which consists only of a matching fenced + /// code block. /// /// The Markdown text the model wrote. - /// The source format to extract. + /// The selected export format. /// The contents inside the fence, or an empty string when the message is /// not a standalone source file. - /// True, when the message is a complete source file for the selected format. + /// True, when the message is a complete HTML source file. internal static bool TryExtractStandaloneSource(string markdown, FileExportFormat format, out string source) { source = string.Empty; - var languages = format switch - { - FileExportFormat.HTML => new[] { "html" }, - FileExportFormat.LATEX => new[] { "latex", "tex" }, - - _ => [], - }; - - if (languages.Length is 0 || string.IsNullOrWhiteSpace(markdown)) + if (format is not FileExportFormat.HTML || string.IsNullOrWhiteSpace(markdown)) return false; var document = Markdig.Markdown.Parse(markdown, Markdown.SAFE_MARKDOWN_PIPELINE); @@ -45,7 +37,7 @@ public static class PlainFileExport return false; var language = block.Info?.Trim(); - if (!languages.Any(candidate => string.Equals(candidate, language, StringComparison.OrdinalIgnoreCase))) + if (!string.Equals("html", language, StringComparison.OrdinalIgnoreCase)) return false; source = block.Lines.ToString(); @@ -224,16 +216,16 @@ public static class PlainFileExport } /// - /// Writes HTML or LaTeX source authored by the model without converting it. + /// Writes HTML source authored by the model without converting it. /// /// The Rust service, used for the save dialog. /// The title of the save dialog. - /// The matching HTML or LaTeX format. + /// The HTML format. /// The source text inside the model's code fence. /// True, when the file was written. internal static async Task ToSourceFile(RustService rustService, string dialogTitle, FileExportFormat format, string source) { - if (format is not (FileExportFormat.HTML or FileExportFormat.LATEX) || format.ToFileTypeFilter() is not { } fileTypeFilter) + if (format is not FileExportFormat.HTML || format.ToFileTypeFilter() is not { } fileTypeFilter) throw new ArgumentOutOfRangeException(nameof(format), format, "AI Studio cannot write this format as an authored source file."); return await WriteFile(rustService, dialogTitle, format, source, fileTypeFilter); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v26.9.1.md b/app/MindWork AI Studio/wwwroot/changelog/v26.9.1.md index 918700e9..a84a16f0 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v26.9.1.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v26.9.1.md @@ -64,7 +64,7 @@ - Fixed an assistant refusing to work after you switched on the cleanup of web content without having chosen a model first. Its button did nothing at all, and only closing the assistant and starting over helped. The cleanup now follows the model of the assistant you are working in, the moment you pick one. - Fixed the Visual Briefing assistant (in preview) not scrolling, which put everything below the window edge out of reach and made the assistant unusable. The briefing preview is now shown at its intended size inside its frame, and switching between the desktop, tablet, and mobile view changes its width as it should. - Fixed exported answers losing their sources. When an answer is based on web pages a tool read or on documents of your own, the exported file now lists those sources in every format AI Studio writes. -- Fixed exporting an answer made only of one complete HTML or LaTeX code block. AI Studio now saves the source directly, without Markdown fences or a Pandoc conversion. +- Fixed exporting an answer made only of one complete HTML code block. AI Studio now saves the source directly, without Markdown fences or a Pandoc conversion. - Fixed the copy button leaving the sources behind. Copy an answer, and its sources come along. - Fixed a tile that opens a chat directly always demanding a workspace. Leave the workspace empty in the Assistant Builder, and the tile opens a disappearing chat instead. - Fixed the same restriction for plugin authors: a direct-chat launcher can now open a chat without naming a workspace. The example assistant plugin shows both ways.