mirror of
https://github.com/anomalyco/opentui.git
synced 2026-04-25 04:55:58 +03:00
[PR #377] [MERGED] fix: viewport culling stale data #495
Labels
No labels
bug
core
documentation
feature
good first issue
help wanted
pull-request
question
react
solid
tmux
windows
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/opentui#495
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/anomalyco/opentui/pull/377
Author: @kommander
Created: 12/3/2025
Status: ✅ Merged
Merged: 12/3/2025
Merged by: @kommander
Base:
main← Head:vieport-culling-stale-data📝 Commits (10+)
5389062reproduce386ec4aframe recorder0de2fccdocumentcfbc2bfupdate docse79c9e1renderer idle promise270501ereproduce high level9a554f1test5a0a76ffixadf84b8cleanup12ecd0fcleanup📊 Changes
14 files changed (+890 additions, -54 deletions)
View changed files
📝
packages/core/src/Renderable.ts(+15 -0)📝
packages/core/src/examples/editor-demo.ts(+0 -1)📝
packages/core/src/examples/index.ts(+3 -4)📝
packages/core/src/renderables/Diff.regression.test.ts(+3 -4)📝
packages/core/src/renderables/__tests__/LineNumberRenderable.scrollbox-simple.test.ts(+0 -22)📝
packages/core/src/renderer.ts(+92 -19)📝
packages/core/src/testing.ts(+1 -0)📝
packages/core/src/testing/README.md(+55 -1)➕
packages/core/src/testing/test-recorder.test.ts(+283 -0)➕
packages/core/src/testing/test-recorder.ts(+105 -0)📝
packages/core/src/tests/renderer.control.test.ts(+2 -1)➕
packages/core/src/tests/renderer.idle.test.ts(+221 -0)➕
packages/core/src/tests/scrollbox-culling-bug.test.ts(+108 -0)📝
packages/core/src/tests/scrollbox.test.ts(+2 -2)📄 Description
Fix for viewport culling using stale data when a new renderable was added to the scrollbox, which lead to flicker and empty space at the scrollbox bottom until another render pass was triggered.
Introduces
maxFps(default: 60), to cap automatic re-renders when renderables change viarequestRender. Configurable via renderer options.For testing introduces
.idle():Promiseon renderer, for tests to wait until automatic rendering is done andTestRecorderto record all frames between.rec()and.stop().🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.