Symptoms in the Ink TUI (hermes -p heavy-coder chat):
- A stray letter beside the first character you type (often h, c, a, t - fragments of the
heavy-coderprefix as columns drift) - Multi-character junk in the composer even with the IDE skin, e.g.
heavy-coder > Iky "refactor the auth module"whereIkyis not your text - prefix column math is still off until you shorten the profile name (see mitigations) - A miscolored letter inside the prompt prefix (
heavy-coder ⛓ …) - Ghost text on the right edge while typing, like
t tt r re re(each key leaves debris on the margin) - One vertical
#out of step in the HEAVYCODER banner (figlet rows were not the same width)
These are usually not random font bugs. The composer splits the row into:
- A fixed-width prompt prefix (
heavy-coder+ skinprompt_symbol) - The TextInput field (hardware caret)
On IDE built-in terminals, emoji width and extra prompt glyphs often disagree with Hermes Ink's stringWidth() math. The prefix bleeds one or more cells into the input zone, so you see prompt junk as a "ghost" character next to your text, or a letter from heavy-coder painted in the wrong column.
The t tt r re re pattern is Ink fast-echo: keystrokes are written straight to the PTY for speed. When the prompt column math is off (or the IDE terminal cursor diverges from Ink's model), those writes land on the right margin instead of after your real input. Hermes should disable fast-echo in VS Code / Cursor / Windsurf (same class of bug as Apple Terminal and tmux).
display.auto_ide_skin: true(default): on session start, profile bootstrap setsheavy-coder-idein Cursor / VS Code / Windsurf terminals (ASCII>prompt, no tall hero art). Setdisplay.auto_ide_skin: falseto keepheavy-codereverywhere.branding.prompt_symbol: "⛓"(chain only) onheavy-coder. Do not add▸,❯, etc. after the chain; that second glyph is the usual source of the ghost beside your first typed character.heavy-coder-ideandheavy-coder-light: ASCII>prompt (no emoji width drift). Light panels:export HERMES_TUI_THEME=light- bootstrap picksheavy-coder-lightwhenauto_ide_skinis on.- Banner figlet: all seven HEAVYCODER rows are padded to the same width so no lone
#column sticks out vertically.
-
Shorten the profile prefix (most effective for
Iky-style bleed;>skin alone may not be enough):hermes profile install github.com/codegraphtheory/heavy-coder --name hc --alias --force --yes hc chat
Prompt becomes
hc >instead ofheavy-coder >. -
IDE-safe launcher (after Hermes honors
HERMES_TUI_FAST_ECHO=0):./scripts/ide_safe_chat.sh chat
-
Widen the terminal panel in the IDE (more columns reduces wrap/overlap).
-
Classic CLI (no Ink composer, no fast-echo):
hermes -p heavy-coder chat --cli
-
Upstream / local Hermes: patch
ui-tui/src/components/textInput.tsxsosupportsFastEchoTerminal()returnsfalsefordetectVSCodeLikeTerminal()and respectsHERMES_TUI_FAST_ECHO=0. Rebuild TUI:cd ui-tui && npm run build.
After skin or Hermes changes, restart the session (/new or exit and relaunch).
The cyberpunk heavy-coder skin targets dark terminal backgrounds. Secondary copy (status bar model name, /help hints, tool progress, timestamps) uses banner_dim, which Ink maps to color.muted. On a light IDE terminal panel, near-white body text (#F0FDFF) and purple-muted tones can look like unreadable dim mush, especially with Ink dimColor.
Dark terminal (default look): reinstall the updated skin (brighter banner_dim / status colors in 0.2.21+).
Light terminal panel (common in Cursor):
export HERMES_TUI_THEME=light
hermes -p heavy-coder chat
# bootstrap sets heavy-coder-light when display.auto_ide_skin is true; or /skin heavy-coder-lightOr set your IDE terminal profile to a dark background and keep /skin heavy-coder.