Skip to content

M163: Add docking layout persistence#193

Merged
Coasterpete merged 1 commit into
mainfrom
milestone/m163-layout-persistence
Jul 20, 2026
Merged

M163: Add docking layout persistence#193
Coasterpete merged 1 commit into
mainfrom
milestone/m163-layout-persistence

Conversation

@Coasterpete

Copy link
Copy Markdown
Owner

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.

@Coasterpete
Coasterpete merged commit bf73a02 into main Jul 20, 2026
1 check passed
@Coasterpete
Coasterpete deleted the milestone/m163-layout-persistence branch July 20, 2026 00:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant