ReviewOS

stacks/stx

Compile native pointer-event styles against the maintained host targeting contract

#2137
Closed chris opened this 3 days ago ·
3 days ago

The native compiler currently reports pointer-events styles as unknown, including the built-in toast container's pass-through style. Native prop forwarding alone is insufficient: the maintained hosts also need real matching targeting support before dropping this diagnostic.

Add the four-mode pointer policy to native style IR and shared CSS/object/serialized style normalization, plus the Crosswind auto/none utilities. Preserve unknown-value diagnostics. Verify the same normalization at runtime so reactive clears retain the normal mutation tombstone semantics.

Coordinate normal publication and consumer installation with https://github.com/craft-native/craft/issues/428. The UIKit host currently passes all 342 native unit tests, including policy/prop precedence, modal pass-through, disabled controls and targeted clearing. Android source compilation passes; real instrumentation is in progress. HQ acceptance must keep its unknown-style gate until both matching packages are released and installed.

Launch issue: https://github.com/stacksjs/hq.training/issues/339. Related shared component architecture: https://github.com/stacksjs/stx/issues/2091.

3 days ago

Normally published as STX/components/plugin 0.2.753 and now consumed with the matching published Craft SDK/iOS 0.0.396 in https://github.com/stacksjs/hq.training/commit/ccda2a9b2. The real HQ account/coach compilation failed on dropped pointerEvents before adoption and passes after it. HQ now includes unknown-style in its shared diagnostic gate; all 20 using suites pass (332 tests), alongside full types/lint and 41 element/portal checks. Compiler/host source and actual native host release acceptance remain linked in /craft-native/craft/issues/428. Native purchase/voice interaction acceptance is separately tracked in /stacks/hq.training/issues/376 and /stacks/hq.training/issues/368.

3 days ago

Audited against current main and closing as implemented. The compiler correction is c9626c9; standalone iOS renderer support followed in 82abfb9. Both are included in STX 0.2.753, whose original public npm archives (STX, components and bun-plugin-stx) were downloaded and SHA-512 verified in this audit.

Additional maintained regressions landed in 75e437f: packages/stx/test/native/reactive-inline-style.test.ts now drives all four policies through compiled normal/minified bundles for iOS/Android, using CSS/object/serialized styles, checking retained node identity, class fallback, null clearing tombstones, invalid-value warnings and hide/show updates. Removing box-none/box-only support makes all four new platform/build cases fail.

Validation: 137 source checks across 20 files passed; 13 checks against fresh, unmodified npm 0.2.753 installations passed, including real Chrome slot/ref checks and the compiled native style tests. Types, lint and format pass. These JS integration checks verify STX output/mutations, not device hit-testing.

The matching Craft implementation is released in 0.0.396 per craft-native/craft#428. Chris's preceding comment additionally records HQ adoption of STX 0.2.753/Craft 0.0.396, the repaired account/coach compilation and the strengthened unknown-style gate. This audit adds independent STX regression evidence; it does not extend that acceptance to the separately tracked native purchase/voice interactions. Craft code was untouched.

Sign in to comment on this issue.