mirror of
https://github.com/anomalyco/opentui.git
synced 2026-09-19 01:26:03 +08:00
ff1fc35582
## 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()`)