Skip to content

Bump vt100 fork: fix VS16 emoji-width residue - #51

Merged
Junyi-99 merged 2 commits into
mainfrom
fix/vt100-emoji-width-residue
May 29, 2026
Merged

Bump vt100 fork: fix VS16 emoji-width residue#51
Junyi-99 merged 2 commits into
mainfrom
fix/vt100-emoji-width-residue

Conversation

@Junyi-99

Copy link
Copy Markdown
Member

What

Bumps the pinned vt100 (fork deck branch) to e84a954 and records the new patches in docs/vt100-fork.md. Two files: Cargo.lock + the doc.

Why

A line of text + emoji + bold text left the trailing character on screen ("residue") when scrolling tmux scrollback. Root cause was in the vt100 parser: a text-presentation base char followed by U+FE0F (VS16 — e.g. ❤️, ⚠️) was stored as a single narrow cell, while tmux, the host terminal, and unicode-width's string-level width all count it as 2 columns. Every column after the emoji drifted by one.

Verified with a parser unit test, a real-tmux integration test (tmux renders AB❤️CD, parser must reconstruct the emoji as wide), and manually in the running app — residue is gone.

What the bump carries

change origin
VS16 emoji double-width (+ orphan-continuation fix found in review) ours
Row::erase saturating_sub underflow guard ours
1×1 grid scroll underflow cherry-picked doy/vt100-rust#29 (@ealmloff)
HPA + REP escape sequences cherry-picked doy/vt100-rust#23 (@KacperLa)
DECSCUSR cursor styles cherry-picked doy/vt100-rust#21 (@reubeno)

Commit-level detail (incl. (cherry picked from …) + upstream PR links) is on the fork's deck branch.

Verification

cargo build + cargo test green (259 tests, 0 failures).

🤖 Generated with Claude Code

Updates the pinned vt100 (deck branch) to e84a954, fixing a rendering
bug: a text-presentation emoji followed by U+FE0F (e.g. ❤️, ⚠️) was
treated as one column by the parser, while tmux and the host terminal
render it as two. Every column after the emoji drifted by one, leaving
the trailing characters of a line as on-screen residue when scrolling
tmux scrollback.

The bump also carries a Row::erase underflow guard and three
cherry-picked upstream PRs (1x1 grid scroll underflow #29, HPA+REP #23,
DECSCUSR cursor styles #21). docs/vt100-fork.md records all of these
with their upstream PR links and authors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 29, 2026 06:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR bumps the pinned vt100 fork commit used by deck’s terminal emulation path and updates the fork-maintenance documentation to describe the additional fixes carried by the fork.

Changes:

  • Updates Cargo.lock to pin vt100 to commit e84a9548....
  • Expands docs/vt100-fork.md with the current patch list, origins, and upstream/cherry-pick status.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.

File Description
Cargo.lock Updates the pinned vt100 fork revision.
docs/vt100-fork.md Documents the fork’s current patch set and origins.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/vt100-fork.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Junyi-99
Junyi-99 merged commit 02e5ea7 into main May 29, 2026
@Junyi-99
Junyi-99 deleted the fix/vt100-emoji-width-residue branch May 29, 2026 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants