k-krawczyk opened a new pull request, #24235:
URL: https://github.com/apache/camel/pull/24235

   ## Description
   
   Fixes [CAMEL-23818](https://issues.apache.org/jira/browse/CAMEL-23818).
   
   In `camel tui`, opening the Actions menu (F2) and scrolling with the arrow 
keys leaves stray characters behind on the **Start/Stop Tape Recording** and 
**Show/Hide Keystrokes** rows. The text shifts one column left and leftover 
letters remain after the selection moves away.
   
   ## Root cause
   
   These are the only rows whose icon is an *emoji presentation sequence* — a 
text-default base glyph followed by Variation Selector-16 (U+FE0F):
   
   - Start/Stop Tape Recording: `U+23FA` / `U+23F9` + `U+FE0F`
   - Show/Hide Keystrokes: `U+2328` + `U+FE0F`
   
   Terminals render them 2 columns wide, but TamboUI measures them as 1 column 
(`CharWidth.of` sums base(1)+VS16(0), and `Buffer.setString` reserves a single 
cell). The 2-wide terminal glyph then drifts one column out of sync with the 
buffer and the redraw diff leaves ghost characters. Rows using regular wide 
emoji are unaffected.
   
   ## Fix
   
   Root cause is fixed upstream in TamboUI: tamboui/tamboui#388 (base+VS16 now 
counts as width 2 and reserves a continuation cell).
   
   This PR is the **temporary Camel-side workaround** described in the issue: 
swap the three labels in `ActionsPopup.renderActionsMenu` to unambiguous 2-wide 
emoji (no VS16), so the buffer width matches the terminal:
   
   | Label | Before | After |
   |-------|--------|-------|
   | Show/Hide Keystrokes | âŒ¨ī¸ (`U+2328`+VS16) | 🔤 (`U+1F524`) |
   | Stop Tape Recording | âšī¸ (`U+23F9`+VS16) | âŦ› (`U+2B1B`) |
   | Start Tape Recording | âēī¸ (`U+23FA`+VS16) | 🔴 (`U+1F534`) |
   
   The previous one-off "extra space after âŒ¨ī¸" hack is removed since the new 
icons render at the expected 2-wide. A code comment marks the workaround for 
reversion once a TamboUI release containing #388 is adopted via the 
`tamboui-version` bump in `parent/pom.xml`.
   
   Emoji choices are open to maintainer preference — happy to swap to other 
2-wide glyphs.
   
   ## Verification
   
   - `mvn -pl dsl/camel-jbang/camel-jbang-plugin-tui compile` — BUILD SUCCESS.
   - Change is limited to three string literals + a comment; no 
behavioral/logic change.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to