Skip to content

windows-reactor gaps and hardening - #4682

Merged
Kenny Kerr (kennykerr) merged 2 commits into
masterfrom
reactor-hardening
Jul 8, 2026
Merged

windows-reactor gaps and hardening#4682
Kenny Kerr (kennykerr) merged 2 commits into
masterfrom
reactor-hardening

Conversation

@kennykerr

Copy link
Copy Markdown
Collaborator

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens windows-reactor based on external field reports by adding a central fault boundary for WinUI callback panics, filling functional gaps (window icon support), and fixing/reproducing correctness issues with new regression tests and samples.

Changes:

  • Add a reactor-owned fault boundary (fault) and public App::on_fault hook to catch/report panics from WinUI callback entry points.
  • Add window icon support via App::icon + un-stub IAppWindow::SetIcon, plus a sample.
  • Fix nested component re-render pruning and add regressions; add animated_canvas unmount teardown + regression.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
docs/crates/windows-reactor.md Documents the new fault/panic contract and field-reported friction items.
crates/tools/reactor/src/base.txt Un-stubs IAppWindow::SetIcon in the bindings filter.
crates/tests/libs/reactor/tests/nested_state_rerender.rs Regression test for nested component re-rendering from its own use_state.
crates/tests/libs/reactor_selftest/src/bindings.rs Regenerated selftest bindings to include IAppWindow::SetIcon.
crates/tests/libs/canvas/src/lib.rs Regression asserting animated_canvas installs an unmount teardown.
crates/tests/libs/canvas/Cargo.toml Enables windows-canvas reactor feature and adds windows-reactor for the new test.
crates/samples/reactor/samples/examples/on_fault.rs New sample demonstrating App::on_fault behavior.
crates/samples/reactor/samples/examples/icon.rs New sample demonstrating App::icon.
crates/libs/reactor/src/reconciler.rs Seeds forced re-render for state-dirty nested components to avoid pruning bugs.
crates/libs/reactor/src/lib.rs Adds fault module and exports Fault.
crates/libs/reactor/src/interaction.rs Wraps callback invocation with the fault boundary.
crates/libs/reactor/src/host.rs Applies icon/presenter/backdrop best-effort work via fault reporting inside activate.
crates/libs/reactor/src/hooks.rs Wraps timers/rendering callbacks with the fault boundary.
crates/libs/reactor/src/fault.rs New central fault boundary (catch, render_scope, report) + unit tests.
crates/libs/reactor/src/engine.rs Wraps render pass in fault::render_scope.
crates/libs/reactor/src/bindings.rs Regenerated reactor bindings to include IAppWindow::SetIcon.
crates/libs/reactor/src/backend/winui/mod.rs Consolidates best-effort COM drops/logging through diag::{warn,dropped}.
crates/libs/reactor/src/backend/winui/diag.rs Introduces unified debug-only warn/drop helpers with #[track_caller].
crates/libs/reactor/src/app.rs Adds App::icon + file validation and App::on_fault handler installation.
crates/libs/canvas/src/reactor.rs Adds animated_canvas unmount teardown to break a reference cycle and stop leaks.

Comment thread crates/libs/reactor/src/fault.rs
@kennykerr
Kenny Kerr (kennykerr) merged commit 2a907f4 into master Jul 8, 2026
34 checks passed
@kennykerr
Kenny Kerr (kennykerr) deleted the reactor-hardening branch July 8, 2026 18:19
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