|
1 | | -# shiny (development version) |
| 1 | +# shiny 1.11.0 |
| 2 | + |
| 3 | +## Improvements |
| 4 | + |
| 5 | +* When auto-reload is enabled, Shiny now reloads the entire app when support files, like Shiny modules, additional script files, or web assets, change. To enable auto-reload, call `devmode(TRUE)` to enable Shiny's developer mode, or set `options(shiny.autoreload = TRUE)` to specifically enable auto-reload. You can choose which files are watched for changes with the `shiny.autoreload.pattern` option. (#4184) |
| 6 | + |
| 7 | +* When busy indicators are enabled (i.e., `useBusyIndicators()`), Shiny now: |
| 8 | + * Shows a spinner on recalculating htmlwidgets that have previously rendered an error (including `req()` and `validate()`). (#4172) |
| 9 | + * Shows a spinner on `tableOutput()`. (#4172) |
| 10 | + * Places a minimum height on recalculating outputs so that the spinner is always visible. (#4172) |
| 11 | + |
| 12 | +* Shiny now uses `{cli}` instead of `{crayon}` for rich log messages. (thanks @olivroy, #4170) |
| 13 | + |
| 14 | +* `renderPlot()` was updated to accommodate changes in ggplot2 v4.0.0. (#4226) |
| 15 | + |
| 16 | +* When adding the new tab via `insertTab()` or `bslib::nav_insert()`, the underlying JavaScript no longer renders content twice. (#4179) |
2 | 17 |
|
3 | 18 | ## New features |
4 | 19 |
|
|
8 | 23 |
|
9 | 24 | * The family of `update*Input()` functions can now render HTML content passed to the `label` argument (e.g., `updateInputText(label = tags$b("New label"))`). (#3996) |
10 | 25 |
|
| 26 | +* `ExtendedTask` now catches synchronous values and errors and returns them via `$result()`. Previously, the extended task function was required to always return a promise. This change makes it easier to use `ExtendedTask` with a function that may return early or do some synchronous work before returning a promise. (#4225) |
| 27 | + |
11 | 28 | * The `callback` argument of Shiny.js' `InputBinding.subscribe()` method gains support for a value of `"event"`. This makes it possible for an input binding to use event priority when updating the value (i.e., send immediately and always resend, even if the value hasn't changed). (#4211) |
12 | 29 |
|
13 | 30 | ## Changes |
14 | 31 |
|
15 | 32 | * Shiny no longer suspends input changes when _any_ `<input type="submit">` or `<button type="submit">` is on the page. Instead, it now only suspends when a `submitButton()` is present. If you have reason for creating a submit button from custom HTML, add a CSS class of `shiny-submit-button` to the button. (#4209) |
16 | 33 |
|
17 | | -## Improvements |
18 | | - |
19 | | -* When auto-reload is enabled, Shiny now reloads the entire app when support files, like Shiny modules, additional script files, or web assets, change. To enable auto-reload, call `devmode(TRUE)` to enable Shiny's developer mode, or set `options(shiny.autoreload = TRUE)` to specifically enable auto-reload. You can choose which files are watched for changes with the `shiny.autoreload.pattern` option. (#4184) |
20 | | - |
21 | | -* When busy indicators are enabled (i.e., `useBusyIndicators()`), Shiny now: |
22 | | - * Shows a spinner on recalculating htmlwidgets that have previously rendered an error (including `req()` and `validate()`). (#4172) |
23 | | - * Shows a spinner on `tableOutput()`. (#4172) |
24 | | - * Places a minimum height on recalculating outputs so that the spinner is always visible. (#4172) |
25 | | - |
26 | | -* Shiny now uses `{cli}` instead of `{crayon}` for rich log messages. (@olivroy #4170) |
27 | | - |
28 | | -* Shiny's Typescript assets are now compiled to ES2021 instead of ES5. (#4066) |
29 | | - |
30 | | -* `ExtendedTask` now catches synchronous values and errors and returns them via `$result()`. Previously, the extended task function was required to always return a promise. This change makes it easier to use `ExtendedTask` with a function that may return early or do some synchronous work before returning a promise. (#4225) |
31 | | - |
32 | | -* `renderPlot()` was updated to accomodate changes in ggplot2 v4.0.0. (#4226) |
| 34 | +* Shiny's JavaScript assets are now compiled to ES2021 instead of ES5. (#4066) |
33 | 35 |
|
34 | 36 | * Upgraded jQuery from 3.6.0 to 3.7.1. (#3969) |
35 | 37 |
|
36 | 38 | * Updated jQuery UI from 1.13.2 to 1.14.1. (#4175) |
37 | 39 |
|
38 | 40 | ## Bug fixes |
39 | 41 |
|
40 | | -* `runExample("08_html")` now (correctly) requests to 'shiny.min.css', eliminating a network request failure. (#4220) |
41 | | - |
42 | | -* Fixed a bug with modals where calling `removeModal()` too quickly after `showModal()` would fail to remove the modal if the remove modal message was received while the modal was in the process of being revealed. (#4173) |
43 | | - |
44 | 42 | * The Shiny Client Console (enabled with `shiny::devmode()`) no longer displays duplicate warning or error message. (#4177) |
45 | 43 |
|
46 | | -* Updated the JavaScript used when inserting a tab to avoid rendering dynamic UI elements twice when adding the new tab via `insertTab()` or `bslib::nav_insert()`. (#4179) |
| 44 | +* Synchronous errors that occur inside a `ExtendedTask` no longer stop the session. (#4225) |
47 | 45 |
|
48 | | -* Fixed an issue with `ExtendedTask` where synchronous errors would cause an error that would stop the current session. (#4225) |
| 46 | +* Calling `removeModal()` immediately after `showModal()` no longer fails to remove the modal (this would sometimes happen if the remove message was received while the modal was in the process of being revealed). (#4173) |
| 47 | + |
| 48 | +* `runExample("08_html")` now (correctly) requests to 'shiny.min.css', eliminating a network request failure. (#4220) |
49 | 49 |
|
50 | 50 | * `shiny::shinyAppTemplate()` no longer errors without a call to `library(shiny)`. (#3870) |
51 | 51 |
|
@@ -396,7 +396,7 @@ This release focuses on improvements in three main areas: |
396 | 396 |
|
397 | 397 | * Fixed #2951: screen readers correctly announce labels and date formats for `dateInput()` and `dateRangeInput()` widgets. (#2978) |
398 | 398 |
|
399 | | -* Closed #2847: `selectInput()` is reasonably accessible for screen readers even when `selectize` option is set to TRUE. To improve `selectize.js` accessibility, we have added [selectize-plugin-a11y](https://github.com/SLMNBJ/selectize-plugin-a11y) by default. (#2993) |
| 399 | +* Closed #2847: `selectInput()` is reasonably accessible for screen readers even when `selectize` option is set to TRUE. To improve `selectize.js` accessibility, we have added [selectize-plugin-a11y](https://github.com/SalmenBejaoui/selectize-plugin-a11y) by default. (#2993) |
400 | 400 |
|
401 | 401 | * Closed #612: Added `alt` argument to `renderPlot()` and `renderCachedPlot()` to specify descriptive texts for `plotOutput()` objects, which is essential for screen readers. By default, alt text is set to the static text, "Plot object," but even dynamic text can be made with reactive function. (#3006, thanks @trafficonese and @leonawicz for the original PR and discussion via #2494) |
402 | 402 |
|
|
0 commit comments