Breaking changes
chat_mod_server()now returns a list of reactives forlast_inputandlast_turn, as well functions toupdate_user_input(),append()andclear()the chat. (#130, #143, #145)
New features
-
Added
chat_restore()which adds Shiny bookmarking hooks to save and restore the{ellmer}chat client. (#28, #82) -
Added
update_chat_user_input()for programmatically updating the user input of a chat UI element. (#78) -
shinychat now shows tool call request and results in the UI, and the feature is enabled by default in
chat_app()and the chat module (chat_mod_server()). When usingchat_append()withchat_ui(), setstream = "content"when you call the$stream_async()method on theellmer::Chatclient to ensure tool calls are included in the chat stream output. Learn more in the tool calling UI article. (#52) -
Added
chat_append(icon=...)andchat_ui(icon_assistant=...)for customizing the icon that appears next to assistant responses. (#88)
Improvements
-
chat_app()now correctly restores the chat client state when refreshing the app, e.g. by reloading the page. (#71) -
External links in chat messages in
chat_ui()now open in a new tab by default, with a confirmation dialog. (#120)
Bug fixes
- The chat input no longer submits incomplete text when the user has activated IME completions (e.g. while typing in Japanese or Chinese). (#85)
Internal changes
-
We consolidated the
<shiny-chat-message>and<shiny-user-message>components into a single<shiny-chat-message>component with adata-roleattribute to indicate whether it's an "assistant" or "user" message. This likely has minimal impact on your apps, other than custom styles. You should update anyshiny-user-messagerules to useshiny-chat-message[data-role="user"]. (#101) -
The chat UI's send input button is now identified by the class
.shiny-chat-btn-send. (@DeepanshKhurana, #138)