Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 47 additions & 1 deletion .changeset/pre.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"action-in-owned-scope-guard",
"action-thenable-assimilation-settle",
"add-diagnostics-package",
"add-per-call-invoke",
"add-refresh-subpath",
"add-serialization-subpath",
"add-server-functions-subpath",
Expand All @@ -50,6 +51,7 @@
"async-slot-args-value-tier",
"attribution-unstable-memo-output",
"attribution-wide-write",
"audit-driver-family-decline-multi-slot",
"avoid-reconcile-key-recompute",
"bare-client-source-suspends-as-final-hole",
"behavior-claims-delegate-glue",
Expand All @@ -70,13 +72,16 @@
"bump-dom-expressions-next-4",
"bump-dom-expressions-next-5",
"bump-dom-expressions-next-8",
"clarify-invoke-wrapper-contract",
"clean-bikes-teach",
"client-only-preload-hints",
"client-only-sibling-id-drift",
"coalesce-refresh-scheduling",
"cold-field-extension-split",
"companion-oracle-census",
"companion-shadow-redesign",
"compiler-loader-accepts-patch-driver",
"compiler-loader-prefer-local-build",
"container-tier-projection-traces",
"context-default-less-throws",
"core-hot-path-shape-alignment",
Expand All @@ -95,6 +100,7 @@
"dev-tools-cleanup",
"dev-warn-unhandled-async",
"diagnostic-code-prefix",
"diagnostic-console-footers",
"document-action-await-contract",
"document-action-mutation-navigation-framing",
"document-control-flow-callback-shapes",
Expand All @@ -114,6 +120,7 @@
"eliminate-optimistic-revert-targets",
"export-memo-options",
"expose-enableExternalSource-loading-on",
"fetch-option-retry-contract",
"fill-cleanup-occurrence-scope",
"fix-absorbed-compiler-parity",
"fix-action-falsy-generator-throw",
Expand All @@ -127,6 +134,7 @@
"fix-affects-first-statement-lane",
"fix-affects-mark-read-transparency",
"fix-array-index-write-detection",
"fix-array-target-dictionary-mode",
"fix-asset-preload-rejection",
"fix-async-boundary-diagnostic",
"fix-async-generator-action-freeze",
Expand Down Expand Up @@ -166,10 +174,12 @@
"fix-hybrid-iterable-signal-takeover",
"fix-hydrated-nullish-values",
"fix-hydration-and-signals-baseline",
"fix-hydration-latched-divergence-lost",
"fix-insert-sibling-rerender",
"fix-insert-text-node-reuse",
"fix-ispending-dev-prod-divergence",
"fix-ispending-errored-source-loop",
"fix-ispending-memo-consistency",
"fix-ispending-optimistic-refresh",
"fix-keyed-affects-cross-family",
"fix-keyed-show-strict-read",
Expand Down Expand Up @@ -224,9 +234,12 @@
"fix-projection-refresh-pending",
"fix-projection-refresh-stale-pending",
"fix-projection-splice-overrides",
"fix-projection-ssr-flush-loop-hang",
"fix-projection-ssr-promise-resolution",
"fix-projection-store-effect-phase-visibility",
"fix-projection-store-root-chaining",
"fix-projection-streaming-without-loading-boundary",
"fix-projection-transition-isolation",
"fix-reaction-zero-dep-dispose",
"fix-reconcile-array-node-sync",
"fix-reconcile-array-object-type-mismatch",
Expand All @@ -250,6 +263,7 @@
"fix-resting-optimistic-async-commit",
"fix-reveal-frontier-errored-boundary",
"fix-scheduler-child-queue-removal",
"fix-select-empty-value-ssr",
"fix-server-dynamic-promise-source",
"fix-server-effect-error-swallow",
"fix-server-effect-pending-read-loop",
Expand All @@ -261,6 +275,7 @@
"fix-shallow-store-proxy-children",
"fix-show-ssr-hydration-placement",
"fix-silent-error-recovery-stale-reveal",
"fix-slot-emission-append-race",
"fix-snapshot-array-length-zero",
"fix-snapshot-derived-store-row-proxy-leak",
"fix-snapshot-optimistic-overlay",
Expand All @@ -281,6 +296,7 @@
"fix-ssrsource-client-hybrid-hydration",
"fix-storage-types-path",
"fix-store-cold-write-batching",
"fix-store-fold-scheduling-strand",
"fix-store-in-store-track-chaining",
"fix-store-prototype-getters",
"fix-store-proxy-invariants",
Expand All @@ -295,10 +311,10 @@
"fix-throwing-effect-cleanup",
"fix-transition-merge-optimistic-dup",
"fix-transparent-insert-alignment",
"fix-usehead-prelude-hydration-walk",
"flatten-promise-of-async-iterable",
"fluffy-bananas-smoke",
"fold-runtime-wrappers",
"forbid-wrapped-module-server-exports",
"format-ssr-hydration-followups",
"fragment-ledger-one-reveal-owner",
"fragment-reveal-policy-registry",
Expand Down Expand Up @@ -328,6 +344,7 @@
"ispending-loading-guard",
"ispending-wrapper-fresh-hold",
"iterate-bare-step-tolerance",
"jfb-driver-and-write-bound",
"keep-ambient-batch-on-stash",
"late-boundary-held-fragment-wait",
"latest-lazy-companion-backfill",
Expand Down Expand Up @@ -355,12 +372,14 @@
"migrate-web-runtime-to-ts",
"missing-effect-fn-loud-failure",
"mode-specific-control-flow-callbacks",
"module-server-exports-register-by-value",
"move-loading-wrapper-into-flow",
"move-to-beta",
"multi-root-pending-boundaries",
"nohydration-lazy-maparray-deps",
"notready-skip-stack-capture",
"npm-descriptions",
"optimistic-lists-drivable",
"optimistic-mask-effective-writes-only",
"optimistic-mask-ispending",
"optimize-effect-creation",
Expand All @@ -369,11 +388,25 @@
"option-a-mid-transition-observability",
"owned-non-lazy-memo-autodispose",
"pass-2-collapse",
"patch-channel-pay-for-use",
"patch-channel-pr-a",
"patch-channel-reaudit-2",
"patch-channel-reaudit-3",
"patch-channel-reaudit-5",
"patch-channel-reaudit-hardening",
"patch-channel-row-ops",
"patch-fallback-semantics",
"patch-held-on-transition",
"patch-list-hydration-claim",
"patch-list-identity-ruling",
"patch-mode-list-driver",
"patch-two-tier-arming",
"pay-for-use-treeshaking-phase-1",
"pay-for-use-treeshaking-phase-2",
"pay-for-use-treeshaking-phase-3",
"pending-hold-provenance-and-a20",
"per-root-boundary-resume",
"per-row-patch-unbinds",
"perf-2893-guard-cleanup",
"perf-dep-revalidation-and-reconcile",
"perfect-spies-pretend",
Expand All @@ -384,6 +417,7 @@
"portal-marker-cleanup",
"predigested-flight-outcome",
"preserve-store-symbol-snapshots",
"projection-lists-drivable",
"projection-root-entity-swap",
"propagation-hot-path-regression",
"protect-server-functions-csrf",
Expand All @@ -394,11 +428,13 @@
"reconcile-array-object-shape-guard",
"reconcile-default-id-positional-null",
"reconcile-symbol-keyed-nodes",
"reconcile-walk-guard-hoist",
"recover-from-halt-in-dev-workflows",
"redesign-refresh-targets",
"refactor-ssr-stream-blocking",
"refactor-widen-prop-value-printwidth",
"refine-server-boundary-settlement",
"refresh-call-expr-registration",
"refresh-lifts-stale-manual-write-mask",
"refreshable-type-alias",
"remove-derived-initial-values",
Expand All @@ -421,20 +457,29 @@
"reveal-ssr-streaming-support",
"reveal-string-ssr-collapsed",
"reveal-together-nested",
"row-proof-admission",
"rude-pillows-tell",
"rxcore-ssr-async-value",
"scope-function-children-holes",
"serialization-decode-entry",
"server-component-context-barrier",
"server-first-value-lock",
"server-function-call-observers",
"server-function-extension-surface",
"server-function-http-hygiene",
"server-function-path-addressing",
"server-functions-client-fetch",
"server-memo-commit-liveness",
"server-memo-scaffold-diet",
"server-mock-csp-nonce",
"server-slot-store-and-boundary-trims",
"server-store-replacement-optimistic-noop",
"setter-row-ops-tentative-lists",
"sever-reveal-group-at-boundaries",
"shallow-compiled-slot-channel",
"shallow-slot-alignment-samevaluezero",
"shallow-stores-markraw",
"shared-effect-status-notifier",
"shell-gate-first-apply",
"signals-disposed-stay-disposed",
"simplify-pending-latest-internals",
Expand Down Expand Up @@ -491,6 +536,7 @@
"tiny-lions-jam",
"transparent-devcomponent",
"transparent-effect-option-typed",
"transport-failure-on-foreign-response",
"truncation-sweep-all-registry-refs",
"two-weeks-smell",
"unwrap-status-error-nullish",
Expand Down
7 changes: 7 additions & 0 deletions packages/babel-plugin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# @solidjs/babel-plugin

## 2.0.0-rc.4

### Patch Changes

- 8d249c7: Patch-channel contract hardening from the stage-2 re-audit: ordinary `patchDriver` registrations unbind with their owner (entries no longer leak past unmount); merged transitions move their held-patch stash so no patch strands; the optimistic drain shares the normal drain's per-entry error isolation and boundary routing; accessor-bearing records are excluded at admission (scan-before-trust) and records that acquire accessors demote their patches to tracked effect fallbacks; writable projection arrays emit setter row ops at their fold-commit visibility moment; row-ops/slot registrations resolve chained backings to the ultimate owner; duplicate keys match occurrence-aware instead of first-wins; the production dev-token typo (`_DX_DEV_`) is fixed; `patchDriver: true` normalizes identically in Babel and the native loader, the option is typed in `TransformOptions`, and a `dom-patch` parity tier ratchets patch-mode output across both compilers (currently byte-identical on all fixtures).
- b534733: Scope-wrap bare function children in hydratable mode. A function child (`<main>{() => <App/>}</main>`, including via the `children` attribute) is a deferred hole at runtime, but it never classified as `dynamic`, so neither generate reserved an id scope for it — its owner ids drifted across async retry passes on the server and desynced from the client (the #2900 hydration-id-parity class). Both compilers now treat syntactic function expressions as scope-eligible alongside dynamic values, emitting `_$scope(...)` in the ssr generate and around the matching insert accessor in the dom generate. The native compiler also unwraps TS casts in the allocate-ids predicate, matching Babel (fixes a scope-emission desync for `{call() as any}` children).

## 2.0.0-rc.3

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@solidjs/babel-plugin",
"description": "Babel compiler plugin for Solid templates",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"author": "Ryan Carniato",
"license": "MIT",
"repository": {
Expand Down
14 changes: 14 additions & 0 deletions packages/compiler/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# @solidjs/compiler

## 2.0.0-rc.4

### Minor Changes

- 5455320: Register call-shaped component bindings in the refresh (HMR) pass (#3090). A component produced by a factory call — `styled(...)`, an HOC, a tagged template — was never registered, and once a registered sibling made the module self-accept, `hot.accept()` disabled the very module invalidation its staleness relied on: the export went permanently stale, silently. Two compile-time admission gates fix this. A call-shaped top-level binding rendered as a JSX tag in its own module is proven a component and registers automatically (resolution is scope-aware — shadowing locals don't count). For export-only shapes with no in-module usage, the per-binding `@refresh component` pragma asserts it: `export const Badge = /* @refresh component */ styled.span\`...\``. Registered call bindings get the full treatment — location, granular signature, and dependencies, with same-module registered components excluded from the dependency set (edits propagate through the proxy chain; counting them would remount the consumer on every edit of the module). This is a deliberate native-first divergence from the frozen Babel-plugin reference.

### Patch Changes

- 3a2d214: The native compiler's JS loader accepts the `patchDriver` option and normalizes the boolean opt-in: the Rust core supports the option (dormant by default), but `validateOptions`' whitelist rejected it, and the napi wrapper mapping collapses `true` into `Wrapper::Default` — which `patch_driver` uniquely treats as disabled. The loader now whitelists the option and maps `true` to the default `"patchDriver"` import name so an explicit opt-in through `@solidjs/vite-plugin` reaches the native core.
- bfc834e: Prefer a local development build (`compiler.node`) over the installed `@solidjs/compiler-*` platform package when loading the native binding. The published package ships no local binary, so a local build can only mean development — but the loader tried the platform package first, which made the monorepo's own tests (locally and in CI) silently run against the last published release instead of the code under test. A present-but-unloadable local build now fails loudly instead of degrading to the published binary.
- 2f01f23: Module-level "use server" exports now register by value: the server build registers each export's evaluated terminal initializer whole, so server-side wrappers compose onto every call path — `export const getUser = withValidation(schema, fn)` applies the wrapper to HTTP dispatch and in-process SSR calls alike, and patterns like `withDelay(fn, 400)` work for server mocks. The client build always emits bare references, so wrappers, schemas, and helpers stay server-only by construction. The compiler never inspects the initializer's shape; `registerServerReference` now throws at module eval when handed a non-function, turning stray non-function exports into loud boot errors instead of dead references. Anonymous default expressions (`export default withDelay(...)`, `export default async () => ...`) get a synthesized binding and register too — previously they were silently dropped from both builds. Supersedes the unreleased wrapped-export compile error.
- 8d249c7: Patch-channel contract hardening from the stage-2 re-audit: ordinary `patchDriver` registrations unbind with their owner (entries no longer leak past unmount); merged transitions move their held-patch stash so no patch strands; the optimistic drain shares the normal drain's per-entry error isolation and boundary routing; accessor-bearing records are excluded at admission (scan-before-trust) and records that acquire accessors demote their patches to tracked effect fallbacks; writable projection arrays emit setter row ops at their fold-commit visibility moment; row-ops/slot registrations resolve chained backings to the ultimate owner; duplicate keys match occurrence-aware instead of first-wins; the production dev-token typo (`_DX_DEV_`) is fixed; `patchDriver: true` normalizes identically in Babel and the native loader, the option is typed in `TransformOptions`, and a `dom-patch` parity tier ratchets patch-mode output across both compilers (currently byte-identical on all fixtures).
- b534733: Scope-wrap bare function children in hydratable mode. A function child (`<main>{() => <App/>}</main>`, including via the `children` attribute) is a deferred hole at runtime, but it never classified as `dynamic`, so neither generate reserved an id scope for it — its owner ids drifted across async retry passes on the server and desynced from the client (the #2900 hydration-id-parity class). Both compilers now treat syntactic function expressions as scope-eligible alongside dynamic values, emitting `_$scope(...)` in the ssr generate and around the matching insert accessor in the dom generate. The native compiler also unwraps TS casts in the allocate-ids predicate, matching Babel (fixes a scope-emission desync for `{call() as any}` children).

## 2.0.0-rc.3

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-darwin-arm64",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"cpu": [
"arm64"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-darwin-x64",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"cpu": [
"x64"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-linux-arm64-gnu",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"cpu": [
"arm64"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-linux-x64-gnu",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"cpu": [
"x64"
],
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/wasm32-wasi/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-wasm32-wasi",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"main": "compiler.wasi.cjs",
"files": [
"compiler.wasm32-wasi.wasm",
Expand Down
2 changes: 1 addition & 1 deletion packages/compiler/npm/win32-x64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@solidjs/compiler-win32-x64-msvc",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"cpu": [
"x64"
],
Expand Down
14 changes: 7 additions & 7 deletions packages/compiler/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@solidjs/compiler",
"description": "Solid's native Oxc JSX compiler",
"version": "2.0.0-rc.3",
"version": "2.0.0-rc.4",
"author": "Ryan Carniato",
"license": "MIT",
"repository": {
Expand Down Expand Up @@ -62,11 +62,11 @@
"emnapi": "^1.11.3"
},
"optionalDependencies": {
"@solidjs/compiler-darwin-x64": "2.0.0-rc.3",
"@solidjs/compiler-darwin-arm64": "2.0.0-rc.3",
"@solidjs/compiler-linux-x64-gnu": "2.0.0-rc.3",
"@solidjs/compiler-linux-arm64-gnu": "2.0.0-rc.3",
"@solidjs/compiler-win32-x64-msvc": "2.0.0-rc.3",
"@solidjs/compiler-wasm32-wasi": "2.0.0-rc.3"
"@solidjs/compiler-darwin-x64": "2.0.0-rc.4",
"@solidjs/compiler-darwin-arm64": "2.0.0-rc.4",
"@solidjs/compiler-linux-x64-gnu": "2.0.0-rc.4",
"@solidjs/compiler-linux-arm64-gnu": "2.0.0-rc.4",
"@solidjs/compiler-win32-x64-msvc": "2.0.0-rc.4",
"@solidjs/compiler-wasm32-wasi": "2.0.0-rc.4"
}
}
33 changes: 33 additions & 0 deletions packages/diagnostics/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,38 @@
# @solidjs/diagnostics

## 2.0.0-rc.4

### Patch Changes

- Updated dependencies [8d249c7]
- Updated dependencies [f0c3692]
- Updated dependencies [8d249c7]
- Updated dependencies [505c73d]
- Updated dependencies [de9e3cb]
- Updated dependencies [0e37f90]
- Updated dependencies [8d249c7]
- Updated dependencies [b96d7ce]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [8d249c7]
- Updated dependencies [ba6c0b6]
- @solidjs/signals@2.0.0-rc.4

## 2.0.0-rc.3

### Minor Changes
Expand Down
Loading