anomalyco / anomalyco/opencode

TUI: Markdown syntax rendered as raw text in assistant messages

Open
#38,828 3 comments 0 reactions 1 assignee View on GitHub

@simonklee is already working on this.

Since Jul 25, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Bug Description

Assistant text messages in the TUI display raw markdown syntax instead of formatted output. Literal **bold**, \inline code`, ----separators, and##` headers are printed as-is.

Expected Behavior

  • bold → ANSI bold escape codes
  • inline code → distinct color/background, backticks stripped
  • code blocks → syntax highlighted (tree-sitter) or indented/boxed
  • ---- → full-width divider character (─)
  • ## Header → bold/colored, no leading #

Current Behavior

All markdown syntax appears literally in the terminal output.

Relevant Code

The TextPart component in packages/tui/src/routes/session/index.tsx (line ~1679) uses the <markdown> element from @opentui/core:

<markdown
  syntaxStyle={syntax()}
  streaming={true}
  internalBlockMode="top-level"
  content={props.part.text.trim()}
  tableOptions={{ style: "grid" }}
  conceal={ctx.conceal()}
  fg={theme.markdownText}
  bg={theme.background}
/>

The ReasoningPart (line ~1572) uses <code filetype="markdown"> for reasoning blocks.

It appears the <markdown> component from @opentui/core (v0.4.5) is not converting markdown syntax to ANSI-styled terminal output — the raw markdown passes through unformatted.

Environment

  • opencode version: 1.18.5
  • Terminal: iTerm2 on macOS
  • @opentui/core version: 0.4.5

Notes

The project already has marked (v17.0.6) and marked-shiki (v1.2.1) in dependencies, which could be used as an alternative markdown-to-ANSI renderer if the @opentui/core <markdown> component is not intended to handle this.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.