fix: preserve displays and restore tiles after layout edits - #32
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 08236badc4
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 00a932ea1b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 736bc8608a
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8c83628fa0
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Summary
Layout edits broadcast bundle refreshes that previously rebuilt every Linux display, even when the edited layout was inactive or unassigned. Preserve display widgets and operator overrides when their active rendering inputs are unchanged, while caching new assignments for future switches.
Editing an active layout also exposed a transition bug: matched tiles become transparent until a ghost-widget frame callback restores them, but a separate timer removes that ghost after 400 ms. Delayed or absent frame ticks can leave unchanged tiles permanently invisible while the changed tile stays visible. Cleanup now restores every tile before removing the animation overlay, and transition images are frozen before the old grid is detached.
Refresh comparisons cover active-layout preloads and both focus/fullscreen overrides. Pipeline reuse compares connection settings rather than telemetry, labels, capabilities or recording metadata. Visible tiles additionally compare their camera names. Comparison-only credential fingerprints ignore randomized encryption IVs for camera and smart-URL secrets while retaining real password changes. Removed or reconfigured cameras invalidate their cached pipelines, so old stream URLs or credentials cannot survive through pool reuse. Required hot-layout camera streams are recreated after invalidation without rebuilding the active display. Preserved empty layouts update their kiosk/display names and sync timestamp in the existing diagnostic label.
Validation