Repository navigation
fix: keep emoji composed and preserve terminal cell layout - #101
Merged
Merged
Conversation
Replaying cells through mode 2027 can join independently printed scalars and infer different widths from cells created under mixed mode settings. A remote attach can therefore lose characters or shift following text. Restore stored widths and cluster contents explicitly, including wrap latches and hidden screens, before expanding default cluster handling. BREAKING CHANGE: raw attach seeds require protocol version 3. Update clients and servers together; older peers are rejected during hello.
Ordinary shell and agent output does not negotiate grapheme mode, while font fallback can trap emoji selectors in monochrome faces or let color artwork overlap neighboring text. Cluster boundaries, stored grid spans, and glyph pen advances must agree across ingest, font selection, and rendering. Keep those changes together so enabling clustering also preserves Thai and Hangul layout and makes results independent of PTY read boundaries. Prefer emoji faces by Unicode presentation and selectors, leaving text-default wide symbols in the configured font. Applications can query or disable mode 2027 when they require scalar-width accounting.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d4d0ae317d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Color tables can coexist with monochrome glyphs in the same face. Selecting by table presence alone leaves VS16 monochrome and skips valid VS15 text glyphs. Check the requested cluster with the drawing pipeline and cache by full cluster, within a bounded budget, so modifiers cannot reuse a base-only choice. Cover mixed bitmap/outline faces and cluster cache separation with deterministic fixtures.
Merged
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.
Ordinary shell and agent output can split emoji sequences, select
monochrome fallback glyphs, or overlap following characters. Enable
grapheme clustering by default and keep Unicode emoji presentation,
stored cell spans, and shaped glyph advances consistent through the font
and render paths. Text-default wide symbols retain the configured font.
Applications can query or disable mode 2027 for scalar-width accounting.
Mixed color/outline faces are checked using the requested cluster's
shaped glyphs and actual raster formats. Presentation choices are cached
by full cluster, including modifiers and selectors, with a bounded cache.
Synthetic attachment seeds restore stored cell boundaries and widths,
including output created under different mode-2027 settings, wrap
latches, and hidden screen contents.
Compatibility:
servers together; older peers are rejected during
noa.hello.Validation:
cargo fmt --all -- --checkandcargo build --workspace --locked --offlinepassed.cargo test --workspace --locked --offline --quiet --no-fail-fastpassed: 2,762 passed, 0 failed, 15 existing ignored tests.
cargo clippy -p noa-font -p noa-render --all-targets --locked --offline -- -D warningspassed.glyph-presentation fix and pass with it applied. Fixtures are generated
from the vendored font, without depending on installed system fonts.
clusters, configured text fonts, emoji presentation selectors, raster
cache scaling, and mixed-mode seed replay with wrap and cursor state.
following-text overlap, and Thai glyph placement.