Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

st.experimental_fragment decorator #8343

Merged
merged 42 commits into from
Mar 27, 2024
Merged

Conversation

vdonato
Copy link
Collaborator

@vdonato vdonato commented Mar 20, 2024

st.experimental_fragment is a decorator to turn a function into a Streamlit fragment which
can run independently of the wider app. When a user interacts with an input widget created
inside a fragment, only the fragment reruns instead of rerunning the full app as usual.

You can also set a run_every interval, which causes the fragment to rerun automatically at
that interval (in addition to any user initiated reruns).


This PR is the big merge of the feature/st.experimental_fragment branch into develop!
Note that all of the code going into the feature branch has already been reviewed, but it'd
be worth giving this PR at least a brief read through rather than just rubber stamping it
because enough code is being changed that that it's worth being extra careful.

Enough stuff is going on in this PR that I won't try to describe the implementation in this PR
description -- details of how this feature was built can be found in the PR descriptions of
the multiple PRs into the feature branch linked below in the commit log.

…ge (#8071)

This PR kicks off work on the upcoming `st.experimental_fragment` (name
TBD) feature by defining a new
`FragmentStorage` protocol along with a simple concrete class
(`MemoryFragmentStorage`) implementing it.

None of this code is particularly interesting right now, but it'll
eventually end up useful for allowing us to have
fragments work well with horizontally scaled Streamlit apps (in the
eventual future when we finally release
better support for this).
This PR continues work on the `st.experimental_fragment` feature in a
pretty boring way: we simply create
a new `MemoryFragmentStorage` in the `AppSession` constructor and pass
it to each `ScriptRunner` that we
create.

Note that we intentionally don't allow the `FragmentStorage` used by
`AppSession`s to be configurable from
`RuntimeConfig` for now as we're a ways away from needing to do this. We
may choose to make this configurable
before merging the feature branch into `develop` if we have the free
time, but there's little pressure to do this
right now so may also choose to punt on it until we have a concrete need
for this.
This PR builds on work done in #8088 to plumb FragmentStorage instances
to a session's ScriptRunContext. This probably could have been included in the
previous PR, but we somehow didn't realize that we would need to do this while
working on that one 🙈

We also add some new proto fields that we'll use in subsequent PRs.
…ator itself (#8122)

This PR implements most of the necessary Python-side changes to get
`st.experimental_fragment` working with the exception of the decorator
itself, which we will add in its own PR to keep this diff from getting
too large.
This PR continues the work started in #8122 and adds an initial implementation for
the `@st.experimental_fragment` decorator. This doesn't get the feature to a working
state just yet -- we still have the frontend side to write before things will work e2e.
This is a small change that I must have forgotten to make while focused on the backend side of
this feature. In this PR, we attach a `fragmentId` to each delta sent from server -> client while running
a fragment.

Note that this differs from the prototype (where each widget sets this manually) because we need to
attach a fragment ID to _all_ elements (and not just widgets) to ensure that we're able to mark elements
as stale correctly during fragment runs. Also, we're still using the `fragmentId` name everywhere as
we're still deciding on a different name for the internals of the implementation.
This PR implements roughly half of the frontend implementation of the
upcoming `st.experimental_fragment` feature.

In this half, we add most things that have to do with sending and
receiving `fragmentId`s between the server and client.

* the `currentFragmentId` from the current script run is set in
   `App.tsx` and passed around via `LibContext` so that elements
   can be marked as stale during fragment runs
* `fragmentId`s set in `Delta` messages are plumbed to their
   corresponding `AppNode` instances
* `fragmentId`s are passed to each widget component's props in
   `ElementNodeRenderer`
* We updated all of the `WidgetStateManager` setter methods to take an
   optional `fragmentId` parameter so that widgets can pass back their
   `fragmentId`s to the `widgetMgr` instance
* `fragmentId`s are also passed back to the server via `BackMsg` if set
   in `WidgetStateManager. sendUpdateWidgetsMessage()`

Actually having each of our widget types pass an optional `fragmentId`
back to the `WidgetStateManager` is done in #8165.
This PR does the now very mechanical work of passing `fragmentId`s from widgets
to the `WidgetStateManager.set*Value()` methods when appropriate.

We added/modified unit tests for all of this plumbing where appropriate but didn't do so
for widgets that don't already include tests for calling appropriate the `WidgetStateManager`
methods as those are likely to have been omitted due to the difficulty of implementing them
for those specific widgets.
This PR implements a followup to #8173 that allows the `run_every` parameter of the
`@st.experimental_fragment` decorator to accept the same types as the `ttl` parameters of
`@st.cache_resource` and `@st.cache_data`.

To do this, we shuffle some of the helper functions / exception types currently only used
by our caching API around and change their names to be more general.
This PR simply adds a new `isFragmentRun` field to our page profiling metrics
so that we can identify which page runs correspond to fragment runs vs full
app runs.
This PR adds an e2e test for testing basic `@st.experimental_fragment` functionality.
For now, we only verify that modifying a widget within a fragment reruns the fragment
but not the full script, and we only do so for widgets that are relatively straightforward
to test.

More thorough testing (verifying that the return values of widgets within a fragment work as
expected, testing for more complex widgets, etc) will be done in additional e2e tests that we'll
add later when the feature is closer to completion.
…runs (#8260)

This PR fixes three bugs that together resulted in some weird behavior
when using `@st.experimental_fragment`.

* The first is a simple one: we just forgot to also take a snapshot of
  `ctx.cursors`, which also needs to be reset when starting a fragment
  run to ensure we write to the correct position in the app.
* To fix the second bug, we also need to reset both `ctx.cursor` and
  `dg_stack` when the script restarts due to a `RerunException`. Otherwise,
  we again end up writing to unexpected or nonexistent `deltaPath`s. (I'm less
  sure about whether this fix is the one we want to adopt long term, so I left a
  TODO to revisit it later).
* Finally, we fix the behavior of the `clearStaleNodes` method to correctly
  account for the different possibilities that come up when clearing stale nodes
  from a page that contains elements both related and unrelated to a given
  fragment. This bug ended up being a bit more complex, so we added comments
  throughout `clearStaleNodes` to explain what's going on.
This PR fixes a bug in the `feature/st.experimental_fragment` branch where fragment runs would
undo things set in an earlier call to `set_page_config`. The reason for this was simply that we were
resetting both the title and favicon in every call to `handleNewSession`, even if the call corresponds
to a fragment run. We fixed this by simply moving parts of `handleNewSession` into an `if` statement
that only runs when we're not running a fragment. Note that no other notable code changes were
made aside from moving blocks of code around.
Before the `st.experimental_fragment` feature was implemented, we were previously able to
have a `RERUN` request cancel the currently executing script. This was because the only way
that a script would ever run in the Streamlit execution model was fully from top-to-bottom, so
any portion of the currently executing script that would not get to run due to being cancelled
would still happen later in the rerun.

With fragments, this is no longer true, and a rerun request corresponding to a fragment cancelling
the currently executing script could result in important information from either a full script run or
a different fragment being lost.

To fix this, we change things so that `RERUN` requests corresponding to a fragment don't
immediately cancel the currently executing script. Instead, they are enqueued to run after the
current script run is complete. `RERUN` requests corresponding to full script runs retain their
current behavior of cancelling any currently executing script and running immediately.

---

Note that there's a small known bug in the current implementation that we'll get around to fixing
later: running multiple fragments within a single scriptrunner execution (this can happen if the user
clicks on >=3 slow-running fragments in quick succession) may result in strangeness as the
frontend currently assumes that a scriptrunner execution runs either the full script or only one
fragment.

For now, we just leave a TODO in the code so that we get around to
fixing this before the feature branch is merged.
lib/streamlit/runtime/fragment.py Dismissed Show dismissed Hide dismissed
lib/streamlit/runtime/fragment.py Dismissed Show dismissed Hide dismissed
lib/streamlit/runtime/fragment.py Dismissed Show dismissed Hide dismissed
lib/streamlit/time_util.py Dismissed Show dismissed Hide dismissed
lib/streamlit/time_util.py Dismissed Show dismissed Hide dismissed
This PR fixes a bug that was mentioned in a TODO comment in #8298: fragments may
be batched so that multiple are run by a single run of a `ScriptRunner`, but the frontend
assumes that at most one is run. The result of this is that, when multiple fragments are
run by one `ScriptRunner`, only one of the corresponding sets of elements rendered to
the app are marked as stale when all of them should be.
@vdonato vdonato added the QA-Needed QA is Required label Mar 21, 2024
@vdonato vdonato changed the title [WIP] st.experimental_fragment decorator st.experimental_fragment decorator Mar 22, 2024
@vdonato vdonato marked this pull request as ready for review March 22, 2024 01:15
@vdonato vdonato force-pushed the feature/st.experimental_fragment branch from 6c9da73 to 8fe4d42 Compare March 22, 2024 02:13
@AnOctopus AnOctopus self-requested a review March 22, 2024 18:53
I somehow managed to forget that we need to set the `fragmentIdsThisRun` state variable on
a full rerun too since otherwise running the full script after a fragment run will fail to reset the array.
User-visible issues due to this bug seem to be rare in practice but can be (probabilistically) observed
when using `st.rerun` within a fragment.

The same script used to demonstrate the bug in #8332 can also be used to trigger this one:
```python
import streamlit as st

show_stuff = st.checkbox("Show stuff")
if show_stuff:
    st.write("hello")


@st.experimental_fragment
def fragment():
    if st.button("Rerun everything"):
        st.rerun()
        
fragment()
```

1. Click on the "Rerun everything" button
2. Rapidly select and unselect the checkbox.
3. Notice that (sometimes) a duplicate button will appear.
Copy link
Collaborator

@LukasMasuch LukasMasuch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚀

proto/streamlit/proto/AutoRerun.proto Outdated Show resolved Hide resolved
lib/streamlit/runtime/fragment.py Outdated Show resolved Hide resolved
lib/streamlit/runtime/state/session_state.py Show resolved Hide resolved
kajarenc added a commit that referenced this pull request Mar 25, 2024
*,
run_every: int | float | timedelta | str | None = None,
) -> Callable[[F], F] | F:
"""Allow a function to be run independently of the full script.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

btw @sfc-gh-jcarroll @sfc-gh-dmatthews, I wrote this docstring just to have something reasonable for now, but I'm assuming we'll want to tweak/edit it before this PR gets merged

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fairly reasonable to me, I'll happily defer to you and Debbie on any tweaks or suggestions of bigger things to include.

In case it's a useful reference, here's the (significantly more verbose) draft doc string I put together for the spec. I think the main interesting questions from my version are:

  • For the first line, is it useful to include "...turn a function into a [Streamlit] fragment..." along with the description of what it does? I think the answer partly depends on how much we want to lean into that as a noun we use elsewhere.
  • Whether we want to include any of the last 4 paragraphs of my version in the docstring, or just talk about those in the docs page.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vdonato I'll render the new docs page to check it out. Do you prefer a follow-up PR with any docstring tweaks, or a commit directly to this branch (if it hasn't merged already).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops, I totally forgot that a draft docstring was included in the spec 🙈. Happy to use either one or some combination of the two, but will also defer to @sfc-gh-dmatthews on this.

This PR is likely to be merged Thursday or Friday depending on how quickly QA is able to wrap up some testing passes on the feature, so committing directly to this branch should be ok if it isn't already checked in.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like QA wrapped up earlier than expected, so I'm going to go ahead and click merge on this PR now / any docs tweaks can be made in a PR to develop 🎉

@vdonato vdonato added QA-Done QA is Complete and removed QA-Needed QA is Required labels Mar 27, 2024
@vdonato vdonato merged commit 17377a5 into develop Mar 27, 2024
43 of 44 checks passed
@vdonato vdonato deleted the feature/st.experimental_fragment branch March 27, 2024 22:39
@vdonato vdonato restored the feature/st.experimental_fragment branch March 28, 2024 18:44
@vdonato vdonato deleted the feature/st.experimental_fragment branch March 28, 2024 21:23
raethlein added a commit that referenced this pull request Apr 11, 2024
<!--
⚠️ BEFORE CONTRIBUTING PLEASE READ OUR CONTRIBUTING GUIDELINES!
https://github.com/streamlit/streamlit/wiki/Contributing
-->

## Describe your changes

Closes #1360

This PR adds a dialog layout container. This is exposed to users via the
`@st.experimental_dialog`
decorator. A function decorated with this decorated will render a dialog
when being called. The body of the decorated function will be rendered
as the dialog's content.
It uses the fragment decorator (introduced in
#8343) under the hood so that
the dialog can be interacted with without triggering a full-app rerun.

Example:
```python
import streamlit as st

@st.experimental_dialog("Streamlit Example Dialog")
def example_dialog(some_arg: str, some_other_arg: int):
    st.write(f"You passed following args: {some_arg} | {some_other_arg}")
    # interacting with the text_input only re-runs `example_dialog`
    some_text_input = st.text_input("Type something:", key="example_dialog_some_text_input")
    # following write is updated when chaning the text_input inside the dialog
    st.write(f"You wrote '{some_text_input}' in the dialog")
    if st.button("Close the dialog"):
        st.rerun()

if st.button("Open dialog"):
    example_dialog("Some string arg", 42)

# following write is updated with the dialog's text input when the dialog was opened, the text input was interacted with and a re-run was triggered, e.g. by clicking the Close-button defined in `example_dialog`
st.write(f"You wrote '{st.session_state.get('example_dialog_some_text_input', '')}' in the dialog")
```

![Screenshot 2024-04-04 at 16 31
35](https://github.com/streamlit/streamlit/assets/3775781/751a43d1-7c6a-4642-8864-d08a5d286cb5)


Since it uses the experimental fragment feature, it is exposed as
experimental as well for now.

## GitHub Issue Link (if applicable)

## Testing Plan

- Added Python and JavaScript unit tests
- Added e2e playwright tests

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
sawyerh pushed a commit to sawyerh/highlights that referenced this pull request Jun 1, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [streamlit](https://streamlit.io)
([source](https://togithub.com/streamlit/streamlit),
[changelog](https://docs.streamlit.io/library/changelog)) | `1.25.0` ->
`1.35.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/streamlit/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/streamlit/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/streamlit/1.25.0/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/streamlit/1.25.0/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>streamlit/streamlit (streamlit)</summary>

###
[`v1.35.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.35.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.34.0...1.35.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.35.0 -->

#### What's Changed

##### New Features 🎉

- Add support for selections to `st.plotly_chart` by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/8191](https://togithub.com/streamlit/streamlit/pull/8191)
- feat: support set mysql connection query from secrets.toml by
[@&#8203;LucianLiu6](https://togithub.com/LucianLiu6) in
[https://github.com/streamlit/streamlit/pull/8581](https://togithub.com/streamlit/streamlit/pull/8581)
- Feature: `st.logo` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8554](https://togithub.com/streamlit/streamlit/pull/8554)
- Material icon for st.page_link by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8593](https://togithub.com/streamlit/streamlit/pull/8593)
- Add dataframe row and column selections by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8411](https://togithub.com/streamlit/streamlit/pull/8411)
- Add support for selections to `st.altair_chart` & `st.vega_lite_chart`
by [@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/8302](https://togithub.com/streamlit/streamlit/pull/8302)

##### Bug Fixes 🐛

- Fix standalone custom-component execution by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8620](https://togithub.com/streamlit/streamlit/pull/8620)
- Clear stale elements when st.rerun() is used by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8599](https://togithub.com/streamlit/streamlit/pull/8599)
- Focus chat input after the submit button is pressed by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8637](https://togithub.com/streamlit/streamlit/pull/8637)
- fix:
[#&#8203;8500](https://togithub.com/streamlit/streamlit/issues/8500)
bypass StrEnum 'index' to make position-indexable by
[@&#8203;97k](https://togithub.com/97k) in
[https://github.com/streamlit/streamlit/pull/8622](https://togithub.com/streamlit/streamlit/pull/8622)
- Update scroll-margin-top by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8641](https://togithub.com/streamlit/streamlit/pull/8641)
- Fix cell error when data editor gets reconstructed by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8640](https://togithub.com/streamlit/streamlit/pull/8640)
- Ensure that column config is cloned by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8677](https://togithub.com/streamlit/streamlit/pull/8677)
- Add fallback method for CSV download by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8452](https://togithub.com/streamlit/streamlit/pull/8452)

##### Other Changes

- Bump mheap/github-action-required-labels from 5.4.0 to 5.4.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/streamlit/streamlit/pull/8582](https://togithub.com/streamlit/streamlit/pull/8582)
- Remove fullscreen button for `st.table` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8621](https://togithub.com/streamlit/streamlit/pull/8621)
- Improve typing for query params `.update` and `.from_dict` by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8614](https://togithub.com/streamlit/streamlit/pull/8614)
- Improve anchor button visualization for titles and headings by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8587](https://togithub.com/streamlit/streamlit/pull/8587)
- Allow protobuf v5 by [@&#8203;mark-thm](https://togithub.com/mark-thm)
in
[https://github.com/streamlit/streamlit/pull/8624](https://togithub.com/streamlit/streamlit/pull/8624)
- Stabilize the vega-lite spec for altair-based charts by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8628](https://togithub.com/streamlit/streamlit/pull/8628)
- Update address output in headless mode by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8647](https://togithub.com/streamlit/streamlit/pull/8647)
- Revert "Allow protobuf v5" by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8701](https://togithub.com/streamlit/streamlit/pull/8701)

#### New Contributors

- [@&#8203;LucianLiu6](https://togithub.com/LucianLiu6) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8581](https://togithub.com/streamlit/streamlit/pull/8581)
- [@&#8203;mark-thm](https://togithub.com/mark-thm) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8624](https://togithub.com/streamlit/streamlit/pull/8624)
- [@&#8203;97k](https://togithub.com/97k) made their first contribution
in
[https://github.com/streamlit/streamlit/pull/8622](https://togithub.com/streamlit/streamlit/pull/8622)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.34.0...1.35.0

###
[`v1.34.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.34.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.33.0...1.34.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.34.0 -->

#### What's Changed

##### New Features 🎉

- Add st.experimental_dialog by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8040](https://togithub.com/streamlit/streamlit/pull/8040)
- from_dict for query params by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8470](https://togithub.com/streamlit/streamlit/pull/8470)
- Improve period type support in `st.dataframe` and `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7987](https://togithub.com/streamlit/streamlit/pull/7987)
- Add ability to clear cache for specific function arguments by passing
args to `<cached_func>.clear()` by
[@&#8203;OscarSaharoy](https://togithub.com/OscarSaharoy) in
[https://github.com/streamlit/streamlit/pull/8297](https://togithub.com/streamlit/streamlit/pull/8297)
- Add support for autoplaying `st.audio` and `st.video` media by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8481](https://togithub.com/streamlit/streamlit/pull/8481)
- Support background colors for text by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8435](https://togithub.com/streamlit/streamlit/pull/8435)
- Non-emoji icons by [@&#8203;kajarenc](https://togithub.com/kajarenc)
in
[https://github.com/streamlit/streamlit/pull/8307](https://togithub.com/streamlit/streamlit/pull/8307)
- Add support for Modin and Snowpark Pandas by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8506](https://togithub.com/streamlit/streamlit/pull/8506)
- Enable the usage of the pydeck-carto package with st.pydeck_chart by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8422](https://togithub.com/streamlit/streamlit/pull/8422)

##### Bug Fixes 🐛

- Offset dates in vega if no timezone information is attached. by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8278](https://togithub.com/streamlit/streamlit/pull/8278)
- Fix issues with fragments writing to containers and the sidebar by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8408](https://togithub.com/streamlit/streamlit/pull/8408)
- Produce python error for slider min=max by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8413](https://togithub.com/streamlit/streamlit/pull/8413)
- Make check for component ready dynamic by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8434](https://togithub.com/streamlit/streamlit/pull/8434)
- Update Auto Theme after print dialog if necessary by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8469](https://togithub.com/streamlit/streamlit/pull/8469)
- Reset widget state on page change by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8425](https://togithub.com/streamlit/streamlit/pull/8425)
- Switch back to using undeprecated pillow constant by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8492](https://togithub.com/streamlit/streamlit/pull/8492)
- Fix double script/callback run when replacing a file by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8493](https://togithub.com/streamlit/streamlit/pull/8493)
- Handle Altair vconcat with use_container_width by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8498](https://togithub.com/streamlit/streamlit/pull/8498)
- Fix empty state for `st.status` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8369](https://togithub.com/streamlit/streamlit/pull/8369)
- Fix `st.multiselect` usage with empty sets or tuples by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8471](https://togithub.com/streamlit/streamlit/pull/8471)
- Handle Altair resolve_scale by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8497](https://togithub.com/streamlit/streamlit/pull/8497)
- Adjust default date for st.date_input if today's date is out of bounds
by [@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8519](https://togithub.com/streamlit/streamlit/pull/8519)
- Handle setting session state keys to None for supported widgets by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8529](https://togithub.com/streamlit/streamlit/pull/8529)
- Fix empty generator usage with `st.write_stream` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8560](https://togithub.com/streamlit/streamlit/pull/8560)

##### Other Changes

- Update modal styles by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8274](https://togithub.com/streamlit/streamlit/pull/8274)
- Move toasts to top right and make them prettier by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/8433](https://togithub.com/streamlit/streamlit/pull/8433)
- Fix escaping in docstrings by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8510](https://togithub.com/streamlit/streamlit/pull/8510)
- Fix blank space print by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8502](https://togithub.com/streamlit/streamlit/pull/8502)
- Remove snowflake extras python restriction by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8538](https://togithub.com/streamlit/streamlit/pull/8538)

#### New Contributors

- [@&#8203;Lundez](https://togithub.com/Lundez) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8520](https://togithub.com/streamlit/streamlit/pull/8520)
- [@&#8203;OscarSaharoy](https://togithub.com/OscarSaharoy) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/8297](https://togithub.com/streamlit/streamlit/pull/8297)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.33.0...1.34.0

###
[`v1.33.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.33.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.2...1.33.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.33.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Require explicit suggestion of unsafe_allow_html in st.write by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8238](https://togithub.com/streamlit/streamlit/pull/8238)

##### New Features 🎉

- explicit update() method for query_params by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8205](https://togithub.com/streamlit/streamlit/pull/8205)
- Add `AreaChartColumn` to column config by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8237](https://togithub.com/streamlit/streamlit/pull/8237)
- Associate label with input to make label click focus input by
[@&#8203;filiptammergard](https://togithub.com/filiptammergard) in
[https://github.com/streamlit/streamlit/pull/8155](https://togithub.com/streamlit/streamlit/pull/8155)
- Media elements improvements by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8203](https://togithub.com/streamlit/streamlit/pull/8203)
- Page switching in AppTest by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8280](https://togithub.com/streamlit/streamlit/pull/8280)
- Add ability to use timedelta and stings to `start_time` and
`end_time`. by [@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8348](https://togithub.com/streamlit/streamlit/pull/8348)
- st.experimental_fragment decorator by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8343](https://togithub.com/streamlit/streamlit/pull/8343)
- Feature: `st.html` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8366](https://togithub.com/streamlit/streamlit/pull/8366)

##### Bug Fixes 🐛

- AppTest format_func by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8189](https://togithub.com/streamlit/streamlit/pull/8189)
- Url decode link column display values if regex is used by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8258](https://togithub.com/streamlit/streamlit/pull/8258)
- Fix infinite loop when `rerun` and triggered widgets are used together
in AppTest by [@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8264](https://togithub.com/streamlit/streamlit/pull/8264)
- Use the button width as minimum for `st.popover` container by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8266](https://togithub.com/streamlit/streamlit/pull/8266)
- Revert "Expire session storage cache on an async timer
([#&#8203;8083](https://togithub.com/streamlit/streamlit/issues/8083))"
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8281](https://togithub.com/streamlit/streamlit/pull/8281)
- Allow custom themes to override embed options query parameter by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8021](https://togithub.com/streamlit/streamlit/pull/8021)
- Fix issue with not correctly waiting for connections by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8294](https://togithub.com/streamlit/streamlit/pull/8294)
- Fix initial iframe height for custom component by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8290](https://togithub.com/streamlit/streamlit/pull/8290)
- Fullscreen Button Overflow Horizontally by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8279](https://togithub.com/streamlit/streamlit/pull/8279)
- Fix white components backgrounds when OS is using dark theme by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8242](https://togithub.com/streamlit/streamlit/pull/8242)
- Add simple fix to update container status after llm complete by
[@&#8203;KedoKudo](https://togithub.com/KedoKudo) in
[https://github.com/streamlit/streamlit/pull/8311](https://togithub.com/streamlit/streamlit/pull/8311)
- Simplify toast message truncation to use character limit directly by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8337](https://togithub.com/streamlit/streamlit/pull/8337)
- resolve path when registering watcher for module paths by
[@&#8203;zyxue](https://togithub.com/zyxue) in
[https://github.com/streamlit/streamlit/pull/8372](https://togithub.com/streamlit/streamlit/pull/8372)
- Readd mistakenly removed line and add explanatory comment by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8392](https://togithub.com/streamlit/streamlit/pull/8392)

##### Other Changes

- Allow packaging 24.x by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8338](https://togithub.com/streamlit/streamlit/pull/8338)

#### New Contributors

- [@&#8203;filiptammergard](https://togithub.com/filiptammergard) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/8155](https://togithub.com/streamlit/streamlit/pull/8155)
- [@&#8203;KedoKudo](https://togithub.com/KedoKudo) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8311](https://togithub.com/streamlit/streamlit/pull/8311)
- [@&#8203;zyxue](https://togithub.com/zyxue) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8372](https://togithub.com/streamlit/streamlit/pull/8372)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.2...1.33.0

###
[`v1.32.2`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.2)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.1...1.32.2)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.2 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.1...1.32.2

###
[`v1.32.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.0...1.32.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.0...1.32.1

###
[`v1.32.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.31.1...1.32.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.0 -->

#### What's Changed

##### New Features 🎉

- Support markdown links in`st.radio` options by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8028](https://togithub.com/streamlit/streamlit/pull/8028)
- Improve error handling in `st.write_stream` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8036](https://togithub.com/streamlit/streamlit/pull/8036)
- Add support for PIL images in `st.write` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8039](https://togithub.com/streamlit/streamlit/pull/8039)
- add: Supprt for HTTP <Head> method to /healthz endpoint by
[@&#8203;rahulmistri1997](https://togithub.com/rahulmistri1997) in
[https://github.com/streamlit/streamlit/pull/8145](https://togithub.com/streamlit/streamlit/pull/8145)
- Add support for AzureOpenAI chat stream by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8107](https://togithub.com/streamlit/streamlit/pull/8107)
- Add `st.popover` layout container by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7908](https://togithub.com/streamlit/streamlit/pull/7908)
- AppTest `from_function` args by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8183](https://togithub.com/streamlit/streamlit/pull/8183)
- Subtitles changes for `st.video` by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8057](https://togithub.com/streamlit/streamlit/pull/8057)
- Expander and Status AppTest wrappers by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8187](https://togithub.com/streamlit/streamlit/pull/8187)

##### Bug Fixes 🐛

- Add support for converting `st.query_params` to string by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8030](https://togithub.com/streamlit/streamlit/pull/8030)
- Fix custom dataframe scrollbars in Chrome by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8034](https://togithub.com/streamlit/streamlit/pull/8034)
- Fix `time_input` menu colors in dark mode by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8056](https://togithub.com/streamlit/streamlit/pull/8056)
- Make shallow copies of options returned from ensure_indexable by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8064](https://togithub.com/streamlit/streamlit/pull/8064)
- Fix memory leak in runtime coroutine loop by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8068](https://togithub.com/streamlit/streamlit/pull/8068)
- Prevent pandas keyerror when checking color column format in st.map by
[@&#8203;awhazell](https://togithub.com/awhazell) in
[https://github.com/streamlit/streamlit/pull/8079](https://togithub.com/streamlit/streamlit/pull/8079)
- Fix
[#&#8203;7954](https://togithub.com/streamlit/streamlit/issues/7954) by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8054](https://togithub.com/streamlit/streamlit/pull/8054)
- Fix issue using a local path with `st.image` on windows. by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8092](https://togithub.com/streamlit/streamlit/pull/8092)
- Fix: `st.page_link` & `st.switch_page` handling / prefixed paths by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8085](https://togithub.com/streamlit/streamlit/pull/8085)
- Fix script runner stack overflow by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8100](https://togithub.com/streamlit/streamlit/pull/8100)
- Normalize main script path in `st.switch_page` and `st.page_link` by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8103](https://togithub.com/streamlit/streamlit/pull/8103)
- Fix: `st.page_link` URL preview shows file path by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8086](https://togithub.com/streamlit/streamlit/pull/8086)
- Support multiple path characteristics for switch_page and page_link by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8127](https://togithub.com/streamlit/streamlit/pull/8127)
- Fix chart exception where color-handling code expected DF index to
start at 0 by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/8158](https://togithub.com/streamlit/streamlit/pull/8158)
- Fix: Alert element overflow by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8194](https://togithub.com/streamlit/streamlit/pull/8194)
- Fully clear App State on page change by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8208](https://togithub.com/streamlit/streamlit/pull/8208)
- Make st.help more resilient with conditional members by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8228](https://togithub.com/streamlit/streamlit/pull/8228)

##### Other Changes

- Expire session storage cache on an async timer by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8083](https://togithub.com/streamlit/streamlit/pull/8083)
- Lazy-load emoji module to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8109](https://togithub.com/streamlit/streamlit/pull/8109)
- Lazy-load pandas and pyarrow to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8125](https://togithub.com/streamlit/streamlit/pull/8125)
- Miscellaneous docstring edits and argument names by
[@&#8203;sfc-gh-dmatthews](https://togithub.com/sfc-gh-dmatthews) in
[https://github.com/streamlit/streamlit/pull/8118](https://togithub.com/streamlit/streamlit/pull/8118)
- Deprecate the `deprecation.showPyplotGlobalUse` config option by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8133](https://togithub.com/streamlit/streamlit/pull/8133)
- Use env variable to configure matplotlib backend by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8113](https://togithub.com/streamlit/streamlit/pull/8113)
- Lazy-load numpy and pillow to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8134](https://togithub.com/streamlit/streamlit/pull/8134)
- Show a warning when server port `3000` is used by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8152](https://togithub.com/streamlit/streamlit/pull/8152)
- Fixed typos in example documentation by
[@&#8203;t1emp0](https://togithub.com/t1emp0) in
[https://github.com/streamlit/streamlit/pull/8162](https://togithub.com/streamlit/streamlit/pull/8162)
- Increase time until timeout warning is shown for a custom component by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8179](https://togithub.com/streamlit/streamlit/pull/8179)
- Update glide-data-grid to version 6.0.4 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7779](https://togithub.com/streamlit/streamlit/pull/7779)

#### New Contributors

- [@&#8203;awhazell](https://togithub.com/awhazell) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8079](https://togithub.com/streamlit/streamlit/pull/8079)
- [@&#8203;SidVer312](https://togithub.com/SidVer312) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8017](https://togithub.com/streamlit/streamlit/pull/8017)
- [@&#8203;rahulmistri1997](https://togithub.com/rahulmistri1997) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/8145](https://togithub.com/streamlit/streamlit/pull/8145)
- [@&#8203;t1emp0](https://togithub.com/t1emp0) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8162](https://togithub.com/streamlit/streamlit/pull/8162)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.31.1...1.32.0

###
[`v1.31.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.31.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.31.0...1.31.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.31.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.31.0...1.31.1

###
[`v1.31.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.31.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.30.0...1.31.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.31.0 -->

#### What's Changed

##### New Features 🎉

- Allow inline usage of `st.chat_input` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7896](https://togithub.com/streamlit/streamlit/pull/7896)
- Feature: `st.page_link` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7965](https://togithub.com/streamlit/streamlit/pull/7965)
- Add `st.write_stream` command to handle generators or OpenAI output by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7906](https://togithub.com/streamlit/streamlit/pull/7906)

##### Bug Fixes 🐛

- Reuse style element for theme injection into custom components by
[@&#8203;Tom-Julux](https://togithub.com/Tom-Julux) in
[https://github.com/streamlit/streamlit/pull/7914](https://togithub.com/streamlit/streamlit/pull/7914)
- Handle out of order blocks when parsing element tree by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7923](https://togithub.com/streamlit/streamlit/pull/7923)
- Fix progress bar float input bug by
[@&#8203;notiona](https://togithub.com/notiona) in
[https://github.com/streamlit/streamlit/pull/7953](https://togithub.com/streamlit/streamlit/pull/7953)
- Don't pass query parameters from parent page into iframes by
[@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7951](https://togithub.com/streamlit/streamlit/pull/7951)
- Fix period type support for Pandas 2.2.0 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7988](https://togithub.com/streamlit/streamlit/pull/7988)
- Only ignore hiding required columns in dynamic mode by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7996](https://togithub.com/streamlit/streamlit/pull/7996)
- Disable watchdog suggestion for `none` or `poll` watcher type by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8024](https://togithub.com/streamlit/streamlit/pull/8024)

##### Other Changes

- Support latest importlib-metadata v7 by
[@&#8203;elgalu](https://togithub.com/elgalu) in
[https://github.com/streamlit/streamlit/pull/7925](https://togithub.com/streamlit/streamlit/pull/7925)
- Make Snowpark dependency truly optional for SnowflakeConnection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7919](https://togithub.com/streamlit/streamlit/pull/7919)

#### New Contributors

- [@&#8203;Tom-Julux](https://togithub.com/Tom-Julux) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7914](https://togithub.com/streamlit/streamlit/pull/7914)
- [@&#8203;elgalu](https://togithub.com/elgalu) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7925](https://togithub.com/streamlit/streamlit/pull/7925)
- [@&#8203;notiona](https://togithub.com/notiona) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7953](https://togithub.com/streamlit/streamlit/pull/7953)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.30.0...1.31.0

###
[`v1.30.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.30.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.29.0...1.30.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.30.0 -->

#### What's Changed

##### New Features 🎉

- Add support for scroll container via the `height` parameter by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7697](https://togithub.com/streamlit/streamlit/pull/7697)
- Add display_text to LinkColumn by
[@&#8203;sfc-gh-bhay](https://togithub.com/sfc-gh-bhay) in
[https://github.com/streamlit/streamlit/pull/7741](https://togithub.com/streamlit/streamlit/pull/7741)
- st.query_params by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7774](https://togithub.com/streamlit/streamlit/pull/7774)
- Add Pandas styler support to `LinkColumn` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7784](https://togithub.com/streamlit/streamlit/pull/7784)
- Config - MPA Sidebar Page Navigation by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7852](https://togithub.com/streamlit/streamlit/pull/7852)
- Feature - `st.switch_page` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7853](https://togithub.com/streamlit/streamlit/pull/7853)

##### Bug Fixes 🐛

- Fix handling of ordinal columns for builtin-charts by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7771](https://togithub.com/streamlit/streamlit/pull/7771)
- Fix `st.toggle` background color by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7788](https://togithub.com/streamlit/streamlit/pull/7788)
- Don't send command used to start streamlit to frontend by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7787](https://togithub.com/streamlit/streamlit/pull/7787)
- Fix iframe background for dark color scheme by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7821](https://togithub.com/streamlit/streamlit/pull/7821)
- Prevent incompatible column config serialization by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7887](https://togithub.com/streamlit/streamlit/pull/7887)
- Prevent hiding required editable columns by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7888](https://togithub.com/streamlit/streamlit/pull/7888)
- Disable the ability to submit form if a submit button is disabled by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7827](https://togithub.com/streamlit/streamlit/pull/7827)
- Fix flickering effect when changing tabs by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7904](https://togithub.com/streamlit/streamlit/pull/7904)
- Fix shrunk icon size in st.expander by
[@&#8203;matiboux](https://togithub.com/matiboux) in
[https://github.com/streamlit/streamlit/pull/7596](https://togithub.com/streamlit/streamlit/pull/7596)
- Add check that individual elements are "python comparable" by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7840](https://togithub.com/streamlit/streamlit/pull/7840)
- Use commonpath rather than common prefix for more secure access by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7901](https://togithub.com/streamlit/streamlit/pull/7901)
- Don't disable tab on stale flag by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7905](https://togithub.com/streamlit/streamlit/pull/7905)
- Fix embed params being dropped in page swaps by
[@&#8203;sfc-gh-wihuang](https://togithub.com/sfc-gh-wihuang) in
[https://github.com/streamlit/streamlit/pull/7918](https://togithub.com/streamlit/streamlit/pull/7918)

##### Other Changes

- Fix parenthesis error messaging by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7770](https://togithub.com/streamlit/streamlit/pull/7770)
- Update SECURITY.md by
[@&#8203;sfc-gh-hpathak](https://togithub.com/sfc-gh-hpathak) in
[https://github.com/streamlit/streamlit/pull/7783](https://togithub.com/streamlit/streamlit/pull/7783)
- Speed up plotly figures by 8x for users with "orjson" by
[@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7860](https://togithub.com/streamlit/streamlit/pull/7860)

#### New Contributors

- [@&#8203;sfc-gh-bhay](https://togithub.com/sfc-gh-bhay) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7741](https://togithub.com/streamlit/streamlit/pull/7741)
- [@&#8203;sfc-gh-jkinkead](https://togithub.com/sfc-gh-jkinkead) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7843](https://togithub.com/streamlit/streamlit/pull/7843)
- [@&#8203;sfc-gh-jdaly](https://togithub.com/sfc-gh-jdaly) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7842](https://togithub.com/streamlit/streamlit/pull/7842)
- [@&#8203;matiboux](https://togithub.com/matiboux) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7596](https://togithub.com/streamlit/streamlit/pull/7596)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.29.0...1.30.0

###
[`v1.29.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.29.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.2...1.29.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.29.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Remove old app test api by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7657](https://togithub.com/streamlit/streamlit/pull/7657)

##### New Features 🎉

- Add ability to add empty query params by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7601](https://togithub.com/streamlit/streamlit/pull/7601)
- Add Enum coercion to options elements, if input Enum classes
"identical" but redefined on script run by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/7408](https://togithub.com/streamlit/streamlit/pull/7408)
- Remove Recording Feature Menu Item when unsupported by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7604](https://togithub.com/streamlit/streamlit/pull/7604)
- Improved AppTest/ElementTree formatting by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7658](https://togithub.com/streamlit/streamlit/pull/7658)
- Add support for timedelta type to `st.dataframe`, `st.data_editor` and
`st.table`. by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch)
in
[https://github.com/streamlit/streamlit/pull/7689](https://togithub.com/streamlit/streamlit/pull/7689)
- Add border parameter to container and form by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7455](https://togithub.com/streamlit/streamlit/pull/7455)
- Use "loading skeletons" throughout Streamlit by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/7598](https://togithub.com/streamlit/streamlit/pull/7598)

##### Bug Fixes 🐛

- Make the outline for expanders appear on focus-visible and not focus
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7592](https://togithub.com/streamlit/streamlit/pull/7592)
- Use `NoReturn` annotation for stop and rerun by
[@&#8203;kongzii](https://togithub.com/kongzii) in
[https://github.com/streamlit/streamlit/pull/7422](https://togithub.com/streamlit/streamlit/pull/7422)
- Fix SVG scaling on fullscreen mode for `st.graphviz_chart` by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/7398](https://togithub.com/streamlit/streamlit/pull/7398)
- Fix top padding when embedding an app with a sidebar by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7630](https://togithub.com/streamlit/streamlit/pull/7630)
- Fix app testing repr bug for `st.container` by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7644](https://togithub.com/streamlit/streamlit/pull/7644)
- Ensure file_uploader doesn't trigger needless reruns by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7641](https://togithub.com/streamlit/streamlit/pull/7641)
- Fix trigger value regression with `st.rerun` by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7643](https://togithub.com/streamlit/streamlit/pull/7643)
- Fix: MPA Nav expand arrow by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7634](https://togithub.com/streamlit/streamlit/pull/7634)
- Greatly narrow errors that we retry in SnowflakeConnection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7645](https://togithub.com/streamlit/streamlit/pull/7645)
- Fix how connection is declared for typing purposes by
[@&#8203;thezanke](https://togithub.com/thezanke) in
[https://github.com/streamlit/streamlit/pull/7671](https://togithub.com/streamlit/streamlit/pull/7671)
- Enforce pyarrow version for arrow-based custom components by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7695](https://togithub.com/streamlit/streamlit/pull/7695)
- Allow to access external server IP via https. by
[@&#8203;LarsHill](https://togithub.com/LarsHill) in
[https://github.com/streamlit/streamlit/pull/7712](https://togithub.com/streamlit/streamlit/pull/7712)
- Move dg_stack into a ContextVar to support with blocks in separate
threads by [@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7715](https://togithub.com/streamlit/streamlit/pull/7715)
- Improve st.connection caching behavior by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7730](https://togithub.com/streamlit/streamlit/pull/7730)
- Don't use hash on floats in hashing.py by
[@&#8203;BlackHC](https://togithub.com/BlackHC) in
[https://github.com/streamlit/streamlit/pull/7754](https://togithub.com/streamlit/streamlit/pull/7754)

##### Other Changes

- Deprecate unused config options by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7584](https://togithub.com/streamlit/streamlit/pull/7584)
- Remove "Made by Streamlit" footer by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7583](https://togithub.com/streamlit/streamlit/pull/7583)
- Tweak "forgot config" SnowflakeConnection error message by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7652](https://togithub.com/streamlit/streamlit/pull/7652)
- Release Streamlit version 1.28.1 by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7666](https://togithub.com/streamlit/streamlit/pull/7666)
- Poll for script completion much more often in AppTest by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7691](https://togithub.com/streamlit/streamlit/pull/7691)
- Add Python 3.12 support by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7663](https://togithub.com/streamlit/streamlit/pull/7663)
- Release Streamlit version 1.28.2 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7716](https://togithub.com/streamlit/streamlit/pull/7716)
- fix: component dev url typo by
[@&#8203;ObservedObserver](https://togithub.com/ObservedObserver) in
[https://github.com/streamlit/streamlit/pull/7746](https://togithub.com/streamlit/streamlit/pull/7746)
- Fix another url typo by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7764](https://togithub.com/streamlit/streamlit/pull/7764)

#### New Contributors

- [@&#8203;kongzii](https://togithub.com/kongzii) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7422](https://togithub.com/streamlit/streamlit/pull/7422)
- [@&#8203;Asaurus1](https://togithub.com/Asaurus1) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7408](https://togithub.com/streamlit/streamlit/pull/7408)
- [@&#8203;thezanke](https://togithub.com/thezanke) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7671](https://togithub.com/streamlit/streamlit/pull/7671)
- [@&#8203;LarsHill](https://togithub.com/LarsHill) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7712](https://togithub.com/streamlit/streamlit/pull/7712)
- [@&#8203;eric-skydio](https://togithub.com/eric-skydio) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7715](https://togithub.com/streamlit/streamlit/pull/7715)
- [@&#8203;sfc-gh-pfinnigan](https://togithub.com/sfc-gh-pfinnigan) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7682](https://togithub.com/streamlit/streamlit/pull/7682)
- [@&#8203;samueldg](https://togithub.com/samueldg) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7762](https://togithub.com/streamlit/streamlit/pull/7762)
- [@&#8203;ObservedObserver](https://togithub.com/ObservedObserver) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7746](https://togithub.com/streamlit/streamlit/pull/7746)
- [@&#8203;BlackHC](https://togithub.com/BlackHC) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7754](https://togithub.com/streamlit/streamlit/pull/7754)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.2...1.29.0

###
[`v1.28.2`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.2)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.1...1.28.2)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.2 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.1...1.28.2

###
[`v1.28.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.0...1.28.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.0...1.28.1

###
[`v1.28.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.27.2...1.28.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Remove legacy dataframe serialization by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7429](https://togithub.com/streamlit/streamlit/pull/7429)

##### New Features 🎉

- Add overrideable default timeout for script tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7327](https://togithub.com/streamlit/streamlit/pull/7327)
- Fluent asserts and type narrowing for widgets in tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7325](https://togithub.com/streamlit/streamlit/pull/7325)
- Teach st.write how to not set unsafe_allow_html when possible by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7432](https://togithub.com/streamlit/streamlit/pull/7432)
- Add datetime index editing support for `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7483](https://togithub.com/streamlit/streamlit/pull/7483)
- Support Graphviz layout engines by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/7505](https://togithub.com/streamlit/streamlit/pull/7505)
- Better input/output visibility in Langchain callback by
[@&#8203;pokidyshev](https://togithub.com/pokidyshev) in
[https://github.com/streamlit/streamlit/pull/7478](https://togithub.com/streamlit/streamlit/pull/7478)
- New test framework api structure by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7413](https://togithub.com/streamlit/streamlit/pull/7413)
- Arrow dataframe test wrapper by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7519](https://togithub.com/streamlit/streamlit/pull/7519)
- Columns and tabs in script testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7524](https://togithub.com/streamlit/streamlit/pull/7524)
- Chat input and messages for app testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7535](https://togithub.com/streamlit/streamlit/pull/7535)
- Update `st.spinner` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7488](https://togithub.com/streamlit/streamlit/pull/7488)
- Alert classes in app testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7542](https://togithub.com/streamlit/streamlit/pull/7542)
- Query params and secrets in app tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7561](https://togithub.com/streamlit/streamlit/pull/7561)
- De-experimentalize st.connection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7536](https://togithub.com/streamlit/streamlit/pull/7536)
- Minor st.connection tweaks by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7562](https://togithub.com/streamlit/streamlit/pull/7562)
- Basic app test repr cleanup by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7573](https://togithub.com/streamlit/streamlit/pull/7573)
- Add toolbar to `st.dataframe` and `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7345](https://togithub.com/streamlit/streamlit/pull/7345)
- Implement many remaining AppTest elements by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7576](https://togithub.com/streamlit/streamlit/pull/7576)

##### Bug Fixes 🐛

- Remove autosizer so we don't have weird flickering and weird layout
issues by [@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7281](https://togithub.com/streamlit/streamlit/pull/7281)
- Better dataframe hashing by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7331](https://togithub.com/streamlit/streamlit/pull/7331)
- Fix bokeh slider by adding in side effects to package json by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7441](https://togithub.com/streamlit/streamlit/pull/7441)
- Fix vertical button regression in toolbar actions by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7470](https://togithub.com/streamlit/streamlit/pull/7470)
- Upgrade plotly.js version by
[@&#8203;sfc-gh-wihuang](https://togithub.com/sfc-gh-wihuang) in
[https://github.com/streamlit/streamlit/pull/7449](https://togithub.com/streamlit/streamlit/pull/7449)
- Avoid confusion about file extensions: keep inner dots by
[@&#8203;mo42](https://togithub.com/mo42) in
[https://github.com/streamlit/streamlit/pull/7362](https://togithub.com/streamlit/streamlit/pull/7362)
- Configure non-range indices as required for editing with
`st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7481](https://togithub.com/streamlit/streamlit/pull/7481)
- Widget style fixes by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7486](https://togithub.com/streamlit/streamlit/pull/7486)
- Support for non-string column names in `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7485](https://togithub.com/streamlit/streamlit/pull/7485)
- Add user-friendly exception if dataframe exceeds max config of Pandas
Styler by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7497](https://togithub.com/streamlit/streamlit/pull/7497)
- Only use get_active_session when running in SiS by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7502](https://togithub.com/streamlit/streamlit/pull/7502)
- Call matplotlib crash fix for scripts run in tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7511](https://togithub.com/streamlit/streamlit/pull/7511)
- Improve decimal type support for `st.dataframe` and `st.data_editor`
by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7475](https://togithub.com/streamlit/streamlit/pull/7475)
- Fix: Foreign language anchors by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7454](https://togithub.com/streamlit/streamlit/pull/7454)
- Fix Chat Message container to align and manage the autosizer handling
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7504](https://togithub.com/streamlit/streamlit/pull/7504)
- Added permission to use Clipboard API in IFrame by
[@&#8203;dilipthakkar](https://togithub.com/dilipthakkar) in
[https://github.com/streamlit/streamlit/pull/7487](https://togithub.com/streamlit/streamlit/pull/7487)
- Move label attribute to only widgets that have it by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7560](https://togithub.com/streamlit/streamlit/pull/7560)
- Fix select slider value setting with non-strings by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7566](https://togithub.com/streamlit/streamlit/pull/7566)
- Fix attr access of session state in app tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7543](https://togithub.com/streamlit/streamlit/pull/7543)
- Added FIPS compliance by
[@&#8203;DueViktor](https://togithub.com/DueViktor) in
[https://github.com/streamlit/streamlit/pull/7527](https://togithub.com/streamlit/streamlit/pull/7527)
- Enlarge sidebar left and right padding to match MPA spacing by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7531](https://togithub.com/streamlit/streamlit/pull/7531)
- Convert Expander to Details/Summary Element by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7247](https://togithub.com/streamlit/streamlit/pull/7247)
- Fix chat_input repr and add repr tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7574](https://togithub.com/streamlit/streamlit/pull/7574)

##### Other Changes

- Release 1.27.0 by [@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7402](https://togithub.com/streamlit/streamlit/pull/7402)
- Allow pillow 10.0.1 by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7442](https://togithub.com/streamlit/streamlit/pull/7442)
- Release 1.27.1 by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https:/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on the first day of the
month" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/sawyerh/highlights).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNzcuOCIsInVwZGF0ZWRJblZlciI6IjM3LjM3Ny44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants