Requirements
The README requires dsh and pnpm on PATH. Any open-source DSH build is supported. After installation or changes, restart the DSH web interface and perform a hard refresh. The documented verification prompt is “use dsh-ui to draw a stats dashboard”. A fresh clone should be installed with its dependencies; the README specifically warns that link: does not install mermaid, three or react dependencies and is intended for local development after pnpm install.
Rendering channels
At startup, the plugin checks whether the host provides the fence-registry extension point.
- With
fence-registry, UI fences use the host streaming render pipeline.
- Without it, the DOM channel observes the session DOM and mounts a separate render tree.
The DOM channel supports the md-code-block surface, .code-block, .code-block-small, and a structural fallback for an element labelled dsh-ui with a <pre> body. Streaming rendering is supported: the first completed component can appear before the reply finishes.
Tools and interactions
The render_ui tool renders the same UI specification as a card in the tool row. Answer-style UI is delivered through a fence; tool-style UI uses render_ui. Setting panel: true makes the UI appear in the persistent session panel above the composer.
Buttons, switches, inputs, dropdowns, checkboxes, radios, textareas and quizzes can carry action. Events are sent back to the model, with same-name actions debounced over a 300 ms trailing window. Inputs submit on Enter; textareas submit on Ctrl+Enter when submit:true. Fields with an id are collected into a submit action.
State and safety behaviour
Answers, submission locks and input values are persisted per session and content fingerprint, with an LRU cap of 200 blocks. Identical content keeps its state; new content starts fresh. Passwords, API keys, access tokens, recovery codes and other secrets must not be requested. Password inputs are masked, not persisted and excluded from form collection. The README does not document additional configuration keys or environment variables.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub