Fix: replace ANSI string buffers with terminal cell surfaces#53
Merged
Conversation
- measure complete grapheme clusters in terminal cells - neutralize unsupported CSI, OSC, DCS, and control input - cover Unicode width and injection boundaries
- normalize SGR style state per grapheme-owned cell - track wide-cell continuations and explicit transparency - add cell-safe clipping and compositing primitives
- preserve the public lines adapter with sanitized cached encoding - make vertical stacking append-only over surface rows - composite transparency and wide graphemes without reparsing strings
- keep foreground-only spaces transparent during overlays - treat backgrounds and line decorations as explicit cell paint
- size the shared surface from every rendered child - position children on both alignment axes - preserve transparent cells while layering later children
- wrap and measure sanitized Text graphemes by display width - clip and pad text-field content without splitting wide cells - scroll focused fields on grapheme boundaries while preserving cursor indices
- prepare terminal-sized surfaces before ANSI encoding - keep complete wide graphemes only when their full span fits - normalize redundant input resets at the surface boundary
- apply view backgrounds without reparsing ANSI strings - preserve child colors while filling opaque padding cells - cover nested style resets during compositing
- sanitize notification text before wrapping - use display-cell widths for East Asian content - clarify text wrapping width documentation
- document terminal surfaces and cell-safe compositing - update the custom modifier example to use public APIs - align the architecture pipeline with boundary ANSI encoding
- consume control payloads before splitting logical lines - reject CRLF control clusters from single-line content - preserve legitimate line feeds for Text layout
- handle common single-scalar text without line-break allocation - retain CRLF cluster safety for multiline parsing
- replace repeated String indexing with direct grapheme mapping - preserve TextField and SecureField display behavior
- cover every cell occupied by the underlying grapheme - keep cursor visibility changes width-stable - prevent cursor rendering from splitting wide content
- describe compatibility lines as derived cell-surface output
- inspect semantic bold and dim state instead of ANSI substrings - keep the assertion stable across normalized SGR encoding
- Integrate async runtime and stable identity changes - Preserve retry-aware terminal write documentation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
FrameBuffer.linescompatibility adapter and update rendering documentationVerification
--rmcontainerCloses #11