[PR #17282] feat: Implement resizable sidebar and improve responsive layout #11178

Open
opened 2025-11-11 19:24:21 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/17282
Author: @SukJinKim
Created: 9/9/2025
Status: 🔄 Open

Base: devHead: dev


📝 Commits (5)

  • 00fcd27 fix: update ChatItem title display to truncate long text
  • 7002b75 feat: implement resizable sidebar with persistent width
  • 1d7941c feat: move resizer handler for sidebar to improve layout responsiveness
  • 9f592ad feat: enhance sidebar resizing performance with requestAnimationFrame
  • fa8a6e1 fix: update sidebar width styling for improved responsiveness

📊 Changes

14 files changed (+108 additions, -18 deletions)

View changed files

📝 src/lib/components/channel/Channel.svelte (+1 -1)
📝 src/lib/components/chat/Chat.svelte (+2 -2)
📝 src/lib/components/chat/MessageInput/FilesOverlay.svelte (+1 -1)
📝 src/lib/components/layout/Sidebar.svelte (+92 -5)
📝 src/lib/components/layout/Sidebar/ChatItem.svelte (+1 -1)
📝 src/lib/components/workspace/Knowledge/KnowledgeBase.svelte (+1 -1)
📝 src/lib/stores/index.ts (+3 -0)
📝 src/routes/(app)/+layout.svelte (+1 -1)
📝 src/routes/(app)/admin/+layout.svelte (+1 -1)
📝 src/routes/(app)/home/+layout.svelte (+1 -1)
📝 src/routes/(app)/notes/+page.svelte (+1 -1)
📝 src/routes/(app)/notes/[id]/+page.svelte (+1 -1)
📝 src/routes/(app)/playground/+layout.svelte (+1 -1)
📝 src/routes/(app)/workspace/+layout.svelte (+1 -1)

📄 Description

Pull Request Checklist

Discussions: #7765, #7909

Note to first-time contributors: Please open a discussion post in Discussions and describe your changes before submitting a pull request.

Before submitting, make sure you've checked the following:

  • Target branch: Please verify that the pull request targets the dev branch.
  • Description: Provide a concise description of the changes made in this pull request.
  • Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
  • Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
  • Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
  • Testing: Have you written and run sufficient tests to validate the changes?
  • Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
  • Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
    • BREAKING CHANGE: Significant changes that may affect compatibility
    • build: Changes that affect the build system or external dependencies
    • ci: Changes to our continuous integration processes or workflows
    • chore: Refactor, cleanup, or other non-functional code changes
    • docs: Documentation update or addition
    • feat: Introduces a new feature or enhancement to the codebase
    • fix: Bug fix or error correction
    • i18n: Internationalization or localization changes
    • perf: Performance improvement
    • refactor: Code restructuring for better maintainability, readability, or scalability
    • style: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.)
    • test: Adding missing tests or correcting existing tests
    • WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry

Description

  • This PR introduces a resizable sidebar with persistent width, improves sidebar resizing performance using requestAnimationFrame, and updates layout responsiveness across the application. The sidebar width is now stored in localStorage and reflected via a CSS variable, ensuring consistent appearance and usability. All related layout components have been updated to use the new sidebar width variable for better responsiveness.
  • For improved user experience, sidebar resizing is only enabled on desktop environments. Minimum and maximum sidebar widths are enfoced.

Added

  • Resizable sidebar functionality with persistent width (saved in localStorage)
  • requestAnimationFrame(rAF)-based throttling for smooth sidebar resizing
  • New Svelte store: sidebarWidth (default: 260)
  • Sidebar resizing is available only on desktop; disabled on mobile
  • Minumum and maximum sidebar width constraints (min: 220px, max: 480px)

Changed

  • Updated all layout and container components to use var(--sidbar-width) instead of a fixed width (260px)
  • Sidebar width styling updated for better responsiveness and max-width handling

Deprecated

  • None

Removed

  • Hardcoded sidebar width values in layout and container components

Fixed

  • Sidebar resizing performance and responsiveness issues

Security

  • No security-related changes

Breaking Changes

  • BREAKING CHANGE: Sidebar width is now controlled via a CSS variable and Svlete store, replacing previous hardcoded values. Custom styles or integrations relying on the old fixed width may require updates.

Additional Information

  • This PR imroves the user experience on both desktop and mobile by making the sidebar more flexible and responsive.

Screenshots or Videos

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.


🔄 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/17282 **Author:** [@SukJinKim](https://github.com/SukJinKim) **Created:** 9/9/2025 **Status:** 🔄 Open **Base:** `dev` ← **Head:** `dev` --- ### 📝 Commits (5) - [`00fcd27`](https://github.com/open-webui/open-webui/commit/00fcd27f5712b90d24c697794dbe862e8315adeb) fix: update ChatItem title display to truncate long text - [`7002b75`](https://github.com/open-webui/open-webui/commit/7002b750c6b9ed7be10bb67ddb52acd4abee3321) feat: implement resizable sidebar with persistent width - [`1d7941c`](https://github.com/open-webui/open-webui/commit/1d7941c54ec999d73756e2d0ff9daa229e4a1f11) feat: move resizer handler for sidebar to improve layout responsiveness - [`9f592ad`](https://github.com/open-webui/open-webui/commit/9f592ad45302e2c6b6de409d549509f4131d92cc) feat: enhance sidebar resizing performance with requestAnimationFrame - [`fa8a6e1`](https://github.com/open-webui/open-webui/commit/fa8a6e1c4d4d2b10c17248f9665509da93c5e5f6) fix: update sidebar width styling for improved responsiveness ### 📊 Changes **14 files changed** (+108 additions, -18 deletions) <details> <summary>View changed files</summary> 📝 `src/lib/components/channel/Channel.svelte` (+1 -1) 📝 `src/lib/components/chat/Chat.svelte` (+2 -2) 📝 `src/lib/components/chat/MessageInput/FilesOverlay.svelte` (+1 -1) 📝 `src/lib/components/layout/Sidebar.svelte` (+92 -5) 📝 `src/lib/components/layout/Sidebar/ChatItem.svelte` (+1 -1) 📝 `src/lib/components/workspace/Knowledge/KnowledgeBase.svelte` (+1 -1) 📝 `src/lib/stores/index.ts` (+3 -0) 📝 `src/routes/(app)/+layout.svelte` (+1 -1) 📝 `src/routes/(app)/admin/+layout.svelte` (+1 -1) 📝 `src/routes/(app)/home/+layout.svelte` (+1 -1) 📝 `src/routes/(app)/notes/+page.svelte` (+1 -1) 📝 `src/routes/(app)/notes/[id]/+page.svelte` (+1 -1) 📝 `src/routes/(app)/playground/+layout.svelte` (+1 -1) 📝 `src/routes/(app)/workspace/+layout.svelte` (+1 -1) </details> ### 📄 Description # Pull Request Checklist ### Discussions: #7765, #7909 ### Note to first-time contributors: Please open a discussion post in [Discussions](https://github.com/open-webui/open-webui/discussions) and describe your changes before submitting a pull request. **Before submitting, make sure you've checked the following:** - [x] **Target branch:** Please verify that the pull request targets the `dev` branch. - [x] **Description:** Provide a concise description of the changes made in this pull request. - [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. - [x] **Documentation:** Have you updated relevant documentation [Open WebUI Docs](https://github.com/open-webui/docs), or other documentation sources? - [x] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [x] **Testing:** Have you written and run sufficient tests to validate the changes? - [x] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [x] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - **BREAKING CHANGE**: Significant changes that may affect compatibility - **build**: Changes that affect the build system or external dependencies - **ci**: Changes to our continuous integration processes or workflows - **chore**: Refactor, cleanup, or other non-functional code changes - **docs**: Documentation update or addition - **feat**: Introduces a new feature or enhancement to the codebase - **fix**: Bug fix or error correction - **i18n**: Internationalization or localization changes - **perf**: Performance improvement - **refactor**: Code restructuring for better maintainability, readability, or scalability - **style**: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc.) - **test**: Adding missing tests or correcting existing tests - **WIP**: Work in progress, a temporary label for incomplete or ongoing work # Changelog Entry ### Description - This PR introduces a `resizable sidebar` with persistent width, improves sidebar resizing performance using requestAnimationFrame, and updates layout responsiveness across the application. The sidebar width is now stored in localStorage and reflected via a CSS variable, ensuring consistent appearance and usability. All related layout components have been updated to use the new sidebar width variable for better responsiveness. - For improved user experience, sidebar resizing is `only enabled on desktop environments`. Minimum and maximum sidebar widths are enfoced. ### Added - Resizable sidebar functionality with persistent width (saved in localStorage) - requestAnimationFrame(rAF)-based throttling for smooth sidebar resizing - New Svelte store: `sidebarWidth` (default: 260) - Sidebar resizing is available only on desktop; disabled on mobile - Minumum and maximum sidebar width constraints (min: 220px, max: 480px) ### Changed - Updated all layout and container components to use `var(--sidbar-width)` instead of a fixed width (260px) - Sidebar width styling updated for better responsiveness and max-width handling ### Deprecated - None ### Removed - Hardcoded sidebar width values in layout and container components ### Fixed - Sidebar resizing performance and responsiveness issues ### Security - No security-related changes ### Breaking Changes - **BREAKING CHANGE**: Sidebar width is now controlled via a CSS variable and Svlete store, replacing previous hardcoded values. Custom styles or integrations relying on the old fixed width may require updates. --- ### Additional Information - This PR imroves the user experience on both desktop and mobile by making the sidebar more flexible and responsive. ### Screenshots or Videos - [Resizable sidebar(on desktop)](https://www.youtube.com/watch?v=MlMoNygv1jE) [![Open-webUI Resizable sidebar(on desktop)](https://img.youtube.com/vi/MlMoNygv1jE/0.jpg)](https://www.youtube.com/watch?v=MlMoNygv1jE) - [Resizable sidebar(on mobile)](https://www.youtube.com/watch?v=-q0VXK3u0Qg) [![Open-webUI Resizable sidebar(on mobile)](https://img.youtube.com/vi/-q0VXK3u0Qg/0.jpg)](https://www.youtube.com/watch?v=-q0VXK3u0Qg) ### Contributor License Agreement By submitting this pull request, I confirm that I have read and fully agree to the [Contributor License Agreement (CLA)](/CONTRIBUTOR_LICENSE_AGREEMENT), and I am providing my contributions under its terms. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2025-11-11 19:24:21 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#11178