[PR #22747] fix: prevent panel width localStorage pollution during viewport compression (#22745) #30040

Closed
opened 2026-02-21 20:46:44 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/22747

State: closed
Merged: Yes


Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

This PR fixes a workflow panel width persistence bug where panels become permanently collapsed after viewport shrinking. Fixes #22745.

Problem: Panel widths were saved to localStorage on every resize event, including system-driven compressions during viewport changes. This caused temporary compressed widths to overwrite user preferences permanently.

Solution: Added a source parameter to panel width update functions to distinguish user actions from system adjustments. Only user-initiated resizes are persisted to localStorage.

Changes:

  • Modified Node Panel updateNodePanelWidth to accept source: 'user' | 'system' parameter
  • Modified Preview Panel handleResize to accept source parameter for consistency
  • Added comprehensive test coverage (16 test cases) for both panels
  • Ensured localStorage is only updated for user-driven resize events

Technical Details:

  • Node Panel: User drag (handleResize) vs system compression (debounceUpdate)
  • Preview Panel: User drag only (no auto-compression logic)
  • Maintains 400px minimum width enforcement
  • Zero breaking changes - fully backward compatible

Screenshots

Before After
Panel width permanently collapsed after F12/viewport changes, requires manual recovery Panel width preserves user preferences and auto-recovers when space available

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/22747 **State:** closed **Merged:** Yes --- > [!IMPORTANT] > > 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) > 2. Ensure there is an associated issue and you have been assigned to it > 3. Use the correct syntax to link this PR: `Fixes #<issue number>`. ## Summary This PR fixes a workflow panel width persistence bug where panels become permanently collapsed after viewport shrinking. Fixes #22745. **Problem:** Panel widths were saved to localStorage on every resize event, including system-driven compressions during viewport changes. This caused temporary compressed widths to overwrite user preferences permanently. **Solution:** Added a `source` parameter to panel width update functions to distinguish user actions from system adjustments. Only user-initiated resizes are persisted to localStorage. **Changes:** - Modified Node Panel `updateNodePanelWidth` to accept `source: 'user' | 'system'` parameter - Modified Preview Panel `handleResize` to accept `source` parameter for consistency - Added comprehensive test coverage (16 test cases) for both panels - Ensured localStorage is only updated for user-driven resize events **Technical Details:** - Node Panel: User drag (`handleResize`) vs system compression (`debounceUpdate`) - Preview Panel: User drag only (no auto-compression logic) - Maintains 400px minimum width enforcement - Zero breaking changes - fully backward compatible ## Screenshots | Before | After | |--------|-------| | Panel width permanently collapsed after F12/viewport changes, requires manual recovery | Panel width preserves user preferences and auto-recovers when space available | ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:46:44 -05:00
yindo closed this issue 2026-02-21 20:46:44 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#30040