RazorConsole v0.6.0

Status: Unreleased - release preparation | Milestone v0.6.0

These notes describe changes on main through 316753e, compared with the previous stable release, v0.5.0, published on March 17, 2026. Version 0.6.0 has not been published and its release date is not yet set.

RazorConsole 0.6.0 makes WidgetLayout the default rendering pipeline, adds NativeAOT distribution for the official Gallery and Snake apps, and rebuilds the getting-started experience around an interactive tutorial. It also includes locking fixes, cursor visibility control, and website navigation and metadata improvements.

For a guided introduction, read what's new in RazorConsole 0.6.0.

Highlights

  • WidgetLayout by default: terminal layout is calculated before output is rendered, with layout bounds and metadata available to input and focus handling. The legacy Spectre pipeline remains selectable (#339).
  • Mouse input and new components: opt-in click, hover, drag, and wheel handling; new Box, Flex, TextArea, and LayoutDiagnostics components (#339).
  • Official NativeAOT apps: Gallery and the new Snake showcase have native archive builds for Linux, Windows, and macOS, on x64 and ARM64. Shared installers distinguish stable, nightly, and explicit-version downloads (#345, #346, #348, #350).
  • Interactive learning: eight tutorial chapters share Razor components between the browser preview and a native runner, covering state, input, layout, routing, and asynchronous work (#343).
  • Reliability and control: locking fixes and a cursor visibility option are included, alongside a fix for tutorial client navigation (#320, #325, #356).

Detailed Changes

Components & Rendering

  • Introduce the widget-based layout engine and make WidgetLayout the default. The cumulative implementation includes widget translation, terminal-cell layout and rendering, and layout-aware focus and input handling (#339, #334).
  • Add Box, Flex, TextArea, and LayoutDiagnostics, layout-bound accessors, and text selection/copy support. Clipboard operations depend on terminal OSC 52 support; FlexBox remains available as a wrapper around Flex (#339).
  • Update the component gallery and examples for the widget pipeline, with regression coverage for rendering and scrolling, including the rapid Select scrolling issue (#339, #340).
  • Add cursor visibility control (#325).

Focus & Input Reliability

  • Fix locking issues in the rendering code (#320, #319).
  • Add opt-in Windows/Unix terminal mouse input and layout-based hit-testing, with @onclick, @onmousedown, @onmouseup, @onmousemove, @onmouseenter, @onmouseleave, and @onwheel handlers, left-click focus, and drag capture. Set ConsoleAppOptions.ConsoleLiveDisplayOptions.EnableMouseEvents to enable it; mouse input also enables the alternate screen (#339).
  • Add widget-layout and terminal-input regression coverage as part of the layout-engine work (#339). This is not a claim that every terminal or input scenario is resolved.
  • Package the Gallery as a NativeAOT application in addition to its existing .NET tool distribution (#345).
  • Add the responsive Snake showcase and its native builds (#346).
  • Centralize official-app metadata and archive generation, fix the Windows installation path, and expose stable/nightly/version selection through shared installers (#348, #350, #347).
  • Add MandoCode to the community showcase (#324).

Tooling, Docs & Website

  • Replace the old Quick Start with an eight-chapter, preview-first tutorial. Keep the same tutorial components runnable in the browser and native Tutorial.Runner, and retain legacy documentation redirects (#343, #342).
  • Add static HTML generation and improve sitemap generation, metadata, site URL casing, subdirectory handling, and redirects (#323, #327, #328, #330, #331, #332).
  • Improve the homepage, navigation, FAQ, API metadata, and comparison article in Blog (#352, #356).
  • Fix tutorial client navigation by sharing an ordinary resolver between separate server and client loader exports. Add built-output Chromium regressions for both / and /RazorConsole/ bases (#356).
  • Add Google verification metadata and the verification HTML file. These files do not establish Search Console ownership, indexing, or search performance (#329, #357).
  • Add the previous release's notes to the website (#336).

Build & CI

  • Set the shared NuGet VersionPrefix to 0.6.0 (#321). This was already present on main; release preparation does not bump it again.
  • Correct InternalsVisibleTo declarations (#318).
  • Add net11.0 alongside net8.0, net9.0, and net10.0, and pin the repository SDK to 11.0.100-rc.1.26425.128 as part of the layout-engine work (#339). Building this source checkout requires the preview SDK specified in global.json; consuming a supported lower-target NuGet asset does not require targeting .NET 11.
  • Validate native builds and executable architectures for linux-x64, linux-arm64, win-x64, win-arm64, osx-x64, and osx-arm64. The native app build script targets net10.0; successful compilation and architecture checks are not equivalent to interactive testing on every platform (#345, #348).

Upgrade & Migration

The default rendering pipeline changes in 0.6.0. Test your layouts, custom rendering extensions, focus order, scrolling, and mouse interactions when upgrading. Do not assume the output is pixel-identical to 0.5.0.

To compare an application with the legacy renderer, set the environment variable before launching it:

$env:RAZORCONSOLE_RENDERING_PIPELINE = "LegacySpectre"
dotnet run

Remove that environment override to use the new default:

Remove-Item Env:RAZORCONSOLE_RENDERING_PIPELINE

Existing FlexBox, ITranslationMiddleware, and TranslationContext APIs remain available. The pipeline switch controls rendering behavior: WidgetLayout does not invoke custom Spectre translators for every widget. Review the Widget Layout documentation and custom translator documentation when adapting rendering extensions.

UseAlternateScreenBuffer and HideCursor now default to true; configure them explicitly if your application needs the previous behavior. EnableMouseEvents defaults to false and forces alternate-screen rendering when enabled. Mouse event coordinates are terminal cells rather than browser pixels.

The LLMAgentTUI example now uses Agent configuration settings and no longer reads its old OPENAI_API_KEY / LLMAGENT_* environment variables; follow the example's configuration guide when upgrading that sample.

After the stable packages have actually been published, update the library reference to RazorConsole.Core version 0.6.0. The Gallery .NET tool package is RazorConsole.Gallery; Snake is distributed through the native app archives rather than a Snake NuGet tool package. Until the release exists, an installer's stable channel still resolves to the previous stable release.

Known Limitations & Scope

  • NativeAOT support remains experimental. Validate trimming, reflection, third-party dependencies, application assets, and terminal/platform behavior for your own app; see the NativeAOT guide.
  • Windows 10 faulty rendering remains tracked by #316, with #341 still unmerged at the preparation baseline. The earlier fix #317 was reverted in #337; these notes do not count it as shipped.
  • The original layout-engine PR #333 was reverted in #338. The included implementation is the later #339, not two separate layout features.
  • Browser logs can still contain an intermittent xterm Viewport._innerRefresh error reading dimensions. The cause is not established; passing tutorial navigation and input tests does not establish that all terminal lifecycle scenarios are error-free. See the caveats in #356.
  • No rendering-performance benchmark or competitor-relative speed claim is part of this release. Unmerged features and external search-analytics work are not included.

Acknowledgments

  • LittleLittleCloud: widget layout, the interactive tutorial, official native apps and installers, and website improvements.
  • TeseySTD: cursor visibility, static website generation and metadata/routing fixes, and the MandoCode showcase.
  • Abaddax: locking fixes and the InternalsVisibleTo correction.
  • Copilot: the previous release's website notes.

Preparation changelog: v0.5.0...316753e. The milestone is useful context, but the included scope is determined by merged changes and their final state, including reverts.