date/time/color-field assigned `field.inputId.current = opts.id.current` inside a `$effect` — the A30 anti-pattern (an effect for a one-shot id registration is wasteful + order-fragile). `opts.id` is available at construction and the parent Field context resolves synchronously, so this is a plain constructor assign. Mirrors the 12 field-family providers that already do it right (the fix is byte-equivalent to number-field:583-587 / css-field). Verified by that equivalence + the field providers' 15/15 tests (incl. color-field's input/label wiring test); a live browser check was blocked by a port conflict with another session's dev server. Guard (A30, contracts.test.ts): flags `$effect(... inputId.current = opts.X.current ...)`. - Proven to catch drift: reverting date-field to the effect form makes it fail. - Scoped to an `opts.*` source on purpose: file-upload registers `this.hiddenInputId` (empty '' until a child part mounts) inside a $effect — that source is genuinely async, so the effect is JUSTIFIED, and the `opts.*` requirement leaves it green without an exception list. (The guard surfaced file-upload during development, which is how the distinction was found.) check: 0 new type errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>active-uix
parent
ec100c4bb8
commit
a2ae2c2007
Loading…
Reference in new issue