diff --git a/.changeset/pre.json b/.changeset/pre.json index a8a0dc6724..51faca0b1c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -24,7 +24,8 @@ "@solidjs/diagnostics": "2.0.0-rc.2", "effect-example": "0.0.0", "todos-server-example": "0.0.0", - "board-example": "0.0.0" + "board-example": "0.0.0", + "server-dbmon-example": "0.0.0" }, "changesets": [ "a28-writes-visible-at-flush", @@ -54,6 +55,7 @@ "affects-captured-proxy-scope", "affects-single-key", "afraid-queens-divide", + "agent-facing-links-and-text", "ai-readiness-docs-handoff", "ai-readiness-docs-pass-2", "ai-readiness-docs-pass", @@ -101,6 +103,7 @@ "boundary-accessor-return-types", "boundary-asset-scope-leak", "boundary-fallback-once-per-show", + "boundary-held-mount-u3", "boundary-primitives-internal", "brave-heaps-refuse", "bridge-keeps-shared-references", @@ -118,6 +121,7 @@ "bump-dom-expressions-next-5", "bump-dom-expressions-next-8", "carry-live-get-grant-across-dev-rebind", + "caught-notready-store-reader", "chunk-reader-hardening", "claim-after-initial-attributes-compilers", "claim-after-initial-attributes", @@ -125,6 +129,7 @@ "clean-bikes-teach", "cleanup-unwind-order", "cleanup-use-once-helpers", + "cleanup-write-during-landing", "client-error-hook", "client-only-preload-hints", "client-only-sibling-id-drift", @@ -160,16 +165,20 @@ "context-default-less-throws", "continue-tsrx-semantic-ir", "core-hot-path-shape-alignment", + "create-deferred", + "create-root-dispose-retention", "create-root-ownership-jsdoc", "cross-package-owner-fields", "csr-hydration-seam-trim", "curly-rats-dress", + "data-attribute-types", "dedup-hydration-gate-boilerplate", "dedupe-disposal-dep-clearing", "dedupe-dispose-unobserved", "dedupe-settle-walk-code", "dedupe-single-flight-source-ids", "dedupe-strict-read-diagnostics", + "deferred-retry-claims", "delegated-event-key-namespace", "demote-boundary-primitives", "deprecate-create-tracked-effect", @@ -199,6 +208,7 @@ "diagnostics-engine-release-token", "diagnostics-fanout-repair-projection", "diagnostics-owner-path-console-entry", + "diagnostics-remove-unserved-endpoint-methods", "diagnostics-responsiveness-gate", "direct-control-signal-reporting", "disable-authored-tsrx-lazy-destructuring", @@ -216,6 +226,7 @@ "dormant-memo-relink-on-reawaken", "drop-anchor-nav-attributes", "drop-compiler-legacy", + "drop-internal-nonce-helpers", "dynamic-async-iterable-source-type", "dynamic-binding-gate-prev-next", "dynamic-component-solid", @@ -593,6 +604,7 @@ "fold-runtime-wrappers", "for-hydration-id-parity", "format-ssr-hydration-followups", + "fragment-lazy-assets-resume", "fragment-ledger-one-reveal-owner", "fragment-reveal-policy-registry", "fragment-stylesheet-gate", @@ -608,12 +620,15 @@ "frames-address-source", "frames-assets-tier", "frames-attribute-slots", + "frames-bind-tier-single-scan", "frames-bind-tier", "frames-c12-fragment-error-outcome", "frames-c13-sweep-ops-chunk", + "frames-claim-nested-region-links-once", "frames-claim-through-hydrate-window", "frames-client-externalize-wire-layer", "frames-consume-live", + "frames-data-call-hydration", "frames-data-response-scoped", "frames-drop-dead-slot-nodes-writes", "frames-dynamic-handoff", @@ -636,6 +651,7 @@ "frames-residue-1-lean-reask", "frames-residue-3-every-fill-through-insert", "frames-residue-4-sref-table", + "frames-scoped-hole-sync", "frames-server-components-experimental", "frames-showing-refetch-settles-on-apply", "frames-single-flight-wiring", @@ -645,7 +661,9 @@ "frames-tier-mechanism", "frames-trace-update-site-wait", "frames-traces-tier", + "frames-unmarked-plain-frames", "freeze-awaited-render-head", + "fresh-boundary-child-held-u1", "fresh-loading-fallback-in-flush", "fuzzy-queens-retire", "gate-child-companion-walk", @@ -656,6 +674,7 @@ "golf-effect-ownership-flag", "graph-growth-held-navigation", "graph-growth-outlived-navigation", + "graph-growth-session-snapshot", "graph-growth", "graph-size-diagnostics", "guard-error-carried-failure-channels", @@ -668,7 +687,9 @@ "heap-mark-incremental", "held-branch-reads-its-transaction", "held-derivation-not-a-proposal", + "held-error-waits-for-frame", "held-truth-masks-lane-passes-only", + "hello-world-under-10kb", "hide-internal-type-exports", "hoist-web-protocol-components", "hold-consistency-batch-2", @@ -745,8 +766,14 @@ "lean-ssr-owner-runtime", "lemon-mails-lick", "live-address-event-stream-framing", + "live-attr-escalation-address", "live-chaos-reconnect-knob", + "live-for-async-reads", + "live-for-row-ops", "live-hole-baseline-attr-addresses", + "live-hole-for-keeps-rows", + "live-hole-latched-check", + "live-hole-sweep-scopes", "live-holes-server-support", "live-reference-sync-call-type", "live-response-lifetime-per-scope-takeover", @@ -757,6 +784,7 @@ "live-takeover-yields-adopted-value", "loading-errored-composition-escape", "loading-latest-shared-source-3892", + "loading-lazy-sibling-order", "loading-on-follows-frame", "loading-on-keyed-boundary-not-born-held", "loading-on-latest-is-a-capability", @@ -778,11 +806,14 @@ "missing-effect-fn-loud-failure", "mode-specific-control-flow-callbacks", "module-server-exports-register-by-value", + "morph-drops-stale-text", + "morph-skips-identical", "move-loading-wrapper-into-flow", "move-to-beta", "multi-root-pending-boundaries", "multi-source-single-flight", "multisite-server-component-hydration", + "nested-on-reset-boundary-u4", "nested-region-refetch-3894", "nested-stream-demand-gate-teardown", "nohydration-lazy-maparray-deps", @@ -849,6 +880,7 @@ "per-render-serialize-latch", "per-root-boundary-resume", "per-row-patch-unbinds", + "per-setter-written-keys-u8", "perf-2893-guard-cleanup", "perf-dep-revalidation-and-reconcile", "perf-footer-attribution-discovery", @@ -878,6 +910,7 @@ "projection-leaf-companions-die-with-firewall", "projection-leaf-release", "projection-lists-drivable", + "projection-owner-graph-growth", "projection-root-entity-swap", "projection-root-write-overlay", "projection-sync-throw-reaches-readers", @@ -890,6 +923,7 @@ "rc-api-freeze-pass", "reaction-rearm-replaces", "read-every-body-the-transport-tees", + "rearm-boundary-scope-u9", "rebuild-buffered-request-from-parts", "recompute-preserves-disposed", "reconcile-array-object-shape-guard", @@ -954,6 +988,7 @@ "require-client-source-commit-zero", "require-seroval-1-5-4", "require-seroval-1-6", + "respond-bigint-lazy-body", "respond-envelope-is-a-response", "response-head-lifecycle", "responsive-preload-links", @@ -962,6 +997,7 @@ "reveal-ssr-streaming-support", "reveal-string-ssr-collapsed", "reveal-together-nested", + "revealed-fragment-before-settle", "revert-complete-store-seeds", "revert-dynamic-deferred-creation", "revert-hydrate-wait-for-records", @@ -973,6 +1009,7 @@ "scope-function-children-holes", "scope-nested-deferred-results-without-mutation", "scope-property-read-holes", + "seedless-derived-stores", "select-multiple-async-value", "serialization-decode-entry", "seroval-1-6-8-streams", @@ -981,12 +1018,14 @@ "server-boundary-records", "server-component-context-barrier", "server-component-hydration-installs-from-frames", + "server-component-site-order", "server-dev-build", "server-diagnostics-artifact", "server-diagnostics-channel", "server-error-hook", "server-first-value-lock", "server-fn-undefined-before-string", + "server-function-argument-types-and-nosniff", "server-function-call-observers", "server-function-data-address-split", "server-function-extension-surface", @@ -1014,6 +1053,7 @@ "settle-walk-dev-invariant", "settle-walk-invariant-completion", "settle-walk-requires-initialization", + "settled-document-holes", "sever-reveal-group-at-boundaries", "shallow-compiled-slot-channel", "shallow-slot-alignment-samevaluezero", @@ -1023,6 +1063,7 @@ "shared-cacheable-get-skips-trace", "shared-effect-status-notifier", "shared-read-predicates", + "shell-end-marker-inside-body", "shell-gate-first-apply", "signals-dev-cjs", "signals-disposed-stay-disposed", @@ -1063,12 +1104,15 @@ "snapshot-boundary-assets-serialization", "snapshot-hydration-safety", "snapshot-trailing-holes", + "solid-2-0-agent-primer", "solid-native-frame-protocol-identifiers", "solid-query-gate-packs-compiler", + "solid-ships-diagnostics-json", "source-names-parity", "spec-a33-fallback-hold", "spread-direct-sources", "spread-fewer-nodes", + "spread-ref-factory-ssr", "ssr-boundary-resolve-scope-3414", "ssr-capture-source-locations", "ssr-component-names", @@ -1141,6 +1185,7 @@ "store-treeshakeable-optimism", "store-untracked-born-held", "store-write-floor-narrow", + "stream-abort-cleanup-throw", "stream-demand-gate", "stream-error-drops-settled-children", "strict-untrack-warning", @@ -1178,6 +1223,7 @@ "until-confirmed-derivation", "until-flip-entanglement", "until-live-source-ack", + "until-truth-reads-split", "untracked-async-handler", "untracked-read-after-await", "untracked-verdict-snapshot", @@ -1199,6 +1245,7 @@ "use-head-json-script-escape", "validate-malformed-html-error", "validate-prepare-request-return", + "verdict-memo-under-held-memo-u10", "verdict-mount-first-pass-mainline", "verdict-pull-outside-window", "verdict-reader-first-observer-holds-the-flight", diff --git a/examples/board/CHANGELOG.md b/examples/board/CHANGELOG.md index 9d4dcb614a..5020055d2a 100644 --- a/examples/board/CHANGELOG.md +++ b/examples/board/CHANGELOG.md @@ -1,5 +1,43 @@ # board-example +## 0.0.1-rc.1 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - solid-js@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 + ## 0.0.1-rc.0 ### Patch Changes diff --git a/examples/board/package.json b/examples/board/package.json index 3cce585e76..917f40d897 100644 --- a/examples/board/package.json +++ b/examples/board/package.json @@ -1,7 +1,7 @@ { "name": "board-example", "description": "A shared board over one live data source: lists of cards that several tabs drag at once, read into an optimistic store, with every write acknowledged on the stream", - "version": "0.0.1-rc.0", + "version": "0.0.1-rc.1", "private": true, "author": "Ryan Carniato", "license": "MIT", diff --git a/examples/server-dbmon/CHANGELOG.md b/examples/server-dbmon/CHANGELOG.md new file mode 100644 index 0000000000..27ed6391c4 --- /dev/null +++ b/examples/server-dbmon/CHANGELOG.md @@ -0,0 +1,39 @@ +# server-dbmon-example + +## 0.0.1-rc.0 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - solid-js@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 diff --git a/examples/server-dbmon/package.json b/examples/server-dbmon/package.json index ca15fe37b9..01f1a4dae4 100644 --- a/examples/server-dbmon/package.json +++ b/examples/server-dbmon/package.json @@ -1,7 +1,7 @@ { "name": "server-dbmon-example", "description": "DBMon as a live server component: a monitoring dashboard whose data lives on the server, rendered there and streamed to every open tab as it changes", - "version": "0.0.0", + "version": "0.0.1-rc.0", "private": true, "author": "Ryan Carniato", "license": "MIT", diff --git a/examples/todos-server/CHANGELOG.md b/examples/todos-server/CHANGELOG.md index f7eee87adb..1adaeff31e 100644 --- a/examples/todos-server/CHANGELOG.md +++ b/examples/todos-server/CHANGELOG.md @@ -1,5 +1,43 @@ # todos-server-example +## 0.0.1-rc.4 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - solid-js@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 + ## 0.0.1-rc.3 ### Patch Changes diff --git a/examples/todos-server/package.json b/examples/todos-server/package.json index 52855e9e08..ebf3cbfa20 100644 --- a/examples/todos-server/package.json +++ b/examples/todos-server/package.json @@ -1,7 +1,7 @@ { "name": "todos-server-example", "description": "TodoMVC as a Solid Server Component — the list is server markup whose every control is a form that works without JavaScript; with it, binding slots add the optimism a form cannot express (toggle-all, clear-completed, the live count) and typed errors come back through useSubmissions", - "version": "0.0.1-rc.3", + "version": "0.0.1-rc.4", "private": true, "author": "Ryan Carniato", "license": "MIT", diff --git a/packages/babel-plugin/CHANGELOG.md b/packages/babel-plugin/CHANGELOG.md index 25c8b53def..a5630e508e 100644 --- a/packages/babel-plugin/CHANGELOG.md +++ b/packages/babel-plugin/CHANGELOG.md @@ -1,5 +1,11 @@ # @solidjs/babel-plugin +## 2.0.0-rc.16 + +### Patch Changes + +- d0ba31c: SSR evaluates a `ref` expression beside a spread, as it already does without one, so a ref factory's owned setup (`ref={tooltip()}`) runs on the server too and the hydration ids after it line up. The ref itself is still never called on the server (#4081). Under `serverComponents` the same holds outside a server component's render, where a ref expression was never evaluated on either path; inside one the claim evaluates it, once. + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/babel-plugin/package.json b/packages/babel-plugin/package.json index 167eedecb3..65af0a4d88 100644 --- a/packages/babel-plugin/package.json +++ b/packages/babel-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/babel-plugin", "description": "Babel compiler plugin for Solid templates", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "repository": { diff --git a/packages/compiler/CHANGELOG.md b/packages/compiler/CHANGELOG.md index e68cb497e0..6c363c4c55 100644 --- a/packages/compiler/CHANGELOG.md +++ b/packages/compiler/CHANGELOG.md @@ -1,5 +1,11 @@ # @solidjs/compiler +## 2.0.0-rc.16 + +### Patch Changes + +- d0ba31c: SSR evaluates a `ref` expression beside a spread, as it already does without one, so a ref factory's owned setup (`ref={tooltip()}`) runs on the server too and the hydration ids after it line up. The ref itself is still never called on the server (#4081). Under `serverComponents` the same holds outside a server component's render, where a ref expression was never evaluated on either path; inside one the claim evaluates it, once. + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/compiler/npm/darwin-arm64/package.json b/packages/compiler/npm/darwin-arm64/package.json index f0a9c96dcf..81a2548cd9 100644 --- a/packages/compiler/npm/darwin-arm64/package.json +++ b/packages/compiler/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-darwin-arm64", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "cpu": [ "arm64" ], diff --git a/packages/compiler/npm/darwin-x64/package.json b/packages/compiler/npm/darwin-x64/package.json index e98b6341e0..528f4d08cc 100644 --- a/packages/compiler/npm/darwin-x64/package.json +++ b/packages/compiler/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-darwin-x64", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "cpu": [ "x64" ], diff --git a/packages/compiler/npm/linux-arm64-gnu/package.json b/packages/compiler/npm/linux-arm64-gnu/package.json index 4d63958f93..3c24d6127e 100644 --- a/packages/compiler/npm/linux-arm64-gnu/package.json +++ b/packages/compiler/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-linux-arm64-gnu", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "cpu": [ "arm64" ], diff --git a/packages/compiler/npm/linux-x64-gnu/package.json b/packages/compiler/npm/linux-x64-gnu/package.json index b54d372515..ad8fd964ea 100644 --- a/packages/compiler/npm/linux-x64-gnu/package.json +++ b/packages/compiler/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-linux-x64-gnu", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "cpu": [ "x64" ], diff --git a/packages/compiler/npm/wasm32-wasi/package.json b/packages/compiler/npm/wasm32-wasi/package.json index 2d39756c5b..ad96f632dc 100644 --- a/packages/compiler/npm/wasm32-wasi/package.json +++ b/packages/compiler/npm/wasm32-wasi/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-wasm32-wasi", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "main": "compiler.wasi.cjs", "files": [ "compiler.wasm32-wasi.wasm", diff --git a/packages/compiler/npm/win32-x64-msvc/package.json b/packages/compiler/npm/win32-x64-msvc/package.json index acc04e455b..ee55fe37cc 100644 --- a/packages/compiler/npm/win32-x64-msvc/package.json +++ b/packages/compiler/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/compiler-win32-x64-msvc", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "cpu": [ "x64" ], diff --git a/packages/compiler/package.json b/packages/compiler/package.json index bef9cda311..d80200a94e 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/compiler", "description": "Solid's native Oxc JSX compiler", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "repository": { @@ -62,11 +62,11 @@ "emnapi": "^1.11.3" }, "optionalDependencies": { - "@solidjs/compiler-darwin-x64": "2.0.0-rc.15", - "@solidjs/compiler-darwin-arm64": "2.0.0-rc.15", - "@solidjs/compiler-linux-x64-gnu": "2.0.0-rc.15", - "@solidjs/compiler-linux-arm64-gnu": "2.0.0-rc.15", - "@solidjs/compiler-win32-x64-msvc": "2.0.0-rc.15", - "@solidjs/compiler-wasm32-wasi": "2.0.0-rc.15" + "@solidjs/compiler-darwin-x64": "2.0.0-rc.16", + "@solidjs/compiler-darwin-arm64": "2.0.0-rc.16", + "@solidjs/compiler-linux-x64-gnu": "2.0.0-rc.16", + "@solidjs/compiler-linux-arm64-gnu": "2.0.0-rc.16", + "@solidjs/compiler-win32-x64-msvc": "2.0.0-rc.16", + "@solidjs/compiler-wasm32-wasi": "2.0.0-rc.16" } } diff --git a/packages/diagnostics/CHANGELOG.md b/packages/diagnostics/CHANGELOG.md index 7d14621ec8..4e4a70478a 100644 --- a/packages/diagnostics/CHANGELOG.md +++ b/packages/diagnostics/CHANGELOG.md @@ -1,5 +1,59 @@ # @solidjs/diagnostics +## 2.0.0-rc.16 + +### Patch Changes + +- 3d8a8a9: Diagnostics protocol: removed the `holds` and `feedback` entries from `DiagnosticsMethods` (and so from `DiagnosticsMethod`, `DiagnosticsRequest`, `DiagnosticsResponse`) in `@solidjs/diagnostics/protocol`. The `/__solid/diagnostics` dev-server endpoint never served them; it answers `begin`, `end`, `active`, `whyDidRun` and `costs`, and the holds and feedback tables arrive in the `end` payload (`attribution.holds`, `attribution.feedback`). The in-page bridge's `holds()`/`feedback()` queries are unchanged. The agent-loops skill's endpoint example no longer lists a `feedback` call. +- 3d8a8a9: Ship the Solid 2.0 primer for coding agents as the `solid-2.0` skill, emit `CHEATSHEET.md` as the `solid-2.0-cheatsheet` skill on build, give every shipped skill the `name`/`description` frontmatter the Agent Skills format requires, and add the `tanstack-intent` keyword so skill registries discover them in `node_modules`. +- Updated dependencies [3d8a8a9] +- Updated dependencies [a7fe050] +- Updated dependencies [52008d9] +- Updated dependencies [0b6765f] +- Updated dependencies [b8617ec] +- Updated dependencies [3643c5e] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [61c4436] +- Updated dependencies [a39acdd] +- Updated dependencies [0bda987] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [c12c420] +- Updated dependencies [4bc7969] +- Updated dependencies [d3cddff] +- Updated dependencies [c2513e3] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] +- Updated dependencies [3fc5551] +- Updated dependencies [42c2568] + - solid-js@2.0.0-rc.16 + - @solidjs/signals@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/diagnostics/package.json b/packages/diagnostics/package.json index 1b82a9bffd..3190eb27d4 100644 --- a/packages/diagnostics/package.json +++ b/packages/diagnostics/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/diagnostics", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "description": "Agent-consumable diagnostics harness for Solid: capture the dev-mode diagnostic and attribution channels as structured artifacts, with assertion helpers for tests and agent loops.", "author": "Ryan Carniato", "license": "MIT", @@ -52,11 +52,11 @@ "test:watch": "vitest watch tests" }, "dependencies": { - "@solidjs/signals": "^2.0.0-rc.15" + "@solidjs/signals": "^2.0.0-rc.16" }, "peerDependencies": { - "@solidjs/web": "^2.0.0-rc.15", - "solid-js": "^2.0.0-rc.15", + "@solidjs/web": "^2.0.0-rc.16", + "solid-js": "^2.0.0-rc.16", "vitest": ">=2.0.0" }, "peerDependenciesMeta": { diff --git a/packages/element/CHANGELOG.md b/packages/element/CHANGELOG.md index 32e4d0c311..679c49449d 100644 --- a/packages/element/CHANGELOG.md +++ b/packages/element/CHANGELOG.md @@ -1,5 +1,43 @@ # solid-element +## 2.0.0-rc.16 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - solid-js@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/element/package.json b/packages/element/package.json index 2128f7608a..e047222aa8 100644 --- a/packages/element/package.json +++ b/packages/element/package.json @@ -3,7 +3,7 @@ "description": "Webcomponents wrapper for Solid", "author": "Ryan Carniato", "license": "MIT", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "homepage": "https://github.com/solidjs/solid/blob/next/packages/element#readme", "repository": { "type": "git", @@ -30,8 +30,8 @@ "component-register": "^0.8.7" }, "peerDependencies": { - "solid-js": "^2.0.0-rc.15", - "@solidjs/web": "^2.0.0-rc.15" + "solid-js": "^2.0.0-rc.16", + "@solidjs/web": "^2.0.0-rc.16" }, "devDependencies": { "solid-js": "workspace:*", diff --git a/packages/h/CHANGELOG.md b/packages/h/CHANGELOG.md index 30b7b695b6..0b731a4569 100644 --- a/packages/h/CHANGELOG.md +++ b/packages/h/CHANGELOG.md @@ -1,5 +1,36 @@ # @solidjs/h +## 2.0.0-rc.16 + +### Patch Changes + +- 86cf504: `data-*` attributes type-check in props objects (`ComponentProps<"div">`, `JSX.HTMLAttributes`), not only in JSX: a template-literal index signature on `ElementAttributes` (#4082). +- Updated dependencies [3d8a8a9] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [0a49dd8] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - @solidjs/web@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/h/package.json b/packages/h/package.json index 5be980f662..a412b9fdfd 100644 --- a/packages/h/package.json +++ b/packages/h/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/h", "description": "Hyperscript / h() factory for Solid — write components without compiled JSX.", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "homepage": "https://solidjs.com", @@ -58,7 +58,7 @@ "test": "vitest run" }, "peerDependencies": { - "@solidjs/web": "^2.0.0-rc.15" + "@solidjs/web": "^2.0.0-rc.16" }, "devDependencies": { "@solidjs/web": "workspace:*", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index 261584cfdb..58fcad6be8 100644 --- a/packages/html/CHANGELOG.md +++ b/packages/html/CHANGELOG.md @@ -1,5 +1,35 @@ # @solidjs/html +## 2.0.0-rc.16 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [0a49dd8] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [8e2590e] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [8d4a285] + - @solidjs/web@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/html/package.json b/packages/html/package.json index daae0334c4..64b4916062 100644 --- a/packages/html/package.json +++ b/packages/html/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/html", "description": "Tagged-template-literal templating for Solid — write components with no build step.", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "homepage": "https://solidjs.com", @@ -42,7 +42,7 @@ "test": "vitest run" }, "peerDependencies": { - "@solidjs/web": "^2.0.0-rc.15" + "@solidjs/web": "^2.0.0-rc.16" }, "devDependencies": { "@solidjs/web": "workspace:*", diff --git a/packages/signals/CHANGELOG.md b/packages/signals/CHANGELOG.md index 009b10ef46..46ebb6e5df 100644 --- a/packages/signals/CHANGELOG.md +++ b/packages/signals/CHANGELOG.md @@ -1,5 +1,34 @@ # @solidjs/signals +## 2.0.0-rc.16 + +### Patch Changes + +- 3d8a8a9: Point JSDoc `@description` links at the 2.0 reference docs (v2.solidjs.com), document `isPending`, point the console footer, diagnostics guide and cheatsheet links at the `next` branch, and replace the stale `onMount` advice in the server-side client-only API error. +- a7fe050: A Loading boundary mounted by a pass that joined a hold appears at that hold's commit, its fallback never shown (D-13, U-3). Before, the boundary's content was caught as a fresh mount and the fallback published at once (or, for a `` that opens when a flight lands, flashed at the landing before the content). A first pass born into the flush's hold is now the hold's, not the boundary's: the content reads with the hold and the whole mount appears at its commit. A mount made by a verdict reader (`latest` in a ``) is still mainline and shows the fallback while the hold is up. +- 52008d9: An effect or memo that catches the `NotReadyError` from reading an async derived store (`createStore(async fn, seed)`, `createProjection`) now re-runs when the store's flight lands, as it does for an async memo (#4070). +- 0b6765f: A signal write from an `onCleanup` that a transition's landing runs no longer leaves the landed transaction as the next flush's: later transitions commit again instead of parking forever (#4089). +- b8617ec: `createDeferred(fn, options?)`: an async memo that may lag, but never leads. Before its first answer it is an ordinary async memo (readers suspend to ``, or `loadingValue` shows). After it, a refetch holds nothing: readers keep the previous answer until the new one lands, the rest of the screen moves on, and `isPending` reports the refetch on the node and on everything derived from it, store keys included. A refetch that read a held value lands with that hold. A rejection errors like any memo. `refresh(d)` is a quiet re-ask, and `await refresh(d)` and `until` wait for the landing. It is `createMemo` on the server and hydrates like one. + + The rules: F-1 and F-2 are amended for declared lag, and D-40 / S-41 are new. The `affects()` mark core moved to its own module (`affects-marks.ts`), which `createDeferred` shares. A mark on the source of a derived store now covers that store's keys. + +- 3643c5e: A `createRoot` dispose function no longer keeps the root's `init` function (and everything it closes over) alive while it is held (#4095). +- 61c4436: An async memo created inside a fresh Loading boundary over a held value no longer lands its first answer before the hold commits (D-12, U-1). The boundary still catches it and shows its fallback, and the hold still does not wait for it: its answer is staged with the hold and appears no earlier than the hold's commit. A boundary re-armed by `on` keeps owning what it collects outright. +- a39acdd: `GRAPH_GROWTH` no longer reports long-lived state that the page just left also read. What outlived a navigation was the set of nodes reachable as that one navigation opened, and the walk reaches a module-level source (solid-refresh's per-component registry signal in dev, a global store) only through a page that reads it. So arriving at a route from pages sharing more and more of its components, or of its global state, read as growth with nothing leaked. The nodes met as navigations open now go into one set kept for the session, so such a source counts the same at every settle once met, and only what keeps accumulating climbs. Leaked roots, ownerless effects and per-visit subscriptions still report as before. Fixes #4101. +- 0bda987: An error is an answer: it ends the wait like a value, and it shows when a value would (D-41). A rejection or throw on a node a transaction holds is staged and published with the frame that carries it: until then the screen, an untracked read, `createEffect`'s error arm and `` keep the previous frame, `isPending` is `true`, `latest` throws the proposed error, and `resolve`/`until`/`refresh` reject at the landing. A held recovery keeps the shown error until its own commit, and a recovery equal to the last good value now reaches effects, held or not (it was swallowed by the equality gate). Replaces the separate staged-error publish path. From #3886's audit (GabbeV). +- ccd9948: Smaller floor bundles: the optional engines (lanes, verdicts, boundaries, stores, affects, external sources) install their scheduler hooks as module variables, so an app that never loads them no longer retains their paths in `recompute`, `read` and the settle step; client-only `render` no longer retains hydration text adoption, and the delegated dispatcher drops dead guards. The JSX hello world goes from 10.35 KB to 9.75 KB brotli. +- 347f242: New dev check `SSR_LIVE_HOLE_LATCHED` (#4023): a live markup hole that shipped its markers and then stopped updating, because re-running it would create reactive scopes (most often a compiler condition memo for `{m.usage && …}`), is now named on the console, located by its component, instead of going quiet. Behavior is unchanged; hoisting the property into a local keeps the hole live. +- c12c420: An outer `on`-reset Loading boundary no longer waits for a flight its nested `on`-reset boundary catches (D-14, U-4). A pending reader forwarded through both boundaries while neither was collecting was recorded in both, so when one tick re-armed both the outer kept its fallback until the inner's flight landed. A reader a nested collecting boundary holds is now that boundary's alone: the outer's content shows beside the inner's fallback as soon as the outer's own work lands. +- 4bc7969: fix(signals): a later mainline store setter that does not write a held key publishes on the mainline tick — a setter's written keys are its own set, so its notify visits only the keys it wrote (D-8, U-8, #3743) +- d3cddff: Attribution: `createProjection` records the owner in scope as `createStore` does, so a projection's property nodes carry an owner path (#4035). The `GRAPH_GROWTH` message and its skill section now name a cache that never evicts as a source of the same growth. +- c2513e3: A Loading boundary re-armed by `on` owns the content under it that reads a hold another change made (D-14, D-16, U-9). Before, that content joined the hold, so no fallback showed and the boundary reported pending, and a held tree under a re-armed boundary could redraw forever. Now the fallback shows with the re-arming change and the content reveals at the hold's commit, which no longer waits for it. A re-arm whose own change joins that hold still shows no fallback (the frame waits on the same data), and `LOADING_ON_OUTSIDE_HOLD` is reported only for a flight the change itself started. +- dfb31ed: Derived stores no longer need a seed (#3194). `createStore(fn)`, `createProjection(fn)` and `createOptimisticStore(fn)` accept a derive that takes no draft and answers a complete value — sync, a promise, or an async iterable whose every yield is a complete snapshot. The root is a plain object (an array keeps its `[]` seed); pass `undefined` for the seed to reach the options, e.g. `createStore(fetchUser, undefined, { key: "email" })`. Until the first answer lands the store is unreadable, as with any seed (A25); `seedLoadingValue` needs a seed and is not offered on the seedless form. + + With the seedless form available, a seed is a complete `T` again (#3258's requirement, reverted then because async stores that needed the options slot had to invent one). A `{}` seed on a return-form derive is now a type error: drop it. A mutating derive that builds its object from an empty seed needs `{} as T`. + +- 3fc5551: `until()` and `refresh()` no longer retain the optimistic lane engine in apps that don't use optimism (−4.8 KB minified). An `until()` predicate reading a memo derived from an unconfirmed optimistic guess now waits for the guess to be confirmed or corrected, instead of seeing the value from before the guess. +- 42c2568: A memo that reads a verdict memo (`isPending`/`latest`) shows the verdict now, beside a held value it also reads (F-6, U-10, #4050). Before, it re-entered the hold with that value and the verdict waited for the landing: a Provider's children memo over a router shell `[, outlet]` never showed delayed pending feedback during a held navigation. It now behaves as the same probe read inline, or a render effect reading both, already did. + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/signals/package.json b/packages/signals/package.json index 7d0e8b779e..8ba6214a43 100644 --- a/packages/signals/package.json +++ b/packages/signals/package.json @@ -1,6 +1,6 @@ { "name": "@solidjs/signals", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "description": "Solid's reactive primitives: signals, memos, effects, stores, and async-aware computations.", "author": "Ryan Carniato", "license": "MIT", diff --git a/packages/solid/CHANGELOG.md b/packages/solid/CHANGELOG.md index b18c706051..05694c8b44 100644 --- a/packages/solid/CHANGELOG.md +++ b/packages/solid/CHANGELOG.md @@ -1,5 +1,46 @@ # solid-js +## 2.0.0-rc.16 + +### Patch Changes + +- 3d8a8a9: Point JSDoc `@description` links at the 2.0 reference docs (v2.solidjs.com), document `isPending`, point the console footer, diagnostics guide and cheatsheet links at the `next` branch, and replace the stale `onMount` advice in the server-side client-only API error. +- b8617ec: `createDeferred(fn, options?)`: an async memo that may lag, but never leads. Before its first answer it is an ordinary async memo (readers suspend to ``, or `loadingValue` shows). After it, a refetch holds nothing: readers keep the previous answer until the new one lands, the rest of the screen moves on, and `isPending` reports the refetch on the node and on everything derived from it, store keys included. A refetch that read a held value lands with that hold. A rejection errors like any memo. `refresh(d)` is a quiet re-ask, and `await refresh(d)` and `until` wait for the landing. It is `createMemo` on the server and hydrates like one. + + The rules: F-1 and F-2 are amended for declared lag, and D-40 / S-41 are new. The `affects()` mark core moved to its own module (`affects-marks.ts`), which `createDeferred` shares. A mark on the source of a derived store now covers that store's keys. + +- 467ac97: Hydration: a streamed `` fragment that is the first to carry a `lazy()` module's assets now loads them before its resume claims the revealed content, instead of rendering nothing while they load and clearing the parent's revealed nodes (#4087). +- 7c36f2b: Server `For` in a live hole: a row that read an async memo or projection besides its item, or whose item was edited in place, now renders again on each sweep instead of reusing stale markup. +- 0a49dd8: Live holes: on a live response, a sweep that changed some rows of a `` sends just those rows (replace, append, truncate by index), and the frames client morphs only their ranges. A client whose range doesn't show what the rows were taken against resumes its live connection, which sends the hole whole. +- 51d005a: Server `` keeps its rows across live-hole sweeps (#4056). A markup hole that re-emits (a live server component, a standing source) re-evaluated every row of a list on every write. During a sweep, a row whose item at the same index is unchanged (the same reference, or a shallow-equal object, as a live source's fresh snapshot usually is) now reuses the row it rendered on the previous sweep. Plain SSR and a server component's first render are unchanged. A row is a function of its item: an item mutated in place keeps its old row, and a row that reads outside data keeps the value it rendered with. +- eb4e019: Hydration no longer hydrates a streamed `` fallback when the fragment was already revealed but its `_fr` record hasn't settled yet (an async entry running between the two scripts). The boundary renders nothing and adopts the revealed content once the record settles (#4074). +- dfb31ed: Derived stores no longer need a seed (#3194). `createStore(fn)`, `createProjection(fn)` and `createOptimisticStore(fn)` accept a derive that takes no draft and answers a complete value — sync, a promise, or an async iterable whose every yield is a complete snapshot. The root is a plain object (an array keeps its `[]` seed); pass `undefined` for the seed to reach the options, e.g. `createStore(fetchUser, undefined, { key: "email" })`. Until the first answer lands the store is unreadable, as with any seed (A25); `seedLoadingValue` needs a seed and is not offered on the seedless form. + + With the seedless form available, a seed is a complete `T` again (#3258's requirement, reverted then because async stores that needed the options slot had to invent one). A `{}` seed on a return-form derive is now a type error: drop it. A mutating derive that builds its object from an empty seed needs `{} as T`. + +- a61c929: A server component in a document marks its live holes only once the render has served something a later commit can replace: an async iterable it pumps, or a loading value or seed shown ahead of its landing. Until then a hole that resolves synchronously ships without `lh` markers, `data-lha` addresses or a ledger binding, because no channel op can ever address it. On a request/response page that is every hole: the 1,406-comment hackernews thread drops from 948 KB to 787 KB and renders in about half the server time. +- 3d8a8a9: Ship the Solid 2.0 primer for coding agents as the `solid-2.0` skill, emit `CHEATSHEET.md` as the `solid-2.0-cheatsheet` skill on build, give every shipped skill the `name`/`description` frontmatter the Agent Skills format requires, and add the `tanstack-intent` keyword so skill registries discover them in `node_modules`. +- 3d8a8a9: `solid-js` now ships `diagnostics.json` next to `CHEATSHEET.md`: the machine-readable catalog of every dev diagnostic code — `code`, `kind`, `severity`, `category`, `trigger`, `repair` (the first sentence of the code's section in the `reactivity-diagnostics` skill) and `guideUrl` (that section on GitHub). It is generated from the `DiagnosticCode` union, the RFC's quick-reference table and the skill by `pnpm diagnostics:json`, and a test fails when any of the three (or the committed file) names a different set of codes. The quick-reference table gains its missing `PRIMITIVE_IN_EFFECT_CALLBACK` row. +- Updated dependencies [3d8a8a9] +- Updated dependencies [a7fe050] +- Updated dependencies [52008d9] +- Updated dependencies [0b6765f] +- Updated dependencies [b8617ec] +- Updated dependencies [3643c5e] +- Updated dependencies [61c4436] +- Updated dependencies [a39acdd] +- Updated dependencies [0bda987] +- Updated dependencies [ccd9948] +- Updated dependencies [347f242] +- Updated dependencies [c12c420] +- Updated dependencies [4bc7969] +- Updated dependencies [d3cddff] +- Updated dependencies [c2513e3] +- Updated dependencies [dfb31ed] +- Updated dependencies [3fc5551] +- Updated dependencies [42c2568] + - @solidjs/signals@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/solid/package.json b/packages/solid/package.json index 54e3bf9334..ce96295d8d 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,7 +1,7 @@ { "name": "solid-js", "description": "Reactive JavaScript library for building user interfaces. Compiles JSX to real DOM with fine-grained signal-based updates — no virtual DOM.", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "homepage": "https://solidjs.com", @@ -134,7 +134,7 @@ "tanstack-intent" ], "dependencies": { - "@solidjs/signals": "^2.0.0-rc.15", + "@solidjs/signals": "^2.0.0-rc.16", "csstype": "^3.1.0", "seroval": "1.6.7", "seroval-plugins": "1.6.7" diff --git a/packages/test-integration/CHANGELOG.md b/packages/test-integration/CHANGELOG.md index e35176cf95..68a67d7527 100644 --- a/packages/test-integration/CHANGELOG.md +++ b/packages/test-integration/CHANGELOG.md @@ -1,5 +1,62 @@ # test-integration +## 2.0.0-rc.16 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [a7fe050] +- Updated dependencies [52008d9] +- Updated dependencies [0b6765f] +- Updated dependencies [b8617ec] +- Updated dependencies [3643c5e] +- Updated dependencies [86cf504] +- Updated dependencies [f048691] +- Updated dependencies [96b615d] +- Updated dependencies [467ac97] +- Updated dependencies [a0991b3] +- Updated dependencies [8092282] +- Updated dependencies [8163bc3] +- Updated dependencies [10b3f55] +- Updated dependencies [1f3b5b4] +- Updated dependencies [61c4436] +- Updated dependencies [a39acdd] +- Updated dependencies [0bda987] +- Updated dependencies [ccd9948] +- Updated dependencies [0e0c043] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [347f242] +- Updated dependencies [b972757] +- Updated dependencies [8e2590e] +- Updated dependencies [8fbadfd] +- Updated dependencies [e1bf2af] +- Updated dependencies [c12c420] +- Updated dependencies [4bc7969] +- Updated dependencies [d3cddff] +- Updated dependencies [c2513e3] +- Updated dependencies [8e2590e] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [8bd7a5b] +- Updated dependencies [3e94215] +- Updated dependencies [a61c929] +- Updated dependencies [36039e2] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] +- Updated dependencies [d0ba31c] +- Updated dependencies [8d4a285] +- Updated dependencies [3fc5551] +- Updated dependencies [42c2568] + - solid-js@2.0.0-rc.16 + - @solidjs/signals@2.0.0-rc.16 + - @solidjs/web@2.0.0-rc.16 + - @solidjs/h@2.0.0-rc.16 + - @solidjs/babel-plugin@2.0.0-rc.16 + - @solidjs/html@2.0.0-rc.16 + - @solidjs/universal@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/test-integration/package.json b/packages/test-integration/package.json index aa2d9b972e..fc5a441676 100644 --- a/packages/test-integration/package.json +++ b/packages/test-integration/package.json @@ -21,5 +21,5 @@ "gitly": "^2.2.1", "shelljs": "^0.8.5" }, - "version": "2.0.0-rc.15" + "version": "2.0.0-rc.16" } diff --git a/packages/universal/CHANGELOG.md b/packages/universal/CHANGELOG.md index da4e93678e..1cefc8c25c 100644 --- a/packages/universal/CHANGELOG.md +++ b/packages/universal/CHANGELOG.md @@ -1,5 +1,22 @@ # @solidjs/universal +## 2.0.0-rc.16 + +### Patch Changes + +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [467ac97] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [a61c929] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] + - solid-js@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/universal/package.json b/packages/universal/package.json index f552924330..b260c782d9 100644 --- a/packages/universal/package.json +++ b/packages/universal/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/universal", "description": "Solid's universal runtime for creating custom renderers", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "homepage": "https://solidjs.com", @@ -51,7 +51,7 @@ "test": "vitest run" }, "peerDependencies": { - "solid-js": "^2.0.0-rc.15" + "solid-js": "^2.0.0-rc.16" }, "devDependencies": { "solid-js": "workspace:*" diff --git a/packages/web/CHANGELOG.md b/packages/web/CHANGELOG.md index 5e20f3f2b7..aa8f6c5e7d 100644 --- a/packages/web/CHANGELOG.md +++ b/packages/web/CHANGELOG.md @@ -1,5 +1,49 @@ # @solidjs/web +## 2.0.0-rc.16 + +### Patch Changes + +- 3d8a8a9: Point JSDoc `@description` links at the 2.0 reference docs (v2.solidjs.com), document `isPending`, point the console footer, diagnostics guide and cheatsheet links at the `next` branch, and replace the stale `onMount` advice in the server-side client-only API error. +- 86cf504: `data-*` attributes type-check in props objects (`ComponentProps<"div">`, `JSX.HTMLAttributes`), not only in JSX: a template-literal index signature on `ElementAttributes` (#4082). +- f048691: A server component's hole that waits on async data keeps its handler-position markers (`_s:on:click`) when a boundary outside the component resumes it. The retry renders under the component's claims arming instead of the resuming boundary's context, so the markup the client adopts carries the marker. Before, the chat example's Copy buttons shipped without it and were only bound after the end-of-response sweep re-sent the whole message list. +- 96b615d: Remove the internal `scriptNonce`/`styleNonce` exports from the server build. They stayed exported after #4016 only because `@solidjs/vite-plugin` ≤ 3.0.0-next.49 imported them. 3.0.0-next.50 projects the nonce itself (solidjs/solid-vite-plugin#409). Apps must use `@solidjs/vite-plugin` 3.0.0-next.50 or later with this release. +- a0991b3: perf(frames): while the bind tier is announced or loading, the slot walk visits comments only and holds the frame, so `_s:*` attributes are scanned once, after the tier installs, instead of twice +- 8092282: fix(frames): a link inside nested slot regions is claimed once per adoption instead of once per enclosing region, and a streaming document whose server components mint no tier writes an empty `sc:tiers` record so the client skips its per-element slot-marker scan +- 8163bc3: Send data server functions called during hydration on a page with server components (#4033). The frames client holds a server-function call while the document may still deliver a boundary for it, and a data function never has one. A wait created under a hydration trace cached the trace's never-settling `Promise` stub, so every later call for that function hung; and a call made after the page's last reveal (a hydration-end recompute) was released only by a reveal that never came. Waits made under a trace are no longer kept, and outstanding waits are released when hydration ends as well as on reveals. +- 10b3f55: Frames client: a live stream's writes no longer re-walk the whole frame. After every write, the slot sync used to walk all of the frame's content and re-parse every binding marker, and each live-hole apply searched the frame for its marker. Both costs grew with everything the frame showed, which was most of the per-write client time once a chat thread had history. Now only a root morph, a reveal, or an empty write ("re-walk what you hold") walks the whole frame. Any other write reuses the last walk's result and walks only the ranges its live holes morphed. That reuse runs in the lazy bind tier; without the tier, the walk sees only comments. Live-hole markers are cached between applies. When reuse can't be exact (a reveal whose content landed after its flush, an attr patch on a consumer, a hole whose parent element is a consumer), the full walk runs as before. +- 1f3b5b4: fix(frames): a frame rendered off the live address marks only the holes that can change within its response (the document face's gate), so synchronous holes ship without `lh` markers, `data-lha` addresses or hole digests; the live address keeps every marker for its reconnect have-list +- ccd9948: Smaller floor bundles: the optional engines (lanes, verdicts, boundaries, stores, affects, external sources) install their scheduler hooks as module variables, so an app that never loads them no longer retains their paths in `recompute`, `read` and the settle step; client-only `render` no longer retains hydration text adoption, and the delegated dispatcher drops dead guards. The JSX hello world goes from 10.35 KB to 9.75 KB brotli. +- 0e0c043: Write one `data-lha` address on an element whose attribute was still pending inside a `` in a live server component (#4032). When the in-tag hole escalated, the attribute capture was dropped but the address it had spliced into the tag stayed, and the boundary's resume minted a second one in front of it. The stale address rode every later attr op for the element, so the first op moved the element off its bound address and every op after it was dropped. The address now goes with the dropped capture. +- 0a49dd8: Live holes: on a live response, a sweep that changed some rows of a `` sends just those rows (replace, append, truncate by index), and the frames client morphs only their ranges. A client whose range doesn't show what the rows were taken against resumes its live connection, which sends the hole whole. +- 347f242: New dev check `SSR_LIVE_HOLE_LATCHED` (#4023): a live markup hole that shipped its markers and then stopped updating, because re-running it would create reactive scopes (most often a compiler condition memo for `{m.usage && …}`), is now named on the console, located by its component, instead of going quiet. Behavior is unchanged; hoisting the property into a local keeps the hole live. +- b972757: Live holes keep updating when their markup creates reactive scopes (a nested ``, a compiler condition memo such as `{m.usage && …}`, a component). Each re-render runs in a throwaway scope disposed once its markup is out; only a scope still waiting on async work closes the hole (#4023). +- 8e2590e: Hydrating a `` whose `lazy()` module lands after hydration starts no longer moves its server-rendered nodes when the boundary has a sibling in the same fragment (#4049). A sibling before the boundary used to swap the boundary's static and lazy children (A/C/B instead of A/B/C), and a sibling after it detached and re-attached the boundary's content, restarting CSS animations and blurring a focused input. The late claim now leaves server nodes in place when they already sit in the region, in order, around the nodes the insert was tracking. +- 8fbadfd: Frames morph: when a text hole empties, the reconcile drops the stale text node instead of relocating the next element in front of it, so the elements after an emptied text hole stay put instead of being re-inserted. +- e1bf2af: Frames morph skips an identical subtree with one native `isEqualNode` compare instead of walking it. +- 8e2590e: `respond(value, init)` accepts every value a plain return does (#4060). Its passthrough JSON body — read only by consumers without the client runtime — is now encoded when read instead of when the envelope is built, so a `bigint` no longer throws inside `respond()` and fails both the direct call and the HTTP call. Unscripted HTTP callers get the carried JSON body only when JSON carries the value faithfully; otherwise the value is encoded the same way as a plain return. +- 8bd7a5b: Bind each server-component site to its own frame when the server minted the sites in a different order than the client mounts them (#4042). Document adoption took sites of one server function by ordinal (`id`, `id~2`, …), so a site behind async setup, rendered after its neighbours on the server but mounted first on the client, adopted a neighbour's element, and its first update landed in the wrong frame. A document frame for a call with arguments now carries the call's argument hash (`data-fa`), and a mount takes the unclaimed site showing its own arguments, falling back to the first unclaimed site when none does. Argless calls render byte-identical markup. +- 3e94215: Server functions: arguments never decode `Response` or `Request` values. The handler decodes client → server argument payloads with the configured plugin list minus the `Response`/`Request` plugins, so a call carrying one — top level, nested, or inside a promise or stream — is refused with `400` before the function runs. `enableRichArguments()` rejects such a call before sending. Results and hydration keep the full plugin set. + + Server-function responses now default to `X-Content-Type-Options: nosniff`; a value the function sets itself is kept. + +- a61c929: A server component in a document marks its live holes only once the render has served something a later commit can replace: an async iterable it pumps, or a loading value or seed shown ahead of its landing. Until then a hole that resolves synchronously ships without `lh` markers, `data-lha` addresses or a ledger binding, because no channel op can ever address it. On a request/response page that is every hole: the 1,406-comment hackernews thread drops from 948 KB to 787 KB and renders in about half the server time. +- 36039e2: The shell-end marker is spliced in before `` instead of being appended after `` when the shell is a whole document (#4030). Async render mode and a stream with nothing pending now end with `` again; a shell without `` (an embedded render) still gets the marker appended. +- 3d8a8a9: Ship the Solid 2.0 primer for coding agents as the `solid-2.0` skill, emit `CHEATSHEET.md` as the `solid-2.0-cheatsheet` skill on build, give every shipped skill the `name`/`description` frontmatter the Agent Skills format requires, and add the `tanstack-intent` keyword so skill registries discover them in `node_modules`. +- 8d4a285: A cleanup that throws while a stream is torn down no longer crashes the server (#4029). Aborting `renderToStream`'s `signal` disposes the render inside the `abort` listener, where a throw became an uncaught exception; the teardown now reports it through `onError` as a failed render (`handling: "failed"`) and finishes. +- Updated dependencies [3d8a8a9] +- Updated dependencies [b8617ec] +- Updated dependencies [467ac97] +- Updated dependencies [7c36f2b] +- Updated dependencies [0a49dd8] +- Updated dependencies [51d005a] +- Updated dependencies [eb4e019] +- Updated dependencies [dfb31ed] +- Updated dependencies [a61c929] +- Updated dependencies [3d8a8a9] +- Updated dependencies [3d8a8a9] + - solid-js@2.0.0-rc.16 + ## 2.0.0-rc.15 ### Patch Changes diff --git a/packages/web/package.json b/packages/web/package.json index f436449577..8d7aadfe0e 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@solidjs/web", "description": "Solid's web runtime: client rendering, hydration, SSR, and DOM-specific control flow (Portal, Dynamic).", - "version": "2.0.0-rc.15", + "version": "2.0.0-rc.16", "author": "Ryan Carniato", "license": "MIT", "homepage": "https://solidjs.com", @@ -385,7 +385,7 @@ "seroval-plugins": "1.6.7" }, "peerDependencies": { - "solid-js": "^2.0.0-rc.15" + "solid-js": "^2.0.0-rc.16" }, "devDependencies": { "@codspeed/vitest-plugin": "^5.4.0",