Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
.NET 터미널 UI를 재사용 Razor 컴포넌트와 내장 마우스·키보드 이벤트로 만들고, 실험적 NativeAOT 지원 제공
Build .NET terminal UIs with reusable Razor components, built-in mouse and keyboard events, and experimental NativeAOT support for native distribution.
개발 도구C# · HTMLGitHub @RazorConsole온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Build agentic TUI applications with .NET Razor and Spectre.Console
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Build rich, interactive console applications using familiar Razor syntax and the power of Spectre.Console
RazorConsole bridges the gap between modern web UI development and console applications. It lets you create sophisticated terminal interfaces using Razor components, complete with interactive elements, rich styling, and familiar development patterns.
dotnet add package RazorConsole.Core
RazorConsole requires the Microsoft.NET.Sdk.Razor SDK to compile Razor components. Update your project file (.csproj) to use the Razor SDK:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<!-- other settings -->
</Project>
Here's a simple counter component to get you started:
@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Web
@using RazorConsole.Components
<Columns>
<p>Current count</p>
<Markup Content="@currentCount.ToString()" Foreground="@Spectre.Console.Color.Green" />
</Columns>
<TextButton Content="Click me"
OnClick="IncrementCount"
BackgroundColor="@Spectre.Console.Color.Grey"
FocusedColor="@Spectre.Console.Color.Blue" />
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
using Microsoft.Extensions.Hosting;
using RazorConsole.Core;
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args)
.UseRazorConsole<Counter>();
IHost host = hostBuilder.Build();
await host.RunAsync();
For more complete sample applications, check out the Examples section below.
RazorConsole renders every frame through WidgetLayout: components become widgets that are measured, arranged and painted into terminal cells, which gives every element known bounds for focus, layout queries and coordinate-aware mouse events. Spectre.Console-backed content such as charts, Figlet text and syntax highlighting is painted as widget leaves.
The legacy Spectre.Console layout pipeline was removed in 1.0 (earlier warnings
said 1.1.0). If you upgrade from 0.x, remove any ConsoleAppOptions.RenderingPipeline
assignment and the RAZORCONSOLE_RENDERING_PIPELINE environment variable, which
no longer has any effect, and move custom ITranslationMiddleware translators to
IWidgetTranslator. ConsoleAppOptions.AfterRenderAsync was also removed; use the
root component's OnAfterRenderAsync, IHostApplicationLifetime.ApplicationStarted
or an IHostedService instead. ConsoleViewResult, ConsoleLiveDisplayContext and
FocusManager.BeginSession are now internal. See the
Widget Layout guide and the
custom translator guide for details.
Animated applications can opt into synchronized frame presentation with
options.ConsoleLiveDisplayOptions.EnableSynchronizedUpdates = true.
On terminals supporting DEC private mode 2026, all changed rows are presented
together instead of showing partially drawn frames. This option is off by default;
terminals without synchronized-output support may still show tearing.
Build your console UI using familiar Razor components with full support for data binding, event handling, and component lifecycle methods.
Create engaging user experiences with interactive elements like buttons, text inputs, selectors, and keyboard navigation - all with focus management handled automatically.
Get started quickly with 25+ pre-built components covering layout, input, display, and navigation needs:
Align, Columns, FlexBox, Rows, Grid, Padder, Scrollable, ViewHeightScrollableTextInput, TextButton, SelectBarChart, BreakdownChart, StepChart, Border, Figlet, Markdown, Markup, ModalWindow, Panel, SpectreCanvas, SyntaxHighlighter, TableSpinner, NewlineFor a full list of components and usage details, see the Built-in Components section below.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗