You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thanks for reporting a bug! Please provide a **Minimal Reproducible Example** (MRE). This is the *most important* part. The easier it is for us to reproduce the bug, the faster we can fix it. Search for similar issues before submitting.
10
+
11
+
- type: dropdown
12
+
id: component
13
+
attributes:
14
+
label: Component
15
+
description: Which part of Shiny is affected?
16
+
options:
17
+
- UI (ui.*)
18
+
- Server (server.*)
19
+
- Reactive Programming
20
+
- Input/Output Bindings
21
+
- Session Management
22
+
- Deployment
23
+
- Documentation
24
+
- Installation
25
+
- Other
26
+
validations:
27
+
required: true
28
+
29
+
- type: dropdown
30
+
id: severity
31
+
attributes:
32
+
label: Severity
33
+
options:
34
+
- P0 - Critical (crash/unusable)
35
+
- P1 - High (major feature broken)
36
+
- P2 - Medium (workaround exists)
37
+
- P3 - Low (minor inconvenience)
38
+
validations:
39
+
required: true
40
+
41
+
- type: input
42
+
id: version
43
+
attributes:
44
+
label: Shiny Version
45
+
description: '`shiny --version`'
46
+
placeholder: ex. 1.2.1
47
+
validations:
48
+
required: true
49
+
50
+
- type: input
51
+
id: python-version
52
+
attributes:
53
+
label: Python Version
54
+
description: '`python --version`'
55
+
placeholder: ex. 3.10.6
56
+
validations:
57
+
required: true
58
+
59
+
- type: textarea
60
+
id: minimal-example
61
+
attributes:
62
+
label: Minimal Reproducible Example
63
+
description: |
64
+
A *minimal*, self-contained app demonstrating the issue. Remove unrelated code. We should be able to copy, paste, and run it.
65
+
66
+
Template:
67
+
68
+
```python
69
+
from shiny import App, render, ui
70
+
71
+
app_ui = ui.page_fluid()
72
+
def server(input, output, session):
73
+
pass
74
+
app = App(app_ui, server)
75
+
```
76
+
render: python
77
+
validations:
78
+
required: true
79
+
80
+
- type: textarea
81
+
id: behavior
82
+
attributes:
83
+
label: Behavior
84
+
description: Describe what *is* happening and what you *expected* to happen.
85
+
placeholder: |
86
+
Current: When I click..., the app freezes.
87
+
Expected: The plot should update without freezing.
88
+
validations:
89
+
required: true
90
+
91
+
- type: textarea
92
+
id: errors
93
+
attributes:
94
+
label: Error Messages (if any)
95
+
description: Copy and paste any errors/tracebacks.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+27-10Lines changed: 27 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [UNRELEASED]
9
9
10
+
### Changes
11
+
12
+
* The `.get_latest_stream_result()` method on `ui.MarkdownStream()` was deprecated in favor of the new `.latest_stream` property. Call `.result()` on the property to get the latest result, `.status` to check the status, and `.cancel()` to cancel the stream.
13
+
14
+
## [1.3.0] - 2025-03-03
15
+
10
16
### New features
11
17
12
18
* Added a new `ui.MarkdownStream()` component for performantly streaming in chunks of markdown/html strings into the UI. This component is primarily useful for text-based generative AI where responses are received incrementally. (#1782)
@@ -16,30 +22,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
22
* Add a `data-suggestion` attribute to an HTML element, and set the value to the input suggestion text (e.g., `<span data-suggestion="Suggestion value">Suggestion link</span>`)
17
23
* To auto-submit the suggestion when clicked by the user, include the `.submit` class or the `data-suggestion-submit="true"` attribute on the HTML element. Alternatively, use Cmd/Ctrl + click to auto-submit any suggestion or Alt/Opt + click to apply any suggestion to the chat input without submitting.
18
24
19
-
* Added a new `.add_sass_layer_file()` method to `ui.Theme` that supports reading a Sass file with layer boundary comments, e.g. `/*-- scss:defaults --*/`. This format [is supported by Quarto](https://quarto.org/docs/output-formats/html-themes-more.html#bootstrap-bootswatch-layering) and makes it easier to store Sass rules and declarations that need to be woven into Shiny's Sass Bootstrap files. (#1790)
20
-
21
-
* The `ui.Chat()` component gains the following:
25
+
* The `ui.Chat()` component also gains the following:
22
26
* The `.on_user_submit()` decorator method now passes the user input to the decorated function. This makes it a bit easier to access the user input. See the new templates (mentioned below) for examples. (#1801)
23
-
* A new `get_latest_stream_result()` method was added for an easy way to access the final result of the stream when it completes. (#1846)
27
+
* The assistant icon is now configurable via `ui.chat_ui()` (or the `ui.Chat.ui()` method in Shiny Express) or for individual messages in the `.append_message()` and `.append_message_stream()` methods of `ui.Chat()`. (#1853)
28
+
* A new `latest_message_stream` property was added for an easy way to reactively read the stream's status, result, and also cancel an in progress stream. (#1846)
24
29
* The `.append_message_stream()` method now returns the `reactive.extended_task` instance that it launches. (#1846)
30
+
* The `ui.Chat()` component's `.update_user_input()` method gains `submit` and `focus` options that allow you to submit the input on behalf of the user and to choose whether the input receives focus after the update. (#1851)
25
31
26
32
*`shiny create` includes new and improved `ui.Chat()` template options. Most of these templates leverage the new [`{chatlas}` package](https://posit-dev.github.io/chatlas/), our opinionated approach to interfacing with various LLM. (#1806)
27
33
28
34
* Client data values (e.g., url info, output sizes/styles, etc.) can now be accessed in the server-side Python code via `session.clientdata`. For example, `session.clientdata.url_search()` reactively reads the URL search parameters. (#1832)
29
35
30
36
* Available `input` ids can now be listed via `dir(input)`. This also works on the new `session.clientdata` object. (#1832)
31
37
32
-
*The`ui.Chat()` component's `.update_user_input()`method gains `submit` and `focus` options that allow you to submit the input on behalf of the user and to choose whether the input receives focus after the update. (#1851)
38
+
*`ui.input_text()`,`ui.input_text_area()`, `ui.input_numeric()` and `ui.input_password()`all gain an `update_on` option. `update_on="change"` is the default and previous behavior, where the input value updates immediately whenever the value changes. With `update_on="blur"`, the input value will update only when the text input loses focus or when the user presses Enter (or Cmd/Ctrl + Enter for `ui.input_text_area()`). (#1874)
33
39
34
-
### Bug fixes
40
+
* Added a new `.add_sass_layer_file()` method to `ui.Theme` that supports reading a Sass file with layer boundary comments, e.g. `/*-- scss:defaults --*/`. This format [is supported by Quarto](https://quarto.org/docs/output-formats/html-themes-more.html#bootstrap-bootswatch-layering) and makes it easier to store Sass rules and declarations that need to be woven into Shiny's Sass Bootstrap files. (#1790)
35
41
36
-
*`ui.Chat()`now correctly handles new `ollama.chat()` return value introduced in `ollama` v0.4. (#1787)
42
+
*Added a new `expect_max_height()`method to the Valuebox controllers to check the maximum height of a value box (#1816)
37
43
38
-
### Changes
44
+
*`shiny.pytest.create_app_fixture(app)` gained support for multiple app file paths when creating your test fixture. If multiple file paths are given, it will behave as a parameterized fixture value and execute the test for each app path. (#1869)
45
+
46
+
### Breaking changes
47
+
48
+
* The navbar-related style options of `ui.page_navbar()` and `ui.navset_bar()` have been consolidated into a single `navbar_options` argument that pairs with a new `ui.navbar_options()` helper. Using the direct `position`, `bg`, `inverse`, `collapsible`, and `underline` arguments will continue to work with a deprecation message.
49
+
50
+
Related to this change, `ui.navset_bar()` now defaults to using `underline=True` so that it uses the same set of default `ui.navbar_options()` as the page variant. In `ui.navbar_options()`, `inverse` is replaced by `theme`, which takes values `"light"` (dark text on a **light** background), `"dark"` (light text on a **dark** background), or `"auto"` (follow page settings).
39
51
40
52
* The Shiny Core component `shiny.ui.Chat()` no longer has a `.ui()` method. This method
41
-
was never intended to be used in Shiny Core (in that case, use `shiny.ui.chat_ui()`) to create the UI element. Note that the `shiny.express.ui.Chat()`
42
-
class still has a `.ui()` method. (#1840)
53
+
was never intended to be used in Shiny Core (in that case, use `shiny.ui.chat_ui()`) to create the UI element. Note that the `shiny.express.ui.Chat()` class still has a `.ui()` method. (#1840)
54
+
55
+
### Bug fixes
56
+
57
+
*`ui.Chat()` now correctly handles new `ollama.chat()` return value introduced in `ollama` v0.4. (#1787)
58
+
59
+
* Updated `expect_height()` for Valuebox controllers to check the height property instead of max-height. (#1816)
0 commit comments