Skip to content

bug(remote): feed symbols render as Apple color emoji on the phone #1194

Description

@Juliusolsson05

Summary

The phone companion shows Apple color emoji where the desktop shows monochrome symbols. The worst case is the ⏺ tool bullet on every Claude row. This has come back after several attempts to fix it.

Root cause

  • Where the characters come from. The phone mounts the desktop's own feed rows (refactor(remote): put the phone on the desktop's rendering seams #1186), and those rows use symbol characters that have the Unicode Emoji property:
    • ⏺ U+23FA: 29 uses, the Claude tool bullet
    • ⏸ U+23F8
    • ☑ U+2611 and ☐
    • 🖼 U+1F5BC
    • ↗ U+2197
  • Why the fonts don't catch them. The app font stack is 'JetBrains Mono', ui-monospace, Menlo, Monaco, monospace, and JetBrains Mono has no glyph for ⏺ ⏸ ☑ 🖼. I verified this against the font's cmap.
  • Why only the phone is affected. On macOS, Chromium falls back to a monochrome system symbol font. iOS Safari has no such font, so it falls back to Apple Color Emoji.
  • Why earlier fixes didn't stick. They replaced emojis in the phone's own chrome with bundled SVG icons (5ad922cf). The shared rows were never covered, so the symbols reappeared wherever a row drew one.

Fix

Put monochrome symbol fonts that verifiably contain these glyphs into every app font stack, ahead of the system fallbacks:

  • Noto Sans Symbols 2 covers ⏺ ⏸ ☑ ☐ 🖼 ✓ ✗ ◐ ◌ ▸ ▾ ❯ ● ✕ ⌘.
  • Noto Sans Symbols covers ↗.

Both are served by the Google Fonts import the app already uses, and they only download the subsets for characters that are actually drawn.

Acceptance criteria

  • Every font option's stack names the symbol fallbacks before the system generics. A test pins this.
  • Both the desktop and the phone use the same stack.
  • Emoji that agents write in their own text (✅ etc.) are content and still render as emoji on both clients. That is unchanged and deliberate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugSomething works wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions