You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
release: promote Rezi to beta (v0.1.0-beta.1) (#414)
* docs: reposition README, roadmap, and status wording for beta
Rewrite the README around the beta line: status and versioning policy,
requirements with the prebuilt binary matrix, a short architecture
overview, and contribution entry points. Refresh ROADMAP.md to reflect
shipped work and the path to 1.0, and update status wording from
pre-alpha to beta across the docs index, widget stability pages,
protocol versioning notes, and constraint guides.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* test(jsx): pin JSX component parity to the ui.* factory surface
The JSX component layer is maintained by hand. These tests assert that
every ui.* factory has a PascalCase component export, that every
component maps back to a factory, and that every component is
re-exported from the package index, so the wrapper layer cannot drift
silently when core widgets change.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* chore(release): prepare v0.1.0-beta.1
Set all workspace and template versions to 0.1.0-beta.1, sync the
lockfile, and add the changelog entry. Declare Bun support in the
testkit engines field, matching the other runtime packages.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,23 @@ The format is based on Keep a Changelog and the project follows Semantic Version
6
6
7
7
## [Unreleased]
8
8
9
+
## [0.1.0-beta.1] - 2026-06-11
10
+
11
+
### Changed
12
+
13
+
-**project**: Promoted Rezi from alpha to beta. The core public API is recorded and diffed in CI, widget guarantees are documented as stability tiers, and remaining pre-1.0 breaking changes will be batched and documented with migration notes.
14
+
-**testkit**: Declared Bun support (`bun >= 1.3.0`) in `engines`, matching the other runtime packages.
15
+
16
+
### Added
17
+
18
+
-**jsx**: Parity tests that pin the JSX component surface to the `ui.*` factory surface in both directions, so the hand-maintained wrapper layer cannot drift silently.
19
+
20
+
### Documentation
21
+
22
+
-**README**: Rewritten for the beta line: status and versioning policy, requirements and the prebuilt binary matrix, an architecture overview, and contribution entry points.
23
+
-**ROADMAP**: Refreshed to reflect shipped work (Bun support, CI benchmark comparisons) and the path to 1.0.
24
+
-**docs**: Status wording updated from pre-alpha to beta across the docs index, widget stability pages, and protocol versioning notes.
> **Status: pre-alpha.** Rezi is under active development. Public APIs, native ABI details, and behavior may change between releases. It is not yet recommended for production workloads.
Rezi is a TypeScript framework for building serious terminal applications on Node.js and Bun. It gives you structured layout, focus and input handling, routing, widgets, testing tools, and a native-backed rendering pipeline powered by the [Zireael engine](https://github.com/RtlZeroMemory/Zireael) written in C.
7
+
Rezi is a TypeScript framework for building terminal applications on Node.js and Bun. It provides structured layout, focus and input handling, routing, widgets, and testing tools, with rendering handled by [Zireael](https://github.com/RtlZeroMemory/Zireael), a terminal engine written in C.
Rezi is aimed at dashboards, control planes, internal tools, log viewers, and developer workflows that need more than line-oriented output: multi-panel layouts, routed screens, focusable controls, forms, tables, overlays, testing support, and predictable behavior under keyboard and mouse input.
15
+
Rezi is in **beta**. The core API — the app model, layout, input routing, theming, and the widget surface — is stable enough to build on, and the public API of `@rezi-ui/core` is recorded and diffed in CI. Breaking changes still happen before 1.0, but they are deliberate, batched, and documented in the [changelog](CHANGELOG.md) with migration notes.
14
16
15
-
## Why Rezi
17
+
Individual widgets carry explicit [stability tiers](docs/widgets/stability.md) (`stable`, `beta`, `experimental`), so the guarantees that apply to what you use are spelled out rather than implied.
16
18
17
-
- Structured app model for real TUI workflows
18
-
- Declarative widget API without requiring React
19
-
- Native-backed framebuffer diffing and terminal output through Zireael
20
-
- First-party widgets for forms, tables, overlays, routing, charts, and command flows
21
-
- Reproducible rendering and input contracts for behavior-first tests
19
+
## What Rezi Is For
22
20
23
-
## What Rezi Includes
21
+
Dashboards, control planes, internal tools, log viewers, agent consoles, and developer workflows that need more than line-oriented output: multi-panel layouts, routed screens, focusable controls, forms, tables, overlays, and predictable behavior under keyboard and mouse input.
22
+
23
+
## Why Rezi
24
24
25
-
- Layout primitives for rows, columns, grids, panels, spacing, and layered screens
26
-
- Interactive widgets such as buttons, inputs, selects, checkboxes, radios, sliders, tabs, tables, virtual lists, trees, dialogs, dropdowns, and toasts
27
-
- Graphics and data-display widgets including canvas, charts, gauges, sparklines, heatmaps, and image support
28
-
- Application primitives for focus management, keybindings, routing, theming, and controlled state updates
29
-
- Testing utilities for render assertions, routing and focus behavior, and replayable input workflows
30
-
- A native-backed rendering path through Zireael for layout, framebuffer diffing, and terminal output
25
+
- A structured app model instead of a rendering loop you assemble yourself
26
+
- A declarative widget API that does not require React
27
+
- Native framebuffer diffing and terminal output through a fuzz-tested C engine
28
+
- First-party widgets for forms, tables, trees, overlays, charts, file pickers, and command palettes
29
+
- Reproducible rendering and input contracts, so application behavior is testable
-`minimal`- small single-screen starter for focused utilities
91
-
-`cli-tool`- routed multi-screen starter for product-style terminal tools
92
-
-`starship`- larger command-console showcase with routing, charts, canvas, forms, and overlays
89
+
-`minimal`— single-screen starter for focused utilities
90
+
-`cli-tool`— routed multi-screen starter for product-style terminal tools
91
+
-`starship`— large command-console showcase with routing, charts, canvas, forms, and overlays
93
92
94
-
## Starship Demo
93
+
Start with `minimal` or `cli-tool`. Use `starship` (`npm create rezi my-console -- --template starship`) when you want the full surface area in one app.
95
94
96
-
Use the template when you want a larger example of Rezi's app architecture:
95
+
## Requirements
97
96
98
-
```bash
99
-
npm create rezi my-console -- --template starship
100
-
```
97
+
- Node.js 18+ or Bun 1.3+
98
+
- Linux, macOS, or Windows
101
99
102
-
The demo intentionally shows the broad surface area. For new applications, start with `minimal` or `cli-tool` unless you specifically want the full showcase.
100
+
`@rezi-ui/native` ships prebuilt binaries for Linux x64/arm64 (glibc), macOS x64/arm64, and Windows x64/arm64, so `npm install` never compiles C. Alpine/musl is not yet supported. Terminal capabilities — color depth, mouse, bracketed paste, synchronized output — are probed at startup, and output adapts to what the terminal reports.
103
101
104
-
## Feature Maturity
102
+
## How It Works
105
103
106
-
Rezi is still pre-alpha, but not every feature has the same risk profile. Core layout, input, routing, tables, virtual lists, command palette, and file-picker workflows are the current hardening focus. Richer surfaces such as advanced graphics, charts, code/editor-style widgets, and specialized dialogs should be treated as beta or experimental while the public API settles.
104
+
Your application builds a widget tree in TypeScript. `@rezi-ui/core` lays it out and serializes the result into a compact binary drawlist. The Zireael engine validates the drawlist, diffs it against the previous frame, and writes the minimal terminal update; in the other direction it parses keyboard, mouse, paste, and resize input into event batches that core routes through focus and keybindings. The protocol at this boundary is versioned and [documented](docs/protocol/zrdl.md).
105
+
106
+
The API stays in TypeScript; the hot path stays in C; both sides are tested in isolation. See [Architecture](docs/architecture/index.md).
All publishable packages share one version and release together.
120
+
121
+
## Versioning
122
+
123
+
Rezi follows semantic versioning, applied through stability tiers during the beta line:
124
+
125
+
-`stable` widgets and the core app, layout, and routing APIs do not change documented behavior without a changelog callout and a migration note
126
+
-`beta` widgets are tested for their core invariants; contract details may still evolve
127
+
-`experimental` widgets may change at any time
128
+
129
+
The full tier assignment per widget is in [Widget Stability](docs/widgets/stability.md).
130
+
131
+
## Testing
132
+
133
+
Applications are testable without a terminal: `@rezi-ui/core` includes a deterministic test renderer, and `@rezi-ui/testkit` adds assertions, frame snapshots, and seeded fuzz helpers on top of `node:test`. The framework holds itself to the same bar — behavior-contract tests, golden-frame tests, fuzzed parsers on both sides of the native boundary, and a Linux/macOS/Windows × Node 18/20/22 × Bun CI matrix. See the [testing guide](docs/guide/testing.md).
118
134
119
135
## Performance
120
136
121
-
Rezi is designed to stay fast on structured terminal workloads. Benchmark methodology, caveats, and committed result snapshots are documented in [BENCHMARKS.md](BENCHMARKS.md) and [docs/benchmarks.md](docs/benchmarks.md).
137
+
Rezi is designed to stay fast on structured terminal workloads. Benchmark methodology, caveats, and committed result snapshots are documented in [BENCHMARKS.md](BENCHMARKS.md) and on the [benchmarks page](docs/benchmarks.md).
Copy file name to clipboardExpand all lines: docs/guide/layout.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -244,8 +244,8 @@ When these child-constraint props are passed to unsupported widget kinds (for ex
244
244
Responsive layout notes:
245
245
246
246
- Use `fluid(min, max, options?)` to interpolate deterministically between breakpoints (`sm`, `md`, `lg`, `xl`) with floor semantics and clamped bounds.
247
-
-`%` size strings and responsive-map layout constraints (`{ sm, md, lg, xl }`) are removed in the breaking alpha. Use `expr("steps(...)")` or `fluid(...)`.
248
-
-`grid.columns` currently accepts `number | string` only (alpha contract). `columns: expr(...)` is invalid.
247
+
-`%` size strings and responsive-map layout constraints (`{ sm, md, lg, xl }`) were removed during the alpha line. Use `expr("steps(...)")` or `fluid(...)`.
248
+
-`grid.columns` currently accepts `number | string` only (beta contract). `columns: expr(...)` is invalid.
Copy file name to clipboardExpand all lines: docs/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Rezi is a code-first terminal UI framework for Node.js and Bun. It uses a declarative widget API, deterministic input routing, and native-backed rendering through the [Zireael](https://github.com/RtlZeroMemory/Zireael) C engine.
4
4
5
-
> **Status: pre-alpha**. Rezi is under active development. Public APIs, ABI details, and behavior may change between releases. It is not yet recommended for production workloads.
5
+
> **Status: beta**. The core API is stable and recorded against a public API report. Breaking changes before 1.0 are batched and documented in the changelog with migration notes. Per-widget guarantees are listed in [Widget Stability](widgets/stability.md).
0 commit comments