Is this a reproducible bug?
Current behavior
After a pane outputs a character carrying U+FE0F, herdr leaves residual text on screen and the pane border shifts off alignment from that point onward.
Expected behavior
U+FE0F is a zero-width combining mark, so herdr should consume it without advancing the cursor and keep cell accounting in sync — no residual text, no border shift.
Reproduction
Minimal repro from a herdr pane:
printf 'before -> after\n' # plain arrow, no VS-16 — OK
printf 'before ➡ after\n' # U+27A1 alone — OK (text presentation)
printf 'before ➡️ after\n' # U+27A1 + U+FE0F — TUI breaks
Impact
Pane content becomes unreadable whenever an agent's output contains any VS-16 dingbat (common in LLM output — ⚠️, ➡️, etc.).
Environment
- Herdr version: 0.8.0
- Update channel (stable or preview): stable
- Operating system: Windows11 WSL2 Ubuntu 26.04 LTS
- Terminal: Wezterm
- Shell, if relevant: fish
- Relevant config, if any: font Maple Mono NF CN (in wezterm config)
Is this a reproducible bug?
Current behavior
After a pane outputs a character carrying U+FE0F, herdr leaves residual text on screen and the pane border shifts off alignment from that point onward.
Expected behavior
U+FE0F is a zero-width combining mark, so herdr should consume it without advancing the cursor and keep cell accounting in sync — no residual text, no border shift.
Reproduction
Minimal repro from a herdr pane:
printf 'before -> after\n' # plain arrow, no VS-16 — OK
printf 'before ➡ after\n' # U+27A1 alone — OK (text presentation)
printf 'before ➡️ after\n' # U+27A1 + U+FE0F — TUI breaks
Impact
Pane content becomes unreadable whenever an agent's output contains any VS-16 dingbat (common in LLM output —⚠️ , ➡️, etc.).
Environment