Skip to content

fix: preserve displays and restore tiles after layout edits - #32

Merged
mrinc merged 5 commits into
masterfrom
fix/layout-refresh
Sep 23, 2026
Merged

mrinc merged 5 commits into
masterfrom
fix/layout-refresh

Conversation

@bcbetterninja

@bcbetterninja bcbetterninja commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

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

  • All 34 Rust core tests pass locally.
  • Linux client CI passed at 0a1fc08: full workspace tests, including randomized camera/smart-URL credential, metadata-only refresh, and hot-stream recreation regressions, plus GTK regressions for metadata/fullscreen refresh, 16-tile animation cleanup without frame ticks, sleep/activity behavior, and pairing health confirmation.
  • git diff --check passes; commit signatures verified.
  • Physical kiosk validation remains outstanding.

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 3f824c9a-59a5-4c66-99f8-6b2871b17789


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread client/core/src/layout.rs Outdated
Comment thread client/src/platform/linux/ui.rs Outdated
@bcbetterninja bcbetterninja changed the title fix: preserve displays when inactive layouts change fix: preserve displays and restore tiles after layout edits Sep 22, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread client/core/src/layout.rs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread client/core/src/layout.rs
Comment thread client/src/platform/linux/ui.rs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread client/core/src/layout.rs Outdated
Comment thread client/core/src/layout.rs
@mrinc
mrinc merged commit f41b363 into master Sep 23, 2026
10 checks passed
@mrinc
mrinc deleted the fix/layout-refresh branch September 23, 2026 22:56
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.

2 participants