fix: preserve fullscreen layouts through window restoration - #13
Merged
Merged
Conversation
- Retain complete layout templates and bind replacement windows to distinct slots across app relaunches, partial restoration, and window removal. - Preserve display ownership before sleep when the screen list becomes empty, cancel stale topology notifications, and retain reconciled wake layouts. - Let explicit layout edits replace pending restoration while preserving Auto-balance ratios during unchanged window discovery. - Document macOS window reopening and independent profile layouts in all five supported languages; preserve automatic profile-switching policy. Tests: 767 macOS tests passed; Release build succeeded; 35 generated docs verified. Tart validation covered native TextEdit reopening, inactive and staggered windows, virtual display reconnects, and restoration after a real restart with manual Tatami launch. Physical clamshell and unattended login launch remain outside the VM validation boundary.
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.
Closing and reopening three fullscreen TextEdit windows could overwrite their saved layout after the first window appeared, leaving the other two tiled. Activating a workspace after its app relaunched could also retain fullscreen identifiers from the old process.
This change retains complete layout templates while windows are absent and restores layout and fullscreen zoom through the same one-to-one slot bindings. Surviving windows keep their slots; explicit layout edits replace pending restoration. A no-op discovery preserves Auto-balance already applied to the partial live tree.
An empty display list now freezes the previous desktop before display ownership can be erased ahead of the sleep notification. Queued stale screen configurations are cancelled, and wake completion preserves the reconciled layout instead of resetting it when every window identifier changed. Automatic profile switching and independent per-profile workspace layouts retain their existing behavior.
Adds window/layout restoration guidance and profile-switch troubleshooting in all five supported languages. macOS and each app continue to decide which documents reopen; Tatami matches layout slots by app and window occurrence.
Validation
Physical clamshell/dock transitions and unattended Tatami Launch at Login remain unverified in the VM. The restart validation used a manual Tatami launch because LaunchServices execution has a separate Accessibility permission boundary in that guest.