ReviewOS

also looking at this

craft-native/craft

fix(native): retain keyed controls and correct map and tab chrome

#368
Merged chris wants to merge codex/native-repeated-selector-identity into main
32 files +449 -100

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

.github/workflows/mobile-e2e.ymlmodified+4-4
Changes to .github/workflows/mobile-e2e.yml
@@ -167,7 +167,7 @@ jobs:
167167 uses: actions/checkout@v6
168168 with:
169169 repository: stacksjs/stx
170 ref: 3dd3240fc9a64f360e9690eee50c483be3325705
170 ref: 413b21432886fda5c610e7eaaaa2ad95dce2f04f
171171 path: .stx-compiler
172172
173173 - name: Install stx compiler dependencies
@@ -286,7 +286,7 @@ jobs:
286286 uses: actions/checkout@v6
287287 with:
288288 repository: stacksjs/stx
289 ref: 3dd3240fc9a64f360e9690eee50c483be3325705
289 ref: 413b21432886fda5c610e7eaaaa2ad95dce2f04f
290290 path: .stx-compiler
291291
292292 - name: Install stx compiler dependencies
@@ -434,7 +434,7 @@ jobs:
434434 uses: actions/checkout@v6
435435 with:
436436 repository: stacksjs/stx
437 ref: 3dd3240fc9a64f360e9690eee50c483be3325705
437 ref: 413b21432886fda5c610e7eaaaa2ad95dce2f04f
438438 path: .stx-compiler
439439
440440 - name: Install Android stx compiler dependencies
@@ -642,7 +642,7 @@ jobs:
642642 - uses: actions/checkout@v6
643643 with:
644644 repository: stacksjs/stx
645 ref: 3dd3240fc9a64f360e9690eee50c483be3325705
645 ref: 413b21432886fda5c610e7eaaaa2ad95dce2f04f
646646 path: .stx-compiler
647647 - run: bun install --no-save
648648 working-directory: .stx-compiler
docs/guides/native-stx.mdmodified+4-3
Changes to docs/guides/native-stx.md
@@ -61,9 +61,10 @@ capability APIs from the host.
6161The maintained Mobile E2E workflow checks out one exact stx compiler commit for
6262both simulator hosts. Update the iOS and Android refs together; the workflow
6363contract test rejects compiler skew between them.
64The current pair is pinned to `3dd3240fc9a64f360e9690eee50c483be3325705`,
65which keeps a container's testID around a library component, draws `Checkbox`
66natively and keeps a style object's `transform` and `shadowOffset`.
64The current pair is pinned to `413b21432886fda5c610e7eaaaa2ad95dce2f04f`,
65which preserves authored reconciliation keys in created and cloned native nodes.
66This qualifies the compiler and native mutation models together; release qualification
67must use the corresponding normally published compiler before consumer adoption.
6768
6869The host-neutral layout contract lives in Craft's Zig runtime at
6970`packages/zig/src/native_layout.zig`. It defines the shared row/column flex
packages/android/fixtures/native-navigation/README.mdmodified+1-1
Changes to packages/android/fixtures/native-navigation/README.md
@@ -105,7 +105,7 @@ Returning to a retained route reapplies native theme defaults before it becomes
105105visible, so a dark-mode change while another route is open cannot leave stale
106106colors behind.
107107CI uses `@stacksjs/stx` (`stx native compile`) pinned at
108`3dd3240fc9a64f360e9690eee50c483be3325705` (stx `0.2.544`). For an unreleased sibling
108`413b21432886fda5c610e7eaaaa2ad95dce2f04f` (STX authored-key qualification candidate). For an unreleased sibling
109109checkout, set `STX_CLI=../stx/packages/stx/bin/cli.ts`; native support is part
110110of `@stacksjs/stx`, so do not install the historical `stx-native` package or
111111compiler. The compiler installs an initial tree atomically before sending
packages/ios/fixtures/native-navigation/README.mdmodified+1-1
Changes to packages/ios/fixtures/native-navigation/README.md
@@ -51,7 +51,7 @@ without relying on a screenshot.
5151
5252From the Craft repository, with `@stacksjs/stx` available as `stx` (the
5353maintained CI checkout is pinned to
54`3dd3240fc9a64f360e9690eee50c483be3325705` / stx `0.2.544`):
54`413b21432886fda5c610e7eaaaa2ad95dce2f04f` / STX authored-key qualification candidate):
5555
5656```bash
5757bun packages/ios/scripts/test-native-navigation.ts
scripts/release-workflow.test.tsmodified+1-1
Changes to scripts/release-workflow.test.ts
@@ -18,7 +18,7 @@ type Job = {
1818}
1919const release = Bun.YAML.parse(readFileSync(join(import.meta.dir, '../.github/workflows/release.yml'), 'utf8')) as { jobs: Record<string, Job> }
2020const artifactDownload = 'actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093'
21const stxCompilerCommit = '3dd3240fc9a64f360e9690eee50c483be3325705'
21const stxCompilerCommit = '413b21432886fda5c610e7eaaaa2ad95dce2f04f'
2222const needs = (job: Job) => typeof job.needs === 'string' ? [job.needs] : job.needs ?? []
2323const steps = (job: Job) => job.steps?.map(step => step.run ?? '').join('\n') ?? ''
2424