feat: Restructure tab navigation with wrapped multi-row deck and debouncing#8
Merged
feat: Restructure tab navigation with wrapped multi-row deck and debouncing#8
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR refactors the request tab system to use a new wrapped multi-row tab deck (
RequestTabBar), improving navigation usability for large collections. Key enhancements include debounced tab changes for smoother performance, new tab settings (preview, limits, activation behavior), and better session persistence. The old single-rowrequest_tab_bar.pyis deprecated in favor of the sub-package structure.Key Changes
bar.py: CustomRequestTabBarwith wrapped rows, drag-to-reorder, and close interactions (650+ lines).labels.py:TabLabelandFolderTabLabelfor chip-style tab rendering (278 lines).tab_button.py:TabButtoncomponent with close/reorder logic (203 lines)._TabControllerMixinto integrate new deck, with debouncing and flush mechanism for tab switches (665 lines changed).tab_settings_manager.py(260 lines) for persisting tab prefs via QSettings (preview mode, row limits, activate-on-close, wrap mode).settings_dialog.pyto include tab settings UI (154 lines).draft_controller.py,variable_controller.py, andwindow.py: Minor wiring updates for new tab APIs.send_pipeline.py(not shown in diff but implied): Ensured compatibility with tab changes.auth_mixin.py: Refactored for better tab context handling (157 lines).editor_widget.py: Small fixes for tab switching.architecture.instructions.md, andtesting.instructions.mdto reflect new structure, signals, and test patterns.profile_startup.pyfor performance profiling during development (190 lines).request_tab_bar.pysimplified (359 lines removed); re-export via__init__.py.Benefits
Testing
test_collection_tree_actions.pyandtest_snippet_panel.py.Related
Ready for review! 🚀