Note to first-time contributors: Please open a discussion post in Discussions to discuss your idea/fix with the community before creating a pull request, and describe your changes before submitting a pull request.
Before submitting, make sure you've checked the following:
Target branch: Verify that the pull request targets the dev branch. PRs targeting main will be immediately closed.
Description: Provide a concise description of the changes made in this pull request down below.
Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
Documentation: Add docs in Open WebUI Docs Repository. Document user-facing behavior, environment variables, public APIs/interfaces, or deployment steps.
Dependencies: No new or upgraded dependencies were added.
Testing: I manually validated that the controls state stays isolated per tab while still persisting across reloads in the same tab.
Agentic AI Code: The changes received additional human review and manual testing before submission.
Code review: I performed a self-review of the final diff.
Design & Architecture: This keeps the change local to ephemeral UI state and avoids introducing any new settings.
Git Hygiene: The PR is atomic and limited to the tab-scoped state fix.
Title Prefix: The title uses the fix prefix.
Changelog Entry
Description
Fix chat control visibility and collapse state so it remains scoped to the current browser tab instead of leaking through shared localStorage.
Added
None.
Changed
Switched the top-level controls visibility persistence in +layout.svelte from localStorage to sessionStorage.
Switched the collapsible state persistence inside Controls.svelte to sessionStorage as well.
Deprecated
None.
Removed
None.
Fixed
Prevented one tab from reopening artifact or advanced control sections in another tab.
Preserved the expected behavior where a reload in the same tab keeps the current controls state.
Confirm the other tab keeps its own independent state.
Reload the original tab and confirm its state persists within that tab.
git diff --check passed locally.
Frontend formatter and svelte-check could not be run reliably in the current checkout because the required Svelte toolchain was not fully installed.
Screenshots or Videos
Not attached in this update.
Contributor License Agreement
By submitting this pull request, I confirm that I have read and fully agree to the Contributor License Agreement (CLA), and I am providing my contributions under its terms.
Note
Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/23369
**Author:** [@haimingZZ](https://github.com/haimingZZ)
**Created:** 4/3/2026
**Status:** ❌ Closed
**Base:** `dev` ← **Head:** `fix/tab-scoped-controls-state-haimingzz`
---
### 📝 Commits (10+)
- [`fe6783c`](https://github.com/open-webui/open-webui/commit/fe6783c16699911c7be17392596d579333fb110c) Merge pull request #19030 from open-webui/dev
- [`fc05e0a`](https://github.com/open-webui/open-webui/commit/fc05e0a6c5d39da60b603b4d520f800d6e36f748) Merge pull request #19405 from open-webui/dev
- [`e3faec6`](https://github.com/open-webui/open-webui/commit/e3faec62c58e3a83d89aa3df539feacefa125e0c) Merge pull request #19416 from open-webui/dev
- [`9899293`](https://github.com/open-webui/open-webui/commit/9899293f050ad50ae12024cbebee7e018acd851e) Merge pull request #19448 from open-webui/dev
- [`140605e`](https://github.com/open-webui/open-webui/commit/140605e660b8186a7d5c79fb3be6ffb147a2f498) Merge pull request #19462 from open-webui/dev
- [`6f1486f`](https://github.com/open-webui/open-webui/commit/6f1486ffd0cb288d0e21f41845361924e0d742b3) Merge pull request #19466 from open-webui/dev
- [`d95f533`](https://github.com/open-webui/open-webui/commit/d95f533214e3fe5beb5e41ec1f349940bc4c7043) Merge pull request #19729 from open-webui/dev
- [`a727153`](https://github.com/open-webui/open-webui/commit/a7271532f8a38da46785afcaa7e65f9a45e7d753) 0.6.43 (#20093)
- [`6adde20`](https://github.com/open-webui/open-webui/commit/6adde203cd292a9e3af9c64a2ae36b603fed096a) Merge pull request #20394 from open-webui/dev
- [`f9b0534`](https://github.com/open-webui/open-webui/commit/f9b0534e0c442631d1cb7205169588b9b6204179) Merge pull request #20522 from open-webui/dev
### 📊 Changes
**2 files changed** (+19 additions, -7 deletions)
<details>
<summary>View changed files</summary>
📝 `src/lib/components/chat/Controls/Controls.svelte` (+6 -3)
📝 `src/routes/(app)/+layout.svelte` (+13 -4)
</details>
### 📄 Description
# Pull Request Checklist
### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) to discuss your idea/fix with the community before creating a pull request, and describe your changes before submitting a pull request.
**Before submitting, make sure you've checked the following:**
- [x] **Target branch:** Verify that the pull request targets the `dev` branch. **PRs targeting `main` will be immediately closed.**
- [x] **Description:** Provide a concise description of the changes made in this pull request down below.
- [x] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description.
- [ ] **Documentation:** Add docs in [Open WebUI Docs Repository](https://github.com/open-webui/docs). Document user-facing behavior, environment variables, public APIs/interfaces, or deployment steps.
- [x] **Dependencies:** No new or upgraded dependencies were added.
- [x] **Testing:** I manually validated that the controls state stays isolated per tab while still persisting across reloads in the same tab.
- [x] **Agentic AI Code:** The changes received additional human review and manual testing before submission.
- [x] **Code review:** I performed a self-review of the final diff.
- [x] **Design & Architecture:** This keeps the change local to ephemeral UI state and avoids introducing any new settings.
- [x] **Git Hygiene:** The PR is atomic and limited to the tab-scoped state fix.
- [x] **Title Prefix:** The title uses the `fix` prefix.
# Changelog Entry
### Description
- Fix chat control visibility and collapse state so it remains scoped to the current browser tab instead of leaking through shared `localStorage`.
### Added
- None.
### Changed
- Switched the top-level controls visibility persistence in `+layout.svelte` from `localStorage` to `sessionStorage`.
- Switched the collapsible state persistence inside `Controls.svelte` to `sessionStorage` as well.
### Deprecated
- None.
### Removed
- None.
### Fixed
- Prevented one tab from reopening artifact or advanced control sections in another tab.
- Preserved the expected behavior where a reload in the same tab keeps the current controls state.
### Security
- None.
### Breaking Changes
- **BREAKING CHANGE**: None.
---
### Additional Information
- Closes #23232.
- Manual verification:
- Open two tabs in Open WebUI.
- Expand or collapse controls in one tab.
- Confirm the other tab keeps its own independent state.
- Reload the original tab and confirm its state persists within that tab.
- `git diff --check` passed locally.
- Frontend formatter and `svelte-check` could not be run reliably in the current checkout because the required Svelte toolchain was not fully installed.
### Screenshots or Videos
- Not attached in this update.
### Contributor License Agreement
<!--
🚨 DO NOT DELETE THE TEXT BELOW 🚨
Keep the "Contributor License Agreement" confirmation text intact.
Deleting it will trigger the CLA-Bot to INVALIDATE your PR.
Your PR will NOT be reviewed or merged until you check the box below confirming that you have read and agree to the terms of the CLA.
-->
- [x] By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](https://github.com/open-webui/open-webui/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms.
> [!NOTE]
> Deleting the CLA section will lead to immediate closure of your PR and it will not be merged in.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/23369
Author: @haimingZZ
Created: 4/3/2026
Status: ❌ Closed
Base:
dev← Head:fix/tab-scoped-controls-state-haimingzz📝 Commits (10+)
fe6783cMerge pull request #19030 from open-webui/devfc05e0aMerge pull request #19405 from open-webui/deve3faec6Merge pull request #19416 from open-webui/dev9899293Merge pull request #19448 from open-webui/dev140605eMerge pull request #19462 from open-webui/dev6f1486fMerge pull request #19466 from open-webui/devd95f533Merge pull request #19729 from open-webui/deva7271530.6.43 (#20093)6adde20Merge pull request #20394 from open-webui/devf9b0534Merge pull request #20522 from open-webui/dev📊 Changes
2 files changed (+19 additions, -7 deletions)
View changed files
📝
src/lib/components/chat/Controls/Controls.svelte(+6 -3)📝
src/routes/(app)/+layout.svelte(+13 -4)📄 Description
Pull Request Checklist
Note to first-time contributors: Please open a discussion post in Discussions to discuss your idea/fix with the community before creating a pull request, and describe your changes before submitting a pull request.
Before submitting, make sure you've checked the following:
devbranch. PRs targetingmainwill be immediately closed.fixprefix.Changelog Entry
Description
localStorage.Added
Changed
+layout.sveltefromlocalStoragetosessionStorage.Controls.sveltetosessionStorageas well.Deprecated
Removed
Fixed
Security
Breaking Changes
Additional Information
git diff --checkpassed locally.svelte-checkcould not be run reliably in the current checkout because the required Svelte toolchain was not fully installed.Screenshots or Videos
Contributor License Agreement
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.