M163: Add docking layout persistence#193
Merged
Merged
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.
Summary
Implements persistent docking layouts for the Avalonia editor while keeping all docking and serialization functionality isolated to the frontend.
The editor now automatically restores the user's previous pane arrangement on startup and saves it on shutdown. If no valid layout exists, the documented default Track workspace is recreated automatically.
Highlights
Added DockLayoutPersistenceService for Dock.Avalonia layout serialization.
Automatically saves the current docking layout on application shutdown.
Automatically restores the previous layout during startup.
Uses atomic file replacement to avoid corrupting existing layouts.
Preserves:
splitter proportions
floating windows
tab groups
active tabs
hidden/closed panes
previous dock host for restored hidden panes
Added View → Reset Layout to restore the default Track workspace while preserving the active document and existing pane controls.
Added safe fallback behavior for missing, corrupted, or incompatible layout files.
Added comprehensive docking persistence tests.
Added milestone documentation.
Architecture
Docking persistence remains completely contained within Quantum.Editor.Avalonia.
No Dock.Avalonia or serialization dependencies were introduced into:
Quantum.Core
Quantum.Track
Quantum.Math
EditorWorkspace
EngineeringSnapshot
the authoring graph
the document model
Validation
✅ Release build succeeds with zero warnings.
✅ 1,797 tests passing.
✅ Existing editor behavior preserved.
✅ Docking dependencies remain frontend-only.