## Breaking
- `remove(id: string)` → `remove(child: BaseRenderable)` across all
renderables;
strings throw at runtime. Look up via `getRenderable(id)` /
`findDescendantById(id)` when needed (docs updated).
## Core
- All internal child bookkeeping uses object identity;
`renderableMapById` removed,
ids remain as a pure query API (first match wins on duplicates)
- `remove` warns in dev when the object is not a child; ScrollBox routes
internal
parts (wrapper, scrollbars) by parentage so `destroy()` fully detaches
them
- TextNode reparenting hygiene in
`add`/`replace`/`insertBefore`/`children`
- `destroy()` no longer skips children (live-array iteration bug) and
clears
z-index/pending-update state
## Renderer (zig)
- Frame output buffers grow on demand instead of dropping ANSI mid-frame
while
still committing cells (the source of "stale cells never repainted")
- Failed growth reports `.failed` → forced full repaint; partial frames
are not
flushed; buffers shrink back after 64 small frames; `deinit` frees with
the
owning allocator
## Frameworks
- react/solid reconcilers pass child references; react host config
tolerates
teardown overlap (unmount during `renderer.destroy()`)
Add showSelectionIndicator to hide the selected-item marker and reclaim
its two-column gutter. Preserve the existing default, restore it for
nullish framework updates, and document the new option.
Closes#1193
Refs #1192
Co-authored-by: leonid-shutov <leonid.shutov@hey.com>
The test suite was tightly coupled to Bun-specific APIs (bun:test,
Bun.sleep) making it impossible to validate behavior on other
runtimes. A module hook now rewrites bun:test imports for Node's
test runner, and fake clocks replace wall-clock delays so tests
run deterministically everywhere.
Fix FFI type mismatches and boolean normalization that caused
silent failures on non-Bun runtimes. Correct bundled asset
resolution so published packages load without a TypeScript loader.
Reorganize the example menu with themed sections, two-panel focus
management, and proper tree-sitter cleanup to prevent worker leaks.