← Reference
Rich rendering
What the GPU chat renders beyond plain text.
Full notes from the app
The agent's Markdown reply is parsed and drawn by Wingman's rich-text renderer — prose/headings/lists, syntax-highlighted fenced code, unified diff blocks, inline/display LaTeX math, inline images, chart blocks, mermaid diagrams, and tree file listings — each mounted as its own atom and cached so a long transcript stays smooth. GPU only — the Mission Control window is the sole frontend.
8 entries · kcode 0.4.0
8 shown
| Kind | Description |
|---|---|
| Markdown prose | Headings, paragraphs, lists, inline emphasis, and links — streamed incrementally as the reply arrives, with settled blocks reused so only the tail re-parses. |
| Syntax-highlighted code | Fenced code blocks highlighted per language via tree-sitter, coloured by a fixed multi-colour syntax palette (distinct hues for keyword / string / number / comment / function / type / … — dark or light variant chosen by the theme background luminance, not collapsed onto the theme accent, so highlighting is never monochrome). Grammars: Rust, Python, JS, TS, C, C++, Go, Java, Lua, Ruby, Bash, JSON, YAML, TOML, CSS, HTML, Markdown; common aliases resolve (ts, py, rs, c++, sh, …). An unknown or untagged language falls back to plain monospace. Runs carry font attributes as well as colour — comments render italic, markdown headings bold, URLs underlined — and 100 tree-sitter capture scopes are recognised (the dotted families plus the older per-kind names several grammars still emit), so Lua control flow, TOML/YAML booleans, string escapes, shell interpolation and loop labels are coloured instead of falling through to plain text. Two extra hues beyond the shared set: builtin (a language's own names — self/this/None/primitive types — held louder than user identifiers) and escape (a \n set apart from its quotes). |
| Diffs | A fenced diff block renders as a coloured unified diff: added/removed/context/hunk lines classified and tinted, the +/-/line-number gutter kept as chrome. |
| Math (LaTeX) | Inline $…$ and display $$…$$ LaTeX typeset to a texture via math-view; the LaTeX source stays selectable so a copy yields the markup, not a hole. |
| Images | Inline Markdown images — data: URIs decoded in-process, http(s) fetched host-side — drawn at a fit size; alt text is the fallback and the selectable text. |
| Charts | A fenced chart block whose body is a small JSON spec (kind: bar/line/pie, a series list of values, optional labels/title) renders inline as a bar/line/pie image via chart-view (headless plotters → texture), cached per source/theme/scale. The model learns the schema from its system prompt; a malformed spec falls back to the raw JSON so it is never lost. |
| Diagrams (Mermaid) | A fenced mermaid block renders inline as a diagram image via diagram-view (the pure-Rust merman renderer → texture), cached per source/scale. Flowcharts, sequence/class/state diagrams, and the rest — the model emits standard Mermaid syntax it already knows, so no schema is taught; an unparseable diagram falls back to the raw source so it is never lost. |
| File trees | A fenced tree block renders a file/directory listing as a styled tree via ui-primitives' tree renderer (native elements — indent guides + folder/file-type icons, not a texture). The model writes classic tree output (├──/└──) or plain indentation; a trailing / marks a directory. A trailing status word — (modified)/(added)/(deleted)/(untracked)/(renamed) — renders a change badge (✏️ modified, ✨ added, 🗑️ deleted, ❓ untracked, ➡️ renamed) over a faint status-coloured row tint. An empty or unparseable block falls back to its raw text so it is never lost. |