Skip to content

Commit 2acee52

Browse files
committed
docs: update COMPARISON.md with alpha blending, animations, new controls
1 parent 5736f15 commit 2acee52

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

docs/COMPARISON.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ This is the most fundamental difference between the four libraries. It determine
4444
| **Dirty tracking** | No | Cell-level | Visual-level invalidation | **Region-level (3-level dirty tracking)** |
4545
| **Flicker prevention** | Cursor repositioning (can flicker) | ANSI driver diff | Synchronized output (DEC 2026) | **Occlusion culling + diff-based flush** |
4646
| **Frame management** | N/A | Event-driven redraw | Event-driven | ~60 FPS with dirty-check skip |
47-
| **RGBA alpha blending** | No | No | **Yes (sRGB-linear LUT)** | No |
47+
| **RGBA alpha blending** | No | No | **Yes (sRGB-linear LUT)** | **Yes (per-cell 0-255 Porter-Duff)** |
4848

4949
**What this means in practice:**
5050

5151
- **Spectre.Console** writes formatted text to stdout. No screen buffer, no compositing, no concurrent updates.
5252
- **Terminal.Gui** paints all views into one shared buffer using a back-to-front painter's algorithm. If window A is fully behind window B, window A is still fully rendered.
5353
- **XenoAtom.Terminal.UI** uses a single cell buffer with reactive invalidation and frame-to-frame diffing. Has the most sophisticated color system with true RGBA alpha blending in linear color space. But no per-window buffers or compositor pipeline.
54-
- **SharpConsoleUI** gives each window its own character buffer, then composites them together. The **PreBufferPaint** hook fires before controls paint (for backgrounds, gradients, game rendering), controls render on top, then **PostBufferPaint** fires for effects (blur, fade, glow, transitions). This pipeline is unique -- no other .NET TUI framework exposes it.
54+
- **SharpConsoleUI** gives each window its own character buffer, then composites them together with per-cell RGBA alpha blending (0-255 Porter-Duff). The **PreBufferPaint** hook fires before controls paint (for backgrounds, gradients, game rendering), controls render on top, then **PostBufferPaint** fires for effects (blur, fade, glow, transitions). Controls like TableControl support row-level animations (flash, highlight, fade-out removal) driven by the compositor's animation manager. This pipeline is unique -- no other .NET TUI framework exposes it.
5555

5656
### Gradient Backgrounds
5757

@@ -104,8 +104,8 @@ Neither Terminal.Gui nor XenoAtom.Terminal.UI offer window-level gradients that
104104
| Splitter | -- | TileView | HSplitter, VSplitter | SplitterControl |
105105
| Image rendering | -- | -- | -- | **ImageControl** |
106106
| Toolbar | -- | -- | CommandBar | **ToolbarControl** |
107-
| Date picker | -- | DatePicker, DateEditor | -- | -- |
108-
| Slider | -- | LinearRange | Slider | -- |
107+
| Date picker | -- | DatePicker, DateEditor | -- | **DatePickerControl, TimePickerControl** |
108+
| Slider | -- | LinearRange | Slider | **SliderControl, RangeSliderControl** |
109109
| Hex viewer | -- | HexView | -- | -- |
110110
| Graph view | -- | GraphView | LineChart, BreakdownChart | -- |
111111
| Color picker | -- | ColorPicker (RGB/HSL) | ColorPicker | -- |
@@ -115,7 +115,7 @@ Neither Terminal.Gui nor XenoAtom.Terminal.UI offer window-level gradients that
115115
| Wizard / stepper | -- | Wizard | -- | -- |
116116
| Toast notifications | -- | -- | ToastService | **NotificationSystem** |
117117

118-
**Honest take:** Terminal.Gui has the most mature and widest control library -- battle-tested over years, with specialized widgets like DatePicker, ColorPicker, Slider, HexView, and Wizard. XenoAtom.Terminal.UI ships the most controls overall (100+) but is only 2 months old. SharpConsoleUI has fewer controls, but its unique strengths are interactive/live controls (TerminalControl, SparklineControl, BarGraphControl, CanvasControl with 30+ drawing primitives) and the window management + compositor layer.
118+
**Honest take:** Terminal.Gui has the most mature and widest control library -- battle-tested over years, with specialized widgets like ColorPicker, HexView, and Wizard. XenoAtom.Terminal.UI ships the most controls overall (100+) but is only a few months old. SharpConsoleUI now covers most common control types (DatePicker, TimePicker, Slider, RangeSlider) and its unique strengths are interactive/live controls (TerminalControl, SparklineControl, BarGraphControl, CanvasControl with 30+ drawing primitives), per-cell alpha blending, row-level animations, and the window management + compositor layer.
119119

120120
### Window Management
121121

@@ -208,8 +208,8 @@ XenoAtom.Terminal.UI has the most sophisticated layout system with a proper `Fle
208208
| **Stars** | ~11,260 | ~10,830 | ~140 | 114 |
209209
| **NuGet downloads** | ~9.9M | ~1.6M | New | 6,504 |
210210
| **Contributors** | ~115 | 199 | 1 | 1 |
211-
| **Latest stable** | 0.54.0 (pre-1.0) | 1.19.0 (v1 only) | 1.4.0 | 2.4.40 |
212-
| **v2 / latest** | 0.54.0 | v2 beta.1 (March 2026) | 1.4.0 | 2.4.40 |
211+
| **Latest stable** | 0.54.0 (pre-1.0) | 1.19.0 (v1 only) | 1.4.0 | 2.4.52 |
212+
| **v2 / latest** | 0.54.0 | v2 beta.1 (March 2026) | 1.4.0 | 2.4.52 |
213213
| **.NET version** | .NET Standard 2.0+ | .NET 10 (v2 beta) | .NET 10 only | .NET 8.0+ |
214214
| **License** | MIT | MIT | BSD-2-Clause | MIT |
215215
| **Repo age** | ~5 years | ~7 years | ~2 months | ~1 year |
@@ -224,15 +224,15 @@ Be honest about the right tool:
224224
- **Building a simple single-screen form?** **Terminal.Gui** has the widest mature control library. **XenoAtom.Terminal.UI** has the most modern architecture with reactive bindings, but requires .NET 10.
225225
- **Need maximum community and ecosystem?** The bigger libraries have more users, more contributors, more blog posts, and more StackOverflow answers.
226226
- **Targeting .NET 6 or older?** SharpConsoleUI requires .NET 8+. Spectre.Console and Terminal.Gui v1 support .NET Standard 2.0. XenoAtom requires .NET 10.
227-
- **Need DatePicker, Slider, ColorPicker, or HexView?** Terminal.Gui has these built-in. XenoAtom has Slider and ColorPicker. SharpConsoleUI doesn't (yet).
227+
- **Need ColorPicker or HexView?** Terminal.Gui has these built-in. XenoAtom has ColorPicker. SharpConsoleUI doesn't (yet).
228228
- **Need source-generated reactive bindings?** XenoAtom's `[Bindable]` source-generated property system with automatic dependency tracking is more sophisticated than SharpConsoleUI's lambda-based MVVM bindings.
229229

230230
## When SharpConsoleUI Shines
231231

232232
SharpConsoleUI is the right choice when you need:
233233

234234
- **Multi-window desktop-style apps** -- overlapping windows with drag, resize, minimize, maximize, taskbar. No other .NET library does this in a stable release.
235-
- **Visual effects and compositing** -- gradient backgrounds, blur, fade transitions, custom buffer effects via PreBufferPaint/PostBufferPaint. The compositor pipeline is unique in the .NET TUI space.
235+
- **Visual effects and compositing** -- per-cell RGBA alpha blending, gradient backgrounds, blur, fade transitions, row animations (flash, highlight, fade-out removal), custom buffer effects via PreBufferPaint/PostBufferPaint. The compositor pipeline is unique in the .NET TUI space.
236236
- **Dashboard / monitoring tools** -- independent async window threads mean each panel updates on its own schedule without blocking the UI.
237237
- **IDE-like tools** -- [LazyDotIDE](https://github.com/nickprotop/LazyDotIDE) is a working .NET IDE built entirely on SharpConsoleUI, proving the framework handles complex, multi-window applications.
238238
- **Embedded terminal + UI** -- TerminalControl gives you a real PTY-backed terminal emulator inside a window, alongside your UI controls. Unique in the .NET ecosystem.
@@ -401,7 +401,7 @@ Different languages have their own established TUI frameworks. Here's how the ma
401401
| **Architecture** | Compositor | Retained + segment compositor | Immediate-mode | Elm (TEA) | Retained, shared buffer |
402402
| **Overlapping windows** | Yes | Screens (modal stack) | No | No | v2 beta |
403403
| **Window management** | Drag, resize, minimize, maximize | No | No | No | v2 beta |
404-
| **Built-in animations** | Frame-coupled tweens | CSS-like transitions | Via tachyonfx crate | No | No |
404+
| **Built-in animations** | Frame-coupled tweens + row animations | CSS-like transitions | Via tachyonfx crate | No | No |
405405
| **Overlay/portal system** | Yes (auto-positioning, auto-dismiss) | Screen stack | Manual | Manual | No |
406406
| **Responsive controls** | Yes (NavigationView) | CSS-like media queries | No | No | No |
407407
| **Per-window buffers** | Yes | No | No | No | No |
@@ -429,4 +429,4 @@ Each framework makes different tradeoffs. The compositor approach adds complexit
429429

430430
---
431431

432-
*Last updated: March 2026*
432+
*Last updated: April 2026*

0 commit comments

Comments
 (0)