Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

🐛 Overlay onto a wide char's trailing column is dropped

オープン
#75 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

@natemoo-re がすでに取り組んでいます。

2026年6月7日 から。

評価

この issue はまだ評価されていません。

説明

bug
  • Package: clayterm
  • Version: v0.6.0 (reproduced on main @ d75fb4b)
  • Runtime: Deno 2.x
  • OS: platform-independent (WASM); reproduced on macOS

Describe the bug

When a glyph is floated onto the trailing column of an already-placed wide character, the overwrite is swallowed and the wide char is left dangling. On a 12x1 buffer, 你好 places 你 across cols 0-1 and 好 across cols 2-3; floating X onto col 1 (the trailing column of 你) emits \x1b[1;1H你\x1b[1;3H好... with no X anywhere. In a real terminal 你 then paints over both columns and fully hides the intended overlay. Overwriting a wide char's lead column already renders correctly, since the back buffer resets to spaces each frame; only the trailing-column case is broken.

To Reproduce

Render 你好 on a 12x1 buffer, then float X at col 1. The grid expects " X好 " but gets "你 好 ", and the byte stream contains no X.

Expected behavior

The orphaned lead column collapses to a space and the overlay glyph is actually emitted, so 你好 with X at col 1 renders " X好". Total row advance width is unchanged. Rows with no overlapping writes on wide chars stay byte-for-byte identical, and the cleanup only activates on a detected partial overwrite.

Additional Information

Failing test case on nm/repro/wide-char-overlay (test · diff).

The cell buffer has no continuation-cell marker (src/cell.h:8-12), so a trailing column is an unbacked implicit skip rather than an addressable placeholder. The fix likely lives in present_cups (src/clayterm.c:166), which advances x += wcwidth(...) past the trailing column (L185-201) and so never revisits or repairs it when overwritten this frame; present_lines (src/clayterm.c:213) has the same skip in line mode (L229-244), and setcell (src/clayterm.c:70) writes one cell without clearing the orphaned lead.

主要言語
TypeScript
スター
42
フォーク
2
平均マージ
2日 5時間
マージ済み PR(30日)
12

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

bombshell-dev/tty のほかの issue

bombshell-dev/tty の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。