Skip to content

Release 0.4.0: sharper materials and reliable pointer input - #5

Merged
alexrett merged 8 commits into
mainfrom
codex/seamless-material-effects
Sep 6, 2026
Merged

alexrett merged 8 commits into
mainfrom
codex/seamless-material-effects

Conversation

@alexrett

@alexrett alexrett commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Window Burn 0.4.0 improves the transition from a native window to its effect, preserving Retina detail, native shadows, transparency and Display P3 colors. Wet materials and combustion also gain more detailed rendering.

Torch clicks and soak gestures now run through a dedicated input thread with bounded delivery to the UI. Repeated clicks remain attached to the burning snapshot, cursor tracking continues independently of rendering, and macOS cursor/screen-recording surfaces no longer hide native targets. Window Burn's menu keeps its normal click behavior.

The release increments the app version to 0.4.0 (build 5). Existing native close recovery remains in place.

Validation: 123 Swift tests, strict Swift format lint, Metal alpha verification, and universal arm64/x86_64 release build. Physical input on the final implementation confirmed both tools, repeated ignition points and cursor following; HID and production input counts matched without tap timeouts. Capture, rendering and input evidence and limitations are recorded in the linked repository audits.

Copilot AI lite review requested due to automatic review settings September 6, 2026 12:17
@alexrett
alexrett merged commit 1d7bfe9 into main Sep 6, 2026
2 checks passed

Copilot AI 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.

🔵 Needs a closer look

It introduces substantial changes across input interception, rendering/presentation, and capture pipelines where one confirmed concurrency issue remains and the overall risk profile warrants human verification.

Pull request overview

This PR prepares Window Burn 0.4.0 by improving capture fidelity (Retina detail, native shadows/transparency, Display P3), upgrading wet/combustion material rendering, and moving pointer interception to a dedicated input thread with bounded delivery to the UI to prevent tap timeouts and input leakage.

Changes:

  • Reworks pointer input handling with a dedicated event-tap thread, periodic resolver snapshots, bounded buffering/coalescing, and menu-tracking suspension.
  • Upgrades capture and presentation handoff to preserve native pixels/shadows/color space, plus adds automated quality/alpha verification tooling.
  • Refines wet optics and combustion simulation/shading, with expanded Swift Testing coverage across new core/input primitives.
File summaries
File Description
Tests/WindowBurnInputTests/PointerTargetResolverTests.swift Adds regression coverage for filtering out cursor/screen-recording overlays from native target resolution.
Tests/WindowBurnInputTests/PointerTapStateTests.swift Adds extensive coverage for bounded queue routing, menu tracking suspension, stale events, and window-identity handling.
Tests/WindowBurnCoreTests/WetVisualProfileTests.swift Updates expectations to match reduced background blur for wet absorption.
Tests/WindowBurnCoreTests/WetMaterialOpticsTests.swift Adds tests for Fresnel reflectance and Beer–Lambert transmittance behavior.
Tests/WindowBurnCoreTests/PointerTargetSnapshotTests.swift Adds snapshot hit-testing tests for surfaces vs cached regions and blocking regions.
Tests/WindowBurnCoreTests/PointerEventBufferTests.swift Adds tests for bounded buffer ordering, motion coalescing, eviction, and stale timestamp rejection.
Tests/WindowBurnCoreTests/PointerDragRecoveryTests.swift Adds tests for drag/release recovery behavior.
Tests/WindowBurnCoreTests/DisplayCaptureRegionTests.swift Adds tests for display-geometry cropping and consistent pixel rounding/clipping behavior.
Tests/WindowBurnCoreTests/CombustionModelTests.swift Adds tests for deltaTime=0 stability, refresh-rate independence, and char/visibility behavior.
Support/Info.plist Bumps app version to 0.4.0 (build 5).
Sources/WindowBurnCore/WetVisualProfile.swift Tunes wet blur parameters to preserve captured texture readability.
Sources/WindowBurnCore/WetMaterialOptics.swift Introduces thin-film optics helpers (reflectance/transmittance).
Sources/WindowBurnCore/TorchBurn.swift Exposes interaction regions for active sessions to support explicit hit testing over effect surfaces.
Sources/WindowBurnCore/PointerTargetSnapshot.swift Adds a lightweight snapshot model for front-to-back hit testing with blocking regions and short freshness window.
Sources/WindowBurnCore/PointerEventBuffer.swift Adds bounded buffer for async pointer delivery with reserved release slot and motion coalescing.
Sources/WindowBurnCore/PointerDragRecovery.swift Adds small state machine to reconcile missing drag/up events with hardware state sampling.
Sources/WindowBurnCore/DisplayCaptureRegion.swift Adds capture region helper with explicit destinationRect for transparent off-display padding.
Sources/WindowBurnCore/CombustionModel.swift Makes time-stepping stable for deltaTime=0 and adjusts conduction/decay formulas; updates scorch opacity model.
Sources/WindowBurn/WindowServerWindowService.swift Refactors to expose on-screen window candidates for resolver use.
Sources/WindowBurn/WindowControlInterceptor.swift Replaces main-runloop tap/AX work with dedicated input thread + UI drain + new routing/state machinery.
Sources/WindowBurn/WindowCaptureService.swift Captures window+shadow via display geometry when possible, adds handoff capture, and enforces P3 + shadow flags.
Sources/WindowBurn/TorchCursorController.swift Updates cursor tracking to follow latest pointer independently of rendering; throttles artwork updates.
Sources/WindowBurn/QualityReviewController.swift Adds automated capture/material fidelity audit runner producing screenshots, diffs, and GPU timings.
Sources/WindowBurn/PointerTargetResolver.swift Adds periodic resolver that builds window/control hit-test snapshots off the tap/UI threads.
Sources/WindowBurn/InputDiagnostics.swift Adds opt-in diagnostics for event counts/timing (tap, HID observer, drawable waits) without recording content.
Sources/WindowBurn/BurnRenderer.swift Adds handoff texture path, premultiplied P3 texture upload, drawable presentation acknowledgement, and shader/material refinements.
Sources/WindowBurn/BurnOverlayController.swift Makes present/activation/handoff async and waits for compositor-presented frames; configures P3 CAMetalLayer.
Sources/WindowBurn/BurnCoordinator.swift Wires new capture exclusions, interaction regions, async overlay APIs, and updated torch/soak routing inputs.
Sources/WindowBurn/AppDelegate.swift Adds prewarm, menu tracking hooks, quality-review launch mode, diagnostics start, and new interceptor/coordinator wiring.
Sources/WindowBurn/AccessibilityWindowService.swift Adds deadline-based AX reads, window preflight for resolver passes, and makes AX handle wrappers Sendable.
script/check-renderer-alpha.swift Adds GPU-side alpha/blending contract verification (and optional benchmark) for the renderer shader path.
script/build_and_run.sh Adds convenience modes for input diagnostics and quality review runs.
README.md Documents new verification steps and quality review workflow.
Package.swift Adds WindowBurnInputTests target.
docs/quality-audit.md Documents capture/material fidelity issues, fixes, measurement approach, and remaining limitations.
docs/pointer-input-fix.md Documents pointer input root cause, redesign, and validation/diagnostics procedures.
docs/input-and-compositing-audit.md Records investigation of prior input/compositing issues and motivation for the input redesign.
Review details
  • Files reviewed: 37/37 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +53 to 55
let timer = Timer(timeInterval: 1.0 / 60.0, repeats: true) { [weak self] _ in
MainActor.assumeIsolated { self?.drain() }
}
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