Repository navigation
Release 0.4.0: sharper materials and reliable pointer input - #5
Merged
Merged
Conversation
There was a problem hiding this comment.
🔵 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() } | ||
| } |
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.
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.