NEWS
shinygenui 0.2.0
Chat integration
- Require shinychat >= 0.5.0 and ellmer >= 0.4.1. Streaming, cancellation,
and attachments are now delegated to
shinychat::chat_server(),
which relies on ellmer's stream controller. Conversation history stays
disabled until it can restore the canvas and registry together.
The package no longer imports {promises} directly (#17, #21).
- Greetings now use the shinychat welcome message API and disappear after the
first user message. They remain display only and are not sent to the model (#21).
- Use
shinychat::tool_result_display() for tool results and present tense
titles for running tools. The mtcars example uses the input toolbar to keep
its prompt buttons above the composer (#21).
Examples
- Example and acceptance test apps now read their model and reasoning effort
from the required
SHINYGENUI_MODEL and SHINYGENUI_EFFORT environment
variables instead of relying on defaults (#9).
- The
01-mtcars-explorer example now offers prompt buttons above the
chat composer. A click fills and focuses the composer without submitting (#10).
Documentation
- The README now includes a recording of the mtcars explorer example (#11).
- Code examples now consistently use the same model provider while continuing
to support any ellmer provider (#8).
Branding
- Add a hex sticker logo with a p5.brush watercolor polygon background (#14, #15, #24).
shinygenui 0.1.0 (2026-09-09)
New features
- Use
genui_component() to define a component and genui_catalog() to
collect components into a catalog. Each component becomes an ellmer tool
with validated arguments.
- Use
genui_canvas() and genui_server() to let the model add components to
a running app. The included tools let it update or remove a component,
clear the canvas, and inspect the current canvas.
- Every call from the model passes through
genui_dispatch() before it can
change the canvas. If a call fails, the model receives the error and the
Shiny session keeps running.
genui_components_bslib() provides a value box, Markdown card, data table,
scatter plot, and histogram with a slider for the number of bins.
genui_card_row() provides a container for arranging these components.
genui_trace() records each successful call. genui_replay() can rebuild
the canvas from that record without an LLM.