silvery 0.12.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +2 -2
- package/dist/index.js +25 -25
- package/dist/ink.js +9 -9
- package/dist/runtime.js +10 -10
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,27 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.15.0] - 2026-04-10
|
|
11
|
+
|
|
12
|
+
### Performance
|
|
13
|
+
|
|
14
|
+
- **Lazy TextFrame** — defer buffer snapshot clone + 80K Cell object creation to first access. Eliminates the #1 per-frame cost that was misattributed to React reconciliation. **15–20× faster than Ink** (was 3–6×).
|
|
15
|
+
- **Skip syncPrevLayout** — O(N) tree walk skipped on cursor move when no layout changed.
|
|
16
|
+
- **No-op frame skip** — return prev buffer unchanged when no dirty flags set.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **Text layout: `width="snug-content"`** — tightest box width for same line count. Inspired by [Pretext shrinkwrap](https://chenglou.me/pretext/bubbles/).
|
|
21
|
+
- **Text layout: `wrap="even"`** — minimum-raggedness line breaking via dynamic programming. [Pretext Knuth-Plass](https://chenglou.me/pretext/).
|
|
22
|
+
- **Floating component defaults** — ModalDialog, Toast, Tooltip default to `snug-content`. All accept spread BoxProps.
|
|
23
|
+
- **Text layout demo** — `bunx @silvery/examples text layout`.
|
|
24
|
+
- **Benchmarks** — resize, scroll, large terminal (400×200), Pretext algorithms, reconciliation profiling.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- **Wide char STRICT** — grapheme cluster handling in STRICT output verification parser.
|
|
29
|
+
- **Pretext correctness** — 5 bugs from GPT 5.4 Pro review.
|
|
30
|
+
|
|
10
31
|
## [0.12.0] - 2026-04-10
|
|
11
32
|
|
|
12
33
|
### Added
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Powerful apps. Polished UIs. Proudly terminal.**
|
|
4
4
|
|
|
5
|
-
Ink-compatible React renderer for interactive terminal apps. Same `Box`, `Text`, `useInput` API you know. 3–
|
|
5
|
+
Ink-compatible React renderer for interactive terminal apps. Same `Box`, `Text`, `useInput` API you know. 3–27× faster (typically 15–20×) in mounted rerender benchmarks.
|
|
6
6
|
|
|
7
7
|
```console
|
|
8
8
|
$ npm install silvery react
|
|
@@ -35,7 +35,7 @@ await render(<Counter />).run()
|
|
|
35
35
|
|
|
36
36
|
### Shiny new stuff
|
|
37
37
|
|
|
38
|
-
- **[Best-in-class performance](https://silvery.dev/guide/silvery-vs-ink#performance-size)** — 3–
|
|
38
|
+
- **[Best-in-class performance](https://silvery.dev/guide/silvery-vs-ink#performance-size)** — 3–27× faster (typically 15–20×) than Ink in mounted rerender benchmarks, 10–20× less terminal output. Cell-level dirty tracking, only changed cells emit. Per-node skip for unchanged subtrees. Works in inline mode with native scrollback, not just fullscreen
|
|
39
39
|
- **Pure TypeScript, zero native deps** — no WASM, no build steps. [Layout via Flexily](https://silvery.dev/guide/layout-engine) (or Yoga). Works on Alpine, CI, Docker, everywhere
|
|
40
40
|
- **[Web-like responsive layout](https://silvery.dev/guide/silvery-vs-ink#responsive-layout)** — `useBoxRect()` returns actual dimensions during render. No post-render measurement, no two-pass layout cycle. Enables:
|
|
41
41
|
- [Scroll containers](https://silvery.dev/guide/scrolling) — `overflow="scroll"` with virtualization
|