NousResearch/hermes-agent

Emoji rendering fix for Hermes Desktop

Cluster 40364. Data as of

Nothing open on GitHub. Fix merged in #40928 on 7 Jun 2026. Check it covers your case.

The short answer

0open issues
0open PRs
3items grouped
Known?
Yes. 3 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #40928. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #40928. That is separate from the fix event.
Still open
Nothing open on GitHub.

A bug was reported and addressed regarding emoji not displaying correctly on Hermes Desktop. The fix involves adding a color-emoji font fallback to ensure proper emoji rendering.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #40928 fix(desktop): color-emoji font fallback so emoji render (#40364)

    merged to main

    files: apps/desktop/src/styles.css, apps/desktop/src/themes/presets.test.ts, apps/desktop/src/themes/presets.ts

    Show the diff
    • apps/desktop/src/styles.css
      @@ -266,8 +266,10 @@
           --dt-user-bubble: var(--ui-chat-bubble-background);
           --dt-user-bubble-border: var(--ui-stroke-tertiary);
       
      -    --dt-font-sans: 'Segoe WPC', 'Segoe UI', -apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif;
      -    --dt-font-mono: 'Cascadia Code', 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace;
      +    --dt-font-sans: 'Segoe WPC', 'Segoe UI', -apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif,
      +      'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', emoji;
      +    --dt-font-mono: 'Cascadia Code', 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace,
      +      'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji', emoji;
           --dt-base-size: 1rem;
           --dt-line-height: 1.5;
           --dt-letter-spacing: 0;
    • apps/desktop/src/themes/presets.test.ts
      @@ -0,0 +1,33 @@
      +import { describe, expect, it } from 'vitest'
      +
      +import { BUILTIN_THEME_LIST, DEFAULT_TYPOGRAPHY, EMOJI_FALLBACK } from './presets'
      +
      +// #40364: none of the UI text/mono fonts carry emoji glyphs, so every font
      +// stack must end with a color-emoji fallback or emoji render as tofu on
      +// platforms whose default font lacks them (e.g. Linux).
      +describe('theme typography emoji fallback (#40364)', () => {
      +  const stacks: Array<[string, string]> = [
      +    ['DEFAULT_TYPOGRAPHY.fontSans', DEFAULT_TYPOGRAPHY.fontSans],
      +    ['DEFAULT_TYPOGRAPHY.fontMono', DEFAULT_TYPOGRAPHY.fontMono],
      +    // A theme may override only fontMono (fontSans then falls back to the
      +    // default, which already carries the emoji stack), so skip undefined.
      +    ...BUILTIN_THEME_LIST.flatMap(theme =>
      +      (
      +        [
      +          [`${theme.name}.fontSans`, theme.typography?.fontSans],
      +          [`${theme.name}.fontMono`, theme.typography?.fontMono]
      +        ] as Array<[string, string | undefined]>
      +      ).filter((entry): entry is [string, string] => typeof entry[1] === 'string')
      +    )
      +  ]
      +
      +  it.each(stacks)('%s includes a color-emoji font', (_label, stack) => {
      +    expect(stack).toMatch(/Apple Color Emoji|Segoe UI Emoji|Noto Color Emoji|(^|,\s*)emoji\b/)
      +  })
      +
      +  it('EMOJI_FALLBACK lists the major platform emoji fonts', () => {
      +    expect(EMOJI_FALLBACK).toContain('Apple Color Emoji')
      +    expect(EMOJI_FALLBACK).toContain('Segoe UI Emoji')
      +    expect(EMOJI_FALLBACK).toContain('Noto Color Emoji')
      +  })
      +})
    • apps/desktop/src/themes/presets.ts
      @@ -5,10 +5,19 @@
       
       import type { DesktopTheme, DesktopThemeTypography } from './types'
       
      +// Color-emoji fonts to append to every stack as a last resort. None of the UI
      +// text/mono fonts carry emoji glyphs, so without this emoji render as tofu
      +// boxes on platforms whose default text font lacks them (e.g. Linux/#40364).
      +// Covers macOS, Windows, Linux, plus the `emoji` generic for anything else.
      +export const EMOJI_FALLBACK =
      +  '"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", emoji'
      +
       const SYSTEM_SANS =
      -  '"Segoe WPC", "Segoe UI", -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", system-ui, sans-serif'
      +  '"Segoe WPC", "Segoe UI", -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", system-ui, sans-serif, ' +
      +  EMOJI_FALLBACK
       
      -const SYSTEM_MONO = '"Cascadia Code", "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace'
      +const SYSTEM_MONO =
      +  '"Cascadia Code", "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace, ' + EMOJI_FALLBACK
       
       export const DEFAULT_TYPOGRAPHY: DesktopThemeTypography = { fontSans: SYSTEM_SANS, fontMono: SYSTEM_MONO }
       
      @@ -228,8 +237,8 @@ export const cyberpunkTheme: DesktopTheme = {
           userBubbleBorder: '#004800'
         },
         typography: {
      -    fontMono: `"Courier New", Courier, monospace`,
      -    fontSans: `"Courier New", Courier, monospace`
      +    fontMono: `"Courier New", Courier, monospace, ${EMOJI_FALLBACK}`,
      +    fontSans: `"Courier New", Courier, monospace, ${EMOJI_FALLBACK}`
         }
       }
       

1 PR closed without merging

From the close comments: merged via another change 1

  • #40388 fix(desktop): add color-emoji font fallback so emoji render (#40364) · merged via another change → bec0796, fe2942a, #40928
Closed issues · 1
  • Closed#40364[Bug]: Emoji in Hermes Desktop not showing correctly
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.67: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. 1.00 means every pair is linked.

Pick up a Lab task

Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.

Open the Lab

At a glance

Merged PRs
#40928
Closed issues
1
Attempts
1 PR closed without merging
Fix link checked
7 Jun 2026

For your agent

The same facts, typed.