Problem
Fenced code blocks rendered by Markdown.tsx (<pre><code>) have no per-block Copy button. On a phone, selecting code precisely is painful, so copying a snippet the agent produced is effectively impossible.
Why it matters
Claude and ChatGPT put a persistent Copy button on every code block. This is one of the most-used affordances in a coding chat.
Suggested fix
Render each <pre> with a header row containing the language label + a Copy button (navigator.clipboard.writeText), mirroring the existing copy button on the landing install command (LandingScreen.tsx).
Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.
Problem
Fenced code blocks rendered by
Markdown.tsx(<pre><code>) have no per-block Copy button. On a phone, selecting code precisely is painful, so copying a snippet the agent produced is effectively impossible.Why it matters
Claude and ChatGPT put a persistent Copy button on every code block. This is one of the most-used affordances in a coding chat.
Suggested fix
Render each
<pre>with a header row containing the language label + a Copy button (navigator.clipboard.writeText), mirroring the existing copy button on the landing install command (LandingScreen.tsx).Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.