fix: support solid-js 2.0.0-rc.20 without server writes#5
Summary
Quoin 0.6.0 pins its Solid peers to 2.0.0-rc.18. Consumers on 2.0.0-rc.20 get a duplicate @solidjs/signals install, and rendering an uncontrolled controlled-state root such as <Dialog.Root> emits Solid's SERVER_WRITE diagnostic because createControlledState seeds its internal signal through the setter during render.
This PR:
- Seeds the internal controlled-state signal at creation. The value is stored in a small
{ value }wrapper so a function value is not mistaken for a lazy computed signal. - Skips client-only registration and measurement writes during SSR for labels, field controls, mount transitions, tooltip triggers, avatar cleanup, slider thumb maps, tabs, and toolbar maps.
- Keeps Field SSR associations intact by having the labelable provider read its registration maps directly on the server instead of writing a signal there.
- Adds an SSR regression test for an uncontrolled
<Dialog.Root>. - Runs the SSR suite with
--conditions development, where Solid emitsSERVER_WRITE. - Tests against
solid-js@2.0.0-rc.20and widens the peer range to>=2.0.0-rc.18 <3.0.0.
Validation
bun run typecheckbun test: 1934 pass, 148 skip, 0 failbun run test:ssr: 40 pass, 0 failbun run test:hydration: 12 pass, 0 fail
The SSR suite produces no SERVER_WRITE diagnostics under rc.20 with development conditions. No public component API changes.
Added 1 commit
- fix: support solid-js 2.0.0-rc.20 without server writes88027c2