From 1dd45a9bb17bfac454ee4980a21347e8ee31a8dc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 00:16:39 +0000 Subject: [PATCH 01/12] Initial plan From 0dc422f7dc74dd8aa4d023e2e3461db8cc9ba317 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 00:29:29 +0000 Subject: [PATCH 02/12] Add SpectreView interop with rendering and tests Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/7113b76f-a6aa-4ba6-a74f-c5cdbaf39f4a Co-authored-by: tig <585482+tig@users.noreply.github.com> --- Directory.Packages.props | 1 + .../SpectreMarkupBridge.cs | 91 ++++++++ Terminal.Gui.Interop.Spectre/SpectreView.cs | 184 ++++++++++++++++ .../Terminal.Gui.Interop.Spectre.csproj | 20 ++ .../Interop/Spectre/SpectreViewTests.cs | 200 ++++++++++++++++++ .../UnitTests.Parallelizable.csproj | 1 + 6 files changed, 497 insertions(+) create mode 100644 Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs create mode 100644 Terminal.Gui.Interop.Spectre/SpectreView.cs create mode 100644 Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj create mode 100644 Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index 3302fce182..0fece6814a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -19,6 +19,7 @@ + diff --git a/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs b/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs new file mode 100644 index 0000000000..96f7ec85cb --- /dev/null +++ b/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs @@ -0,0 +1,91 @@ +using global::Spectre.Console; +using Terminal.Gui.Drawing; +using TgAttribute = Terminal.Gui.Drawing.Attribute; +using TgColor = Terminal.Gui.Drawing.Color; + +namespace Terminal.Gui.Interop.Spectre; + +/// +/// Converts Spectre.Console styling to Terminal.Gui drawing attributes. +/// +public static class SpectreMarkupBridge +{ + /// + /// Converts a Spectre to a Terminal.Gui . + /// + /// The Spectre style to convert. + /// The converted Terminal.Gui attribute. + public static TgAttribute ToAttribute (this Style style) + { + TgColor foreground = ToColor (style.Foreground); + TgColor background = ToColor (style.Background); + TextStyle textStyle = ToTextStyle (style.Decoration); + + return new (foreground, background, textStyle); + } + + private static TgColor ToColor (global::Spectre.Console.Color? color) + { + if (color is null) + { + return TgColor.None; + } + + global::Spectre.Console.Color value = color.Value; + + if (value == global::Spectre.Console.Color.Default) + { + return TgColor.None; + } + + return new TgColor (value.R, value.G, value.B); + } + + private static TextStyle ToTextStyle (Decoration? decoration) + { + if (decoration is null) + { + return TextStyle.None; + } + + Decoration value = decoration.Value; + TextStyle style = TextStyle.None; + + if ((value & Decoration.Bold) != 0) + { + style |= TextStyle.Bold; + } + + if ((value & Decoration.Dim) != 0) + { + style |= TextStyle.Faint; + } + + if ((value & Decoration.Italic) != 0) + { + style |= TextStyle.Italic; + } + + if ((value & Decoration.Underline) != 0) + { + style |= TextStyle.Underline; + } + + if ((value & Decoration.Invert) != 0) + { + style |= TextStyle.Reverse; + } + + if ((value & (Decoration.SlowBlink | Decoration.RapidBlink)) != 0) + { + style |= TextStyle.Blink; + } + + if ((value & Decoration.Strikethrough) != 0) + { + style |= TextStyle.Strikethrough; + } + + return style; + } +} diff --git a/Terminal.Gui.Interop.Spectre/SpectreView.cs b/Terminal.Gui.Interop.Spectre/SpectreView.cs new file mode 100644 index 0000000000..08b1a2dde2 --- /dev/null +++ b/Terminal.Gui.Interop.Spectre/SpectreView.cs @@ -0,0 +1,184 @@ +using global::Spectre.Console.Rendering; +using Terminal.Gui.Drawing; +using Terminal.Gui.Text; +using Terminal.Gui.ViewBase; +using TgAttribute = Terminal.Gui.Drawing.Attribute; +using DrawingSize = System.Drawing.Size; + +namespace Terminal.Gui.Interop.Spectre; + +/// +/// A read-only that renders a Spectre . +/// +public class SpectreView : View +{ + private IRenderable? _renderable; + private bool _autoSize = true; + + /// + /// Gets or sets the Spectre renderable to display. + /// + public IRenderable? Renderable + { + get => _renderable; + set + { + if (ReferenceEquals (_renderable, value)) + { + return; + } + + _renderable = value; + UpdateContentSizeFromRenderable (); + SetNeedsDraw (); + } + } + + /// + /// Gets or sets whether this view updates content size from the rendered Spectre content. + /// + public bool AutoSize + { + get => _autoSize; + set + { + if (_autoSize == value) + { + return; + } + + _autoSize = value; + UpdateContentSizeFromRenderable (); + SetNeedsDraw (); + } + } + + /// + protected override void OnViewportChanged (DrawEventArgs e) + { + base.OnViewportChanged (e); + UpdateContentSizeFromRenderable (); + } + + /// + protected override bool OnDrawingContent (DrawContext? context) + { + if (Renderable is null) + { + return true; + } + + int maxWidth = Math.Max (Viewport.Width, 1); + (IReadOnlyList segments, _, _) = RenderSegments (Renderable, maxWidth); + + int row = 0; + int col = 0; + + foreach (Segment segment in segments) + { + if (segment.IsLineBreak) + { + row++; + col = 0; + + continue; + } + + if (string.IsNullOrEmpty (segment.Text)) + { + continue; + } + + DrawSegment (segment, row, col); + col += segment.Text.GetColumns (); + } + + return true; + } + + private void DrawSegment (Segment segment, int row, int col) + { + if (row < Viewport.Y || row >= Viewport.Bottom) + { + return; + } + + TgAttribute attribute = segment.Style.ToAttribute (); + int x = col; + + foreach (string grapheme in GraphemeHelper.GetGraphemes (segment.Text)) + { + int graphemeWidth = Math.Max (grapheme.GetColumns (), 1); + bool visible = x + graphemeWidth > Viewport.X && x < Viewport.Right; + + if (visible) + { + SetAttribute (attribute); + AddStr (x - Viewport.X, row - Viewport.Y, grapheme); + } + + x += graphemeWidth; + } + } + + private void UpdateContentSizeFromRenderable () + { + if (!AutoSize) + { + SetContentSize (null); + + return; + } + + if (Renderable is null) + { + SetContentSize (new DrawingSize (0, 0)); + + return; + } + + int maxWidth = Math.Max (Viewport.Width, 1); + (_, int contentWidth, int contentHeight) = RenderSegments (Renderable, maxWidth); + SetContentSize (new DrawingSize (contentWidth, contentHeight)); + } + + private static (IReadOnlyList Segments, int ContentWidth, int ContentHeight) RenderSegments (IRenderable renderable, int maxWidth) + { + RenderOptions renderOptions = RenderOptions.Create (global::Spectre.Console.AnsiConsole.Console, null); + Measurement measurement = renderable.Measure (renderOptions, maxWidth); + List segments = [.. renderable.Render (renderOptions, maxWidth)]; + + if (segments.Count == 0) + { + return (segments, 0, 0); + } + + int maxLineWidth = 0; + int lineWidth = 0; + int lineCount = 1; + + foreach (Segment segment in segments) + { + if (segment.IsLineBreak) + { + maxLineWidth = Math.Max (maxLineWidth, lineWidth); + lineWidth = 0; + lineCount++; + + continue; + } + + if (string.IsNullOrEmpty (segment.Text)) + { + continue; + } + + lineWidth += segment.Text.GetColumns (); + } + + maxLineWidth = Math.Max (maxLineWidth, lineWidth); + int contentWidth = Math.Max (measurement.Max, maxLineWidth); + + return (segments, contentWidth, lineCount); + } +} diff --git a/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj new file mode 100644 index 0000000000..f524da69eb --- /dev/null +++ b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj @@ -0,0 +1,20 @@ + + + + + + + + + + + + Terminal.Gui.Interop.Spectre + net10.0 + enable + enable + true + true + + + diff --git a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs new file mode 100644 index 0000000000..395229c098 --- /dev/null +++ b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs @@ -0,0 +1,200 @@ +// Copilot + +using System.Text; +using JetBrains.Annotations; +using global::Spectre.Console; +using global::Spectre.Console.Rendering; +using Terminal.Gui.Interop.Spectre; +using Terminal.Gui.Drawing; +using Terminal.Gui.Views; +using SpectreColor = Spectre.Console.Color; +using TgAttribute = Terminal.Gui.Drawing.Attribute; + +namespace InteropTests.Spectre; + +[TestSubject (typeof (SpectreView))] +public class SpectreViewTests +{ + [Fact] + public void SpectreMarkupBridge_ToAttribute_Converts_Color_And_Decoration () + { + Style style = new (SpectreColor.Red, SpectreColor.Blue, Decoration.Bold | Decoration.Underline | Decoration.Strikethrough); + + TgAttribute attribute = style.ToAttribute (); + + Assert.Equal (255, attribute.Foreground.R); + Assert.Equal (0, attribute.Foreground.G); + Assert.Equal (0, attribute.Foreground.B); + Assert.Equal (0, attribute.Background.R); + Assert.Equal (0, attribute.Background.G); + Assert.Equal (255, attribute.Background.B); + Assert.True ((attribute.Style & TextStyle.Bold) != 0); + Assert.True ((attribute.Style & TextStyle.Underline) != 0); + Assert.True ((attribute.Style & TextStyle.Strikethrough) != 0); + } + + [Fact] + public void SpectreView_Renders_Table_Panel_Rule_Tree_BarChart_And_FigletText () + { + Table table = new (); + table.AddColumn ("Name"); + table.AddColumn ("Score"); + table.AddRow ("Alice", "100"); + + string tableOutput = RenderToText (table, 80, 8); + Assert.Contains ("Alice", tableOutput); + + Panel panel = new ("Panel Body"); + string panelOutput = RenderToText (panel, 80, 6); + Assert.Contains ("Panel Body", panelOutput); + + Rule rule = new ("Rule Title"); + string ruleOutput = RenderToText (rule, 80, 3); + Assert.Contains ("Rule Title", ruleOutput); + + Tree tree = new ("Root"); + tree.AddNode ("Branch"); + string treeOutput = RenderToText (tree, 80, 6); + Assert.Contains ("Root", treeOutput); + Assert.Contains ("Branch", treeOutput); + + BarChart barChart = new (); + barChart.AddItem ("A", 10, SpectreColor.Green); + string chartOutput = RenderToText (barChart, 80, 6); + Assert.Contains ("A", chartOutput); + + FigletText figlet = new ("Hi"); + string figletOutput = RenderToText (figlet, 80, 8); + Assert.Contains ("_", figletOutput); + } + + [Fact] + public void SpectreView_Renderable_Change_Triggers_Rerender () + { + using IApplication app = Application.Create (); + app.Init (DriverRegistry.Names.ANSI); + app.Driver!.SetScreenSize (60, 6); + + SpectreView view = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + Renderable = new Rule ("Before") + }; + + using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + root.Add (view); + app.Begin (root); + app.LayoutAndDraw (); + + string before = GetDriverText (app.Driver.Contents!); + Assert.Contains ("Before", before); + + view.Renderable = new Rule ("After"); + app.LayoutAndDraw (); + + string after = GetDriverText (app.Driver.Contents!); + Assert.Contains ("After", after); + } + + [Fact] + public void SpectreView_AutoSize_Reports_ContentSize_For_DimAuto () + { + using IApplication app = Application.Create (); + app.Init (DriverRegistry.Names.ANSI); + app.Driver!.SetScreenSize (80, 25); + + Table table = new (); + table.AddColumn ("Name"); + table.AddColumn ("Value"); + table.AddRow ("Alice", "100"); + table.AddRow ("Bob", "95"); + + SpectreView view = new () + { + Width = 30, + Height = Dim.Auto (DimAutoStyle.Content), + Renderable = table + }; + + using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + root.Add (view); + + app.Begin (root); + app.LayoutAndDraw (); + + Assert.True (view.GetContentSize ().Height > 0); + Assert.True (view.Frame.Height > 0); + } + + [Fact] + public void SpectreView_Integrates_With_Window_And_Interactive_Views () + { + using IApplication app = Application.Create (); + app.Init (DriverRegistry.Names.ANSI); + app.Driver!.SetScreenSize (80, 10); + + Button button = new () { Text = "Go", X = 0, Y = 0 }; + SpectreView spectre = new () + { + Renderable = new Rule ("Decor"), + X = 0, + Y = 1, + Width = Dim.Fill (), + Height = 3 + }; + + Window window = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + window.Add (button, spectre); + + app.Begin (window); + app.LayoutAndDraw (); + + string output = GetDriverText (app.Driver.Contents!); + Assert.Contains ("Go", output); + Assert.Contains ("Decor", output); + } + + private static string RenderToText (IRenderable renderable, int width, int height) + { + using IApplication app = Application.Create (); + app.Init (DriverRegistry.Names.ANSI); + app.Driver!.SetScreenSize (width, height); + + SpectreView view = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + Renderable = renderable + }; + + using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + root.Add (view); + + app.Begin (root); + app.LayoutAndDraw (); + + return GetDriverText (app.Driver.Contents!); + } + + private static string GetDriverText (Cell [,] contents) + { + int rowCount = contents.GetLength (0); + int colCount = contents.GetLength (1); + List lines = []; + + for (int row = 0; row < rowCount; row++) + { + StringBuilder lineBuilder = new (); + + for (int col = 0; col < colCount; col++) + { + lineBuilder.Append (contents [row, col].Grapheme); + } + + lines.Add (lineBuilder.ToString ()); + } + + return string.Join ("\n", lines); + } +} diff --git a/Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj b/Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj index 7da1c0c2dd..0b8f506f9a 100644 --- a/Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj +++ b/Tests/UnitTestsParallelizable/UnitTests.Parallelizable.csproj @@ -45,6 +45,7 @@ + From 18f49b71174e926b4d8f0669e289c50db480747c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 01:43:22 +0000 Subject: [PATCH 03/12] Add UICatalog SpectreView scenario demo Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/8f20c41f-e3ce-4e4a-a667-bdf8cfbeaabd Co-authored-by: tig <585482+tig@users.noreply.github.com> --- .../Scenarios/SpectreViewScenario.cs | 189 ++++++++++++++++++ Examples/UICatalog/UICatalog.csproj | 1 + 2 files changed, 190 insertions(+) create mode 100644 Examples/UICatalog/Scenarios/SpectreViewScenario.cs diff --git a/Examples/UICatalog/Scenarios/SpectreViewScenario.cs b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs new file mode 100644 index 0000000000..46fac9c3c2 --- /dev/null +++ b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs @@ -0,0 +1,189 @@ +#nullable enable + +using global::Spectre.Console; +using global::Spectre.Console.Rendering; +using Terminal.Gui.Interop.Spectre; +using SpectreColor = global::Spectre.Console.Color; + +namespace UICatalog.Scenarios; + +[ScenarioMetadata ("SpectreView Interop", "Renders Spectre.Console widgets inside Terminal.Gui.")] +[ScenarioCategory ("Controls")] +[ScenarioCategory ("Text and Formatting")] +public sealed class SpectreViewScenario : Scenario +{ + public override void Main () + { + ConfigurationManager.Enable (ConfigLocations.All); + + using IApplication app = Application.Create (); + app.Init (); + + using Window appWindow = new (); + appWindow.Title = GetQuitKeyAndName (); + appWindow.BorderStyle = LineStyle.None; + + string [] labels = ["_Table", "_Panel", "_Rule", "_Tree", "_BarChart", "_Calendar", "_Figlet", "_Markup"]; + OptionSelector selector = new () + { + X = 0, + Y = 0, + Width = 36, + Height = Dim.Auto (), + BorderStyle = LineStyle.Rounded, + Labels = labels, + Value = 0, + Title = "_Spectre Widget" + }; + + TextField userInput = new () + { + X = Pos.Right (selector) + 1, + Y = 0, + Width = 22, + Height = 1, + Text = "Alice" + }; + + Label userLabel = new () + { + X = Pos.Left (userInput), + Y = Pos.Bottom (userInput), + Text = "_Name for sample data:" + }; + + CheckBox autoSizeCheckBox = new () + { + X = Pos.Left (userInput), + Y = Pos.Bottom (userLabel), + Text = "_AutoSize content", + Value = CheckState.Checked + }; + + Button refreshButton = new () + { + X = Pos.Left (userInput), + Y = Pos.Bottom (autoSizeCheckBox) + 1, + Text = "_Refresh" + }; + + FrameView previewFrame = new () + { + X = 0, + Y = Pos.Bottom (selector) + 1, + Width = Dim.Fill (), + Height = Dim.Fill (), + Title = "Preview", + BorderStyle = LineStyle.Rounded + }; + + SpectreView spectreView = new () + { + X = 0, + Y = 0, + Width = Dim.Fill (), + Height = Dim.Fill (), + AutoSize = true, + Renderable = CreateRenderable (labels [0], userInput.Text), + ViewportSettings = ViewportSettingsFlags.HasVerticalScrollBar | ViewportSettingsFlags.HasHorizontalScrollBar + }; + + previewFrame.Add (spectreView); + appWindow.Add (selector, userInput, userLabel, autoSizeCheckBox, refreshButton, previewFrame); + + selector.ValueChanged += (_, args) => + { + if (args.NewValue is null) + { + return; + } + + string selectedLabel = labels [(int)args.NewValue]; + spectreView.Renderable = CreateRenderable (selectedLabel, userInput.Text); + }; + + refreshButton.Accepted += (_, _) => + { + string selectedLabel = labels [(int)(selector.Value ?? 0)]; + spectreView.Renderable = CreateRenderable (selectedLabel, userInput.Text); + }; + + autoSizeCheckBox.ValueChanged += (_, args) => { spectreView.AutoSize = args.NewValue == CheckState.Checked; }; + + app.Run (appWindow); + } + + private static IRenderable CreateRenderable (string selectedLabel, string userName) + { + string safeName = string.IsNullOrWhiteSpace (userName) ? "User" : userName; + + switch (selectedLabel) + { + case "_Panel": + { + return new Panel ($"Welcome, {safeName}!\nThis is Spectre rendered in a Terminal.Gui view.") + { + Header = new PanelHeader ("Spectre Panel") + }; + } + + case "_Rule": + { + return new Rule ($"Spectre Rule for {safeName}"); + } + + case "_Tree": + { + Tree tree = new ("Project"); + global::Spectre.Console.TreeNode src = tree.AddNode ("src"); + src.AddNode ("App.cs"); + src.AddNode ("SpectreView.cs"); + tree.AddNode ("README.md"); + + return tree; + } + + case "_BarChart": + { + BarChart chart = new (); + chart.Width (60); + chart.AddItem (safeName, 81, new SpectreColor (100, 149, 237)); + chart.AddItem ("Average", 73, new SpectreColor (0, 250, 154)); + chart.AddItem ("Target", 90, new SpectreColor (255, 165, 0)); + + return chart; + } + + case "_Calendar": + { + DateTime now = DateTime.Now; + Calendar calendar = new (now.Year, now.Month); + calendar.HighlightStyle (new Style (SpectreColor.Black, SpectreColor.Yellow)); + + return calendar; + } + + case "_Figlet": + { + return new FigletText (safeName).Centered (); + } + + case "_Markup": + { + return new Markup ($"[bold aqua]{safeName}[/] uses [yellow]SpectreView[/] inside [green]Terminal.Gui[/]."); + } + + default: + { + Table table = new (); + table.Border = TableBorder.Rounded; + table.AddColumn ("Name"); + table.AddColumn ("Score"); + table.AddRow (safeName, "81"); + table.AddRow ("Average", "73"); + + return table; + } + } + } +} diff --git a/Examples/UICatalog/UICatalog.csproj b/Examples/UICatalog/UICatalog.csproj index 814fd08ab2..d144b2007f 100644 --- a/Examples/UICatalog/UICatalog.csproj +++ b/Examples/UICatalog/UICatalog.csproj @@ -35,6 +35,7 @@ + From c6c6ff78e332b32453c6787eb01c4f73ccda89bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 01:52:54 +0000 Subject: [PATCH 04/12] Add SpectreView scenario GIF under docfx images Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/f35cf387-5838-43a1-8bd9-28c882fe97af Co-authored-by: tig <585482+tig@users.noreply.github.com> --- docfx/images/spectreview-interop.gif | Bin 0 -> 12096 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docfx/images/spectreview-interop.gif diff --git a/docfx/images/spectreview-interop.gif b/docfx/images/spectreview-interop.gif new file mode 100644 index 0000000000000000000000000000000000000000..7cea37819b55f7b808db10d02f5542f59aca0f54 GIT binary patch literal 12096 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 literal 0 HcmV?d00001 From b7eb9c5f1ef93685fde75f42471e5197f5e19479 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 02:09:03 +0000 Subject: [PATCH 05/12] Replace SpectreView scenario GIF with visible tuirec capture Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/b17a0837-992b-4a05-92f2-b1d8b62b83f2 Co-authored-by: tig <585482+tig@users.noreply.github.com> --- docfx/images/spectreview-interop.gif | Bin 12096 -> 54264 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docfx/images/spectreview-interop.gif b/docfx/images/spectreview-interop.gif index 7cea37819b55f7b808db10d02f5542f59aca0f54..8e2d84fa01e5c4a590247de3ee26a8fb659fb814 100644 GIT binary patch literal 54264 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 delta 10181 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 Date: Sun, 24 May 2026 02:38:37 +0000 Subject: [PATCH 06/12] Apply .claude cleanup formatting to SpectreView touched files Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/588b85ed-beb4-452b-9967-f8f75eac4f93 Co-authored-by: tig <585482+tig@users.noreply.github.com> --- .../Scenarios/SpectreViewScenario.cs | 5 ++- .../Interop/Spectre/SpectreViewTests.cs | 35 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Examples/UICatalog/Scenarios/SpectreViewScenario.cs b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs index 46fac9c3c2..85b294319f 100644 --- a/Examples/UICatalog/Scenarios/SpectreViewScenario.cs +++ b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs @@ -108,7 +108,10 @@ public override void Main () spectreView.Renderable = CreateRenderable (selectedLabel, userInput.Text); }; - autoSizeCheckBox.ValueChanged += (_, args) => { spectreView.AutoSize = args.NewValue == CheckState.Checked; }; + autoSizeCheckBox.ValueChanged += (_, args) => + { + spectreView.AutoSize = args.NewValue == CheckState.Checked; + }; app.Run (appWindow); } diff --git a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs index 395229c098..5023986ae1 100644 --- a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs +++ b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs @@ -82,7 +82,12 @@ public void SpectreView_Renderable_Change_Triggers_Rerender () Renderable = new Rule ("Before") }; - using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + using Runnable root = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + BorderStyle = LineStyle.None + }; root.Add (view); app.Begin (root); app.LayoutAndDraw (); @@ -117,7 +122,12 @@ public void SpectreView_AutoSize_Reports_ContentSize_For_DimAuto () Renderable = table }; - using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + using Runnable root = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + BorderStyle = LineStyle.None + }; root.Add (view); app.Begin (root); @@ -134,7 +144,12 @@ public void SpectreView_Integrates_With_Window_And_Interactive_Views () app.Init (DriverRegistry.Names.ANSI); app.Driver!.SetScreenSize (80, 10); - Button button = new () { Text = "Go", X = 0, Y = 0 }; + Button button = new () + { + Text = "Go", + X = 0, + Y = 0 + }; SpectreView spectre = new () { Renderable = new Rule ("Decor"), @@ -144,7 +159,12 @@ public void SpectreView_Integrates_With_Window_And_Interactive_Views () Height = 3 }; - Window window = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + Window window = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + BorderStyle = LineStyle.None + }; window.Add (button, spectre); app.Begin (window); @@ -168,7 +188,12 @@ private static string RenderToText (IRenderable renderable, int width, int heigh Renderable = renderable }; - using Runnable root = new () { Width = Dim.Fill (), Height = Dim.Fill (), BorderStyle = LineStyle.None }; + using Runnable root = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + BorderStyle = LineStyle.None + }; root.Add (view); app.Begin (root); From 248df34450b26b62778b847061d8d457ce6d3205 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 24 May 2026 02:45:50 +0000 Subject: [PATCH 07/12] Add tuirec recording guide and simplify hero-gif doc Agent-Logs-Url: https://github.com/gui-cs/Terminal.Gui/sessions/e51b923f-3781-4315-8458-2ffa6138ea61 Co-authored-by: tig <585482+tig@users.noreply.github.com> --- hero-gif.md | 7 +++++++ scripts/tuirec.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 hero-gif.md create mode 100644 scripts/tuirec.md diff --git a/hero-gif.md b/hero-gif.md new file mode 100644 index 0000000000..5097d5ca07 --- /dev/null +++ b/hero-gif.md @@ -0,0 +1,7 @@ +# Hero GIF Guidance + +For recording Terminal.Gui app/scenario GIFs, use: + +- [`./scripts/tuirec.md`](./scripts/tuirec.md) + +This file is intentionally minimal. The recording workflow, quality checks, and agent guidance are maintained in `scripts/tuirec.md`. diff --git a/scripts/tuirec.md b/scripts/tuirec.md new file mode 100644 index 0000000000..33a01e8213 --- /dev/null +++ b/scripts/tuirec.md @@ -0,0 +1,44 @@ +# Recording Terminal.Gui Apps with `tuirec` + +Use this guide when an issue or PR asks for a GIF/video capture of a Terminal.Gui app or scenario. + +## Goals + +- Record a **visible, stable** terminal session. +- Convert the recording to a GIF artifact for docs. +- Validate output before committing. + +## Recommended Workflow + +1. Build first. + - To avoid recording startup/build noise, build before launching recording. +2. Launch the target app/scenario with a dedicated entry point. + - Prefer a scenario runner or focused runner over `dotnet run` of a large app shell. + - This reduces timing and startup variability in captures. +3. Start `tuirec` recording and drive the UI interactions. + - Keep the terminal size fixed for the whole recording. + - Move slowly enough for frames to be readable. +4. Export a GIF from the recording. +5. Validate the output artifact before commit. + - Confirm the GIF is not blank. + - Confirm expected UI text appears. + - Confirm the interaction sequence is complete. + +## Practical Guidance for Agents + +- To avoid blank captures, do not rely on first-run restore/build while recording. +- To keep captures deterministic, use a dedicated runner that goes directly to the target scenario. +- To verify quality, inspect the output and confirm key labels are visible before replacing docs assets. +- To update docs assets, write GIFs to `docfx/images/` with a descriptive name. + +## Validation Checklist + +- [ ] The app content is visible (not empty/black). +- [ ] The expected scenario title/controls are readable. +- [ ] The capture shows the intended interaction. +- [ ] The final GIF path and filename are correct. + +## Notes + +- `tuirec` CLI options can change over time. Run `tuirec --help` and follow the current command syntax. +- If a capture fails, retry with a dedicated runner and pre-built binaries before attempting other changes. From ed798ae233aa71ed154da5603c56d2f4a0cc6639 Mon Sep 17 00:00:00 2001 From: Tig Date: Sun, 24 May 2026 07:44:33 -0600 Subject: [PATCH 08/12] Remove hero-gif.md, tuirec.md, and GIF (moved to PR #5396) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docfx/images/spectreview-interop.gif | Bin 54264 -> 0 bytes hero-gif.md | 7 ----- scripts/tuirec.md | 44 --------------------------- 3 files changed, 51 deletions(-) delete mode 100644 docfx/images/spectreview-interop.gif delete mode 100644 hero-gif.md delete mode 100644 scripts/tuirec.md diff --git a/docfx/images/spectreview-interop.gif b/docfx/images/spectreview-interop.gif deleted file mode 100644 index 8e2d84fa01e5c4a590247de3ee26a8fb659fb814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54264 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 diff --git a/hero-gif.md b/hero-gif.md deleted file mode 100644 index 5097d5ca07..0000000000 --- a/hero-gif.md +++ /dev/null @@ -1,7 +0,0 @@ -# Hero GIF Guidance - -For recording Terminal.Gui app/scenario GIFs, use: - -- [`./scripts/tuirec.md`](./scripts/tuirec.md) - -This file is intentionally minimal. The recording workflow, quality checks, and agent guidance are maintained in `scripts/tuirec.md`. diff --git a/scripts/tuirec.md b/scripts/tuirec.md deleted file mode 100644 index 33a01e8213..0000000000 --- a/scripts/tuirec.md +++ /dev/null @@ -1,44 +0,0 @@ -# Recording Terminal.Gui Apps with `tuirec` - -Use this guide when an issue or PR asks for a GIF/video capture of a Terminal.Gui app or scenario. - -## Goals - -- Record a **visible, stable** terminal session. -- Convert the recording to a GIF artifact for docs. -- Validate output before committing. - -## Recommended Workflow - -1. Build first. - - To avoid recording startup/build noise, build before launching recording. -2. Launch the target app/scenario with a dedicated entry point. - - Prefer a scenario runner or focused runner over `dotnet run` of a large app shell. - - This reduces timing and startup variability in captures. -3. Start `tuirec` recording and drive the UI interactions. - - Keep the terminal size fixed for the whole recording. - - Move slowly enough for frames to be readable. -4. Export a GIF from the recording. -5. Validate the output artifact before commit. - - Confirm the GIF is not blank. - - Confirm expected UI text appears. - - Confirm the interaction sequence is complete. - -## Practical Guidance for Agents - -- To avoid blank captures, do not rely on first-run restore/build while recording. -- To keep captures deterministic, use a dedicated runner that goes directly to the target scenario. -- To verify quality, inspect the output and confirm key labels are visible before replacing docs assets. -- To update docs assets, write GIFs to `docfx/images/` with a descriptive name. - -## Validation Checklist - -- [ ] The app content is visible (not empty/black). -- [ ] The expected scenario title/controls are readable. -- [ ] The capture shows the intended interaction. -- [ ] The final GIF path and filename are correct. - -## Notes - -- `tuirec` CLI options can change over time. Run `tuirec --help` and follow the current command syntax. -- If a capture fails, retry with a dedicated runner and pre-built binaries before attempting other changes. From e2ee04f1ed15c2dee4ae6b321e29745cd6bc1890 Mon Sep 17 00:00:00 2001 From: Tig Date: Sun, 24 May 2026 07:47:24 -0600 Subject: [PATCH 09/12] Add ToSpectreStyle reverse conversion, NuGet metadata, and markup tests - Add SpectreMarkupBridge.ToSpectreStyle() for TG->Spectre conversion - Add NuGet package metadata to interop project - Add project to Terminal.sln - Add tests for round-trip, Markup IRenderable, default/none colors - Rename scenario to 'Spectre' / 'Demonstrates Spectre.Console integration' Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Scenarios/SpectreViewScenario.cs | 2 +- .../SpectreMarkupBridge.cs | 83 +++++++++++++++++-- .../Terminal.Gui.Interop.Spectre.csproj | 8 ++ Terminal.sln | 14 ++++ .../Interop/Spectre/SpectreViewTests.cs | 73 ++++++++++++++++ 5 files changed, 171 insertions(+), 9 deletions(-) diff --git a/Examples/UICatalog/Scenarios/SpectreViewScenario.cs b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs index 85b294319f..2cc6526d1d 100644 --- a/Examples/UICatalog/Scenarios/SpectreViewScenario.cs +++ b/Examples/UICatalog/Scenarios/SpectreViewScenario.cs @@ -7,7 +7,7 @@ namespace UICatalog.Scenarios; -[ScenarioMetadata ("SpectreView Interop", "Renders Spectre.Console widgets inside Terminal.Gui.")] +[ScenarioMetadata ("Spectre", "Demonstrates Spectre.Console integration.")] [ScenarioCategory ("Controls")] [ScenarioCategory ("Text and Formatting")] public sealed class SpectreViewScenario : Scenario diff --git a/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs b/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs index 96f7ec85cb..5d90ae80f5 100644 --- a/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs +++ b/Terminal.Gui.Interop.Spectre/SpectreMarkupBridge.cs @@ -2,11 +2,12 @@ using Terminal.Gui.Drawing; using TgAttribute = Terminal.Gui.Drawing.Attribute; using TgColor = Terminal.Gui.Drawing.Color; +using SpectreColor = global::Spectre.Console.Color; namespace Terminal.Gui.Interop.Spectre; ///

-/// Converts Spectre.Console styling to Terminal.Gui drawing attributes. +/// Converts between Spectre.Console styling and Terminal.Gui drawing attributes. /// public static class SpectreMarkupBridge { @@ -17,23 +18,37 @@ public static class SpectreMarkupBridge /// The converted Terminal.Gui attribute. public static TgAttribute ToAttribute (this Style style) { - TgColor foreground = ToColor (style.Foreground); - TgColor background = ToColor (style.Background); - TextStyle textStyle = ToTextStyle (style.Decoration); + TgColor foreground = SpectreColorToTg (style.Foreground); + TgColor background = SpectreColorToTg (style.Background); + TextStyle textStyle = DecorationToTextStyle (style.Decoration); return new (foreground, background, textStyle); } - private static TgColor ToColor (global::Spectre.Console.Color? color) + /// + /// Converts a Terminal.Gui to a Spectre . + /// + /// The Terminal.Gui attribute to convert. + /// The converted Spectre style. + public static Style ToSpectreStyle (this TgAttribute attribute) + { + SpectreColor foreground = TgColorToSpectre (attribute.Foreground); + SpectreColor background = TgColorToSpectre (attribute.Background); + Decoration decoration = TextStyleToDecoration (attribute.Style); + + return new (foreground, background, decoration); + } + + private static TgColor SpectreColorToTg (SpectreColor? color) { if (color is null) { return TgColor.None; } - global::Spectre.Console.Color value = color.Value; + SpectreColor value = color.Value; - if (value == global::Spectre.Console.Color.Default) + if (value == SpectreColor.Default) { return TgColor.None; } @@ -41,7 +56,17 @@ private static TgColor ToColor (global::Spectre.Console.Color? color) return new TgColor (value.R, value.G, value.B); } - private static TextStyle ToTextStyle (Decoration? decoration) + private static SpectreColor TgColorToSpectre (TgColor color) + { + if (color == TgColor.None) + { + return SpectreColor.Default; + } + + return new SpectreColor ((byte)color.R, (byte)color.G, (byte)color.B); + } + + private static TextStyle DecorationToTextStyle (Decoration? decoration) { if (decoration is null) { @@ -88,4 +113,46 @@ private static TextStyle ToTextStyle (Decoration? decoration) return style; } + + private static Decoration TextStyleToDecoration (TextStyle style) + { + Decoration decoration = Decoration.None; + + if ((style & TextStyle.Bold) != 0) + { + decoration |= Decoration.Bold; + } + + if ((style & TextStyle.Faint) != 0) + { + decoration |= Decoration.Dim; + } + + if ((style & TextStyle.Italic) != 0) + { + decoration |= Decoration.Italic; + } + + if ((style & TextStyle.Underline) != 0) + { + decoration |= Decoration.Underline; + } + + if ((style & TextStyle.Reverse) != 0) + { + decoration |= Decoration.Invert; + } + + if ((style & TextStyle.Blink) != 0) + { + decoration |= Decoration.SlowBlink; + } + + if ((style & TextStyle.Strikethrough) != 0) + { + decoration |= Decoration.Strikethrough; + } + + return decoration; + } } diff --git a/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj index f524da69eb..113402fd14 100644 --- a/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj +++ b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj @@ -10,11 +10,19 @@ Terminal.Gui.Interop.Spectre + Terminal.Gui.Interop.Spectre net10.0 enable enable true true + Terminal.Gui.Interop.Spectre + Bridge package for rendering Spectre.Console IRenderable widgets inside Terminal.Gui applications. + gui-cs contributors + MIT + https://github.com/gui-cs/Terminal.Gui + https://github.com/gui-cs/Terminal.Gui + terminal;gui;console;spectre;interop diff --git a/Terminal.sln b/Terminal.sln index de4c68a853..a763af6eec 100644 --- a/Terminal.sln +++ b/Terminal.sln @@ -158,6 +158,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Terminal.Gui.Analyzers.Inte EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceTests", "Tests\PerformanceTests\PerformanceTests.csproj", "{6E98BACA-E6B6-47A0-B45C-B624F8E74EC2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Terminal.Gui.Interop.Spectre", "Terminal.Gui.Interop.Spectre\Terminal.Gui.Interop.Spectre.csproj", "{9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -468,6 +470,18 @@ Global {6E98BACA-E6B6-47A0-B45C-B624F8E74EC2}.Release|x64.Build.0 = Release|Any CPU {6E98BACA-E6B6-47A0-B45C-B624F8E74EC2}.Release|x86.ActiveCfg = Release|Any CPU {6E98BACA-E6B6-47A0-B45C-B624F8E74EC2}.Release|x86.Build.0 = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|x64.ActiveCfg = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|x64.Build.0 = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|x86.ActiveCfg = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Debug|x86.Build.0 = Debug|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|Any CPU.Build.0 = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|x64.ActiveCfg = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|x64.Build.0 = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|x86.ActiveCfg = Release|Any CPU + {9F70B0A0-8CC2-4384-93FE-359C0D6A0BD6}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs index 5023986ae1..cf639d4e3c 100644 --- a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs +++ b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs @@ -33,6 +33,79 @@ public void SpectreMarkupBridge_ToAttribute_Converts_Color_And_Decoration () Assert.True ((attribute.Style & TextStyle.Strikethrough) != 0); } + [Fact] + public void SpectreMarkupBridge_ToSpectreStyle_Converts_Color_And_Decoration () + { + TgAttribute attribute = new ( + new Terminal.Gui.Drawing.Color (0, 255, 0), + new Terminal.Gui.Drawing.Color (128, 0, 128), + TextStyle.Italic | TextStyle.Underline); + + Style spectreStyle = attribute.ToSpectreStyle (); + + Assert.Equal (0, spectreStyle.Foreground.R); + Assert.Equal (255, spectreStyle.Foreground.G); + Assert.Equal (0, spectreStyle.Foreground.B); + Assert.Equal (128, spectreStyle.Background.R); + Assert.Equal (0, spectreStyle.Background.G); + Assert.Equal (128, spectreStyle.Background.B); + Assert.True ((spectreStyle.Decoration & Decoration.Italic) != 0); + Assert.True ((spectreStyle.Decoration & Decoration.Underline) != 0); + } + + [Fact] + public void SpectreMarkupBridge_RoundTrip_Preserves_Style () + { + TgAttribute original = new ( + new Terminal.Gui.Drawing.Color (100, 150, 200), + new Terminal.Gui.Drawing.Color (50, 60, 70), + TextStyle.Bold | TextStyle.Faint | TextStyle.Strikethrough); + + Style spectreStyle = original.ToSpectreStyle (); + TgAttribute roundTripped = spectreStyle.ToAttribute (); + + Assert.Equal (original.Foreground.R, roundTripped.Foreground.R); + Assert.Equal (original.Foreground.G, roundTripped.Foreground.G); + Assert.Equal (original.Foreground.B, roundTripped.Foreground.B); + Assert.Equal (original.Background.R, roundTripped.Background.R); + Assert.Equal (original.Background.G, roundTripped.Background.G); + Assert.Equal (original.Background.B, roundTripped.Background.B); + Assert.Equal (original.Style, roundTripped.Style); + } + + [Fact] + public void SpectreMarkupBridge_Default_Colors_Map_To_None () + { + Style style = new (SpectreColor.Default, SpectreColor.Default); + + TgAttribute attribute = style.ToAttribute (); + + Assert.Equal (Terminal.Gui.Drawing.Color.None, attribute.Foreground); + Assert.Equal (Terminal.Gui.Drawing.Color.None, attribute.Background); + } + + [Fact] + public void SpectreMarkupBridge_None_Colors_Map_To_Default () + { + TgAttribute attribute = new (Terminal.Gui.Drawing.Color.None, Terminal.Gui.Drawing.Color.None); + + Style spectreStyle = attribute.ToSpectreStyle (); + + Assert.Equal (SpectreColor.Default, spectreStyle.Foreground); + Assert.Equal (SpectreColor.Default, spectreStyle.Background); + } + + [Fact] + public void SpectreView_Renders_Markup_IRenderable () + { + Markup markup = new ("[bold red]Hello[/] [green]World[/]"); + + string output = RenderToText (markup, 40, 3); + + Assert.Contains ("Hello", output); + Assert.Contains ("World", output); + } + [Fact] public void SpectreView_Renders_Table_Panel_Rule_Tree_BarChart_And_FigletText () { From 92e2d13372e44822f6e8a33a12c6ec2b3becbd97 Mon Sep 17 00:00:00 2001 From: Tig Date: Sun, 24 May 2026 07:55:44 -0600 Subject: [PATCH 10/12] Add SpectreView scenario demo GIF recorded with tuirec Cycles through Table, Panel, Rule, Tree, BarChart, Calendar, Figlet, Markup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../UICatalog/Scenarios/SpectreViewScenario.gif | Bin 0 -> 29875 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Examples/UICatalog/Scenarios/SpectreViewScenario.gif diff --git a/Examples/UICatalog/Scenarios/SpectreViewScenario.gif b/Examples/UICatalog/Scenarios/SpectreViewScenario.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f8968bffca9a0291074ab324607c192c4b02589 GIT binary patch literal 29875 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 literal 0 HcmV?d00001 From 79cb212af2cb110e0a11e4b2bc0466e3d50bdfcd Mon Sep 17 00:00:00 2001 From: Tig Date: Sun, 24 May 2026 08:04:29 -0600 Subject: [PATCH 11/12] Re-record scenario GIF with Space activation and 1.5x speed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Scenarios/SpectreViewScenario.gif | Bin 29875 -> 67594 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Examples/UICatalog/Scenarios/SpectreViewScenario.gif b/Examples/UICatalog/Scenarios/SpectreViewScenario.gif index 4f8968bffca9a0291074ab324607c192c4b02589..4b8344f96919ce9201a8b2190d52555e0095531c 100644 GIT binary patch literal 67594 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¥4y8cUo48EJ7eSL?TZaTVB#3E}#sO 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 From de772c76854f2133d57bcd23fafa393749fd1eaf Mon Sep 17 00:00:00 2001 From: Tig Date: Sun, 24 May 2026 08:31:51 -0600 Subject: [PATCH 12/12] Address CR feedback: skip control codes, fix column tracking, use null console - Skip Segment.IsControlCode segments to prevent ANSI escapes in output - Use ref col parameter in DrawSegment for consistent column tracking - Replace global AnsiConsole.Console with dedicated null-output console - Add GitVersion.MsBuild for consistent package versioning - Add tests for control code skipping and zero-width character alignment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- Terminal.Gui.Interop.Spectre/SpectreView.cs | 36 ++++--- .../Terminal.Gui.Interop.Spectre.csproj | 4 + .../Interop/Spectre/SpectreViewTests.cs | 94 +++++++++++++++++++ 3 files changed, 121 insertions(+), 13 deletions(-) diff --git a/Terminal.Gui.Interop.Spectre/SpectreView.cs b/Terminal.Gui.Interop.Spectre/SpectreView.cs index 08b1a2dde2..fca278ebfe 100644 --- a/Terminal.Gui.Interop.Spectre/SpectreView.cs +++ b/Terminal.Gui.Interop.Spectre/SpectreView.cs @@ -1,3 +1,4 @@ +using global::Spectre.Console; using global::Spectre.Console.Rendering; using Terminal.Gui.Drawing; using Terminal.Gui.Text; @@ -12,6 +13,11 @@ namespace Terminal.Gui.Interop.Spectre; /// public class SpectreView : View { + private static readonly IAnsiConsole _nullConsole = AnsiConsole.Create (new AnsiConsoleSettings + { + Out = new AnsiConsoleOutput (TextWriter.Null) + }); + private IRenderable? _renderable; private bool _autoSize = true; @@ -84,40 +90,44 @@ protected override bool OnDrawingContent (DrawContext? context) continue; } - if (string.IsNullOrEmpty (segment.Text)) + if (segment.IsControlCode || string.IsNullOrEmpty (segment.Text)) { continue; } - DrawSegment (segment, row, col); - col += segment.Text.GetColumns (); + DrawSegment (segment, row, ref col); } return true; } - private void DrawSegment (Segment segment, int row, int col) + private void DrawSegment (Segment segment, int row, ref int col) { if (row < Viewport.Y || row >= Viewport.Bottom) { + col += segment.Text.GetColumns (); + return; } TgAttribute attribute = segment.Style.ToAttribute (); - int x = col; foreach (string grapheme in GraphemeHelper.GetGraphemes (segment.Text)) { - int graphemeWidth = Math.Max (grapheme.GetColumns (), 1); - bool visible = x + graphemeWidth > Viewport.X && x < Viewport.Right; + int graphemeWidth = grapheme.GetColumns (); - if (visible) + if (graphemeWidth > 0) { - SetAttribute (attribute); - AddStr (x - Viewport.X, row - Viewport.Y, grapheme); + bool visible = col + graphemeWidth > Viewport.X && col < Viewport.Right; + + if (visible) + { + SetAttribute (attribute); + AddStr (col - Viewport.X, row - Viewport.Y, grapheme); + } } - x += graphemeWidth; + col += graphemeWidth; } } @@ -144,7 +154,7 @@ private void UpdateContentSizeFromRenderable () private static (IReadOnlyList Segments, int ContentWidth, int ContentHeight) RenderSegments (IRenderable renderable, int maxWidth) { - RenderOptions renderOptions = RenderOptions.Create (global::Spectre.Console.AnsiConsole.Console, null); + RenderOptions renderOptions = RenderOptions.Create (_nullConsole, null); Measurement measurement = renderable.Measure (renderOptions, maxWidth); List segments = [.. renderable.Render (renderOptions, maxWidth)]; @@ -168,7 +178,7 @@ private static (IReadOnlyList Segments, int ContentWidth, int ContentHe continue; } - if (string.IsNullOrEmpty (segment.Text)) + if (segment.IsControlCode || string.IsNullOrEmpty (segment.Text)) { continue; } diff --git a/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj index 113402fd14..7831d4a2f7 100644 --- a/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj +++ b/Terminal.Gui.Interop.Spectre/Terminal.Gui.Interop.Spectre.csproj @@ -25,4 +25,8 @@ terminal;gui;console;spectre;interop + + + + diff --git a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs index cf639d4e3c..4743d0703e 100644 --- a/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs +++ b/Tests/UnitTestsParallelizable/Interop/Spectre/SpectreViewTests.cs @@ -248,6 +248,100 @@ public void SpectreView_Integrates_With_Window_And_Interactive_Views () Assert.Contains ("Decor", output); } + [Fact] + public void SpectreView_Skips_ControlCode_Segments () + { + // A custom IRenderable that emits a control-code segment between text segments. + // If control codes are not skipped, the escape text will appear between Hello and World. + ControlCodeRenderable renderable = new (); + + string output = RenderToText (renderable, 40, 3); + + // The control code text "[?25l" should NOT appear as visible text between Hello and World + Assert.DoesNotContain ("[?25", output); + // The two text segments should be adjacent (no garbage between them) + Assert.Contains ("HelloWorld", output); + } + + [Fact] + public void SpectreView_ZeroWidth_Characters_Do_Not_Misalign () + { + // A renderable that emits a combining character (zero-width) followed by normal text. + // The combining mark merges with the preceding character into a single grapheme. + // "After" should follow immediately without spurious gaps. + ZeroWidthRenderable renderable = new (); + + using IApplication app = Application.Create (); + app.Init (DriverRegistry.Names.ANSI); + app.Driver!.SetScreenSize (40, 3); + + SpectreView view = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + Renderable = renderable + }; + + using Runnable root = new () + { + Width = Dim.Fill (), + Height = Dim.Fill (), + BorderStyle = LineStyle.None + }; + root.Add (view); + app.Begin (root); + app.LayoutAndDraw (); + + Cell [,] contents = app.Driver.Contents!; + StringBuilder row0 = new (); + + for (int col = 0; col < contents.GetLength (1); col++) + { + row0.Append (contents [0, col].Grapheme); + } + + string line = row0.ToString ().TrimEnd (); + + // "Base\u0301" renders as "Bas" + "é" (4 display columns), then "After" immediately follows + Assert.Contains ("After", line); + + // "After" should start at column 4 (width of "Base\u0301" = 4 graphemes, each 1 col) + // No spurious gap between the combined character and "After" + Assert.DoesNotContain (" After", line); + } + + /// A test renderable that emits control-code segments between text. + private sealed class ControlCodeRenderable : IRenderable + { + public Measurement Measure (RenderOptions options, int maxWidth) + { + return new Measurement (10, 10); + } + + public IEnumerable Render (RenderOptions options, int maxWidth) + { + yield return new Segment ("Hello", Style.Plain); + yield return Segment.Control ("\x1b[?25l"); + yield return new Segment ("World", Style.Plain); + } + } + + /// A test renderable that emits a combining mark (zero-width) character. + private sealed class ZeroWidthRenderable : IRenderable + { + public Measurement Measure (RenderOptions options, int maxWidth) + { + return new Measurement (10, 10); + } + + public IEnumerable Render (RenderOptions options, int maxWidth) + { + // "Base" + combining diacritical acute (U+0301, zero-width) + "After" + yield return new Segment ("Base\u0301", Style.Plain); + yield return new Segment ("After", Style.Plain); + } + } + private static string RenderToText (IRenderable renderable, int width, int height) { using IApplication app = Application.Create ();