ReviewOS

stacks/stx

Let real outside clicks reach DialogBackdrop through DialogPanel layout

#2124
Closed chris opened this 6 days ago ·
6 days ago

The documented Dialog / DialogBackdrop / DialogPanel composition does not dismiss on a real outside click. DialogPanel places a fixed full-screen layout above DialogBackdrop; native hit-testing targets its full-height flex wrapper, so the backdrop marker never receives the event. This affects centered panels and sheets.

Reproduced in the browser game while replacing its settlement confirmation with the maintained component: stacksjs/the-settlers-iii-remake#224. The owning-source regression compiles the actual shipped components with processDirectives, generates their actual ts-css stylesheet, and uses native Chrome pointer input through Bun.WebView. Before the correction, both variants fail the outside hit-target assertion. Existing DOM tests call the backdrop handler directly and cannot detect this geometry problem.

The source correction lets pointer events pass through the full-screen layout and restores them on the actual panel. Native-host markup is unchanged. The regression also checks interactive panel controls, close-on-backdrop opt-out, focus restoration and scroll-lock cleanup. Related previous behavior work: #1978 and #2057.

Acceptance:

  • Retain an owning-source native pointer regression with real generated CSS for centered panels and sheets.
  • Let actual outside clicks reach the backdrop while retaining panel interaction and the close-on-backdrop opt-out.
  • Pass source lint, types, exports, build, installed-package smoke checks and relevant full tests.
  • Publish through the normal patch release and verify the actual publication and release gates.
  • Adopt the verified publication through Stacks and qualify the production game confirmation.
6 days ago

The source correction is on main. The maintained native-pointer regression passes for centered and sheet layouts, including required-dialog opt-out, panel interaction, restored focus and scroll-lock cleanup. It also passes on Bun 1.4.2, matching CI.

The full local suite passed 17,245 tests with zero failures and 34 existing skips. Release preflight passed build, types, export validation, installed-package smoke checks, performance budgets and its 324 focused tests. Lint completed without errors and formatting passed. Source CI is running; lint, types and macOS native signing have passed. The normal patch release and downstream adoption are next.

6 days ago

The full-screen DialogPanel layout now passes outside pointer events to DialogBackdrop while the panel remains interactive. Native Chrome regressions cover centered panels, sheets, inside controls, backdrop opt-out, Escape, focus restoration and scroll-lock cleanup.

Source checks and the main release gate passed. STX 0.2.719 was published and all six original package archives were verified, including the published DialogPanel contents against its owning source. The correction was adopted through Stacks 0.75.328 into the production game. Game CI passed its 135 dialog steps across desktop, short landscape at 2x and narrow screens, within the full 681-step browser gate.

The delivery receipt retains the checks and publication identities. The separate Marketplace credential failure remains tracked in #2125; no successful Marketplace publication is claimed.

Sign in to comment on this issue.