Changes in version 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). Changes in version 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.