Release RC packages (rc) - #3255
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/next
branch
3 times, most recently
from
September 3, 2026 10:37
36a1948 to
2af0b96
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
September 3, 2026 14:40
2af0b96 to
f083977
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
nextis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonnext.Releases
@solidjs/babel-plugin@2.0.0-rc.7
Patch Changes
patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.@solidjs/compiler@2.0.0-rc.7
Patch Changes
patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.@solidjs/diagnostics@2.0.0-rc.7
Patch Changes
@solidjs/element@2.0.0-rc.7
Patch Changes
@solidjs/h@2.0.0-rc.7
Patch Changes
@solidjs/html@2.0.0-rc.7
Patch Changes
@solidjs/signals@2.0.0-rc.7
Patch Changes
patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.solid-js@2.0.0-rc.7
Patch Changes
patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.@solidjs/universal@2.0.0-rc.7
Patch Changes
patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.@solidjs/web@2.0.0-rc.7
Patch Changes
GET()grants to the function identity they were declared about (AGET()grant governs an id, not the function it was granted to #3237). The grant — GET/HEAD dispatch plus the CSRF origin-gate exemption — was keyed by id alone, soregister -> register -> GET(oldReference)handed the NEW function cross-site GET execution on the strength of a declaration the old one signed. The grant now records the declared function, and a singledeclaresRead(id)check governs both dispatch and the 405Allowadvertisement; a stale or unverifiable declaration fails closed (GET refused, POST + origin gate required). A declaration orwithMeta({ method })write that would change an existing grant's binding throws in dev and fails closed in prod, never silently rebinds.bodySizeLimitinto the decoder, and the abort/teardown coupling for abandoned uploads now covers declared-length POSTs too (The body cap is decided by the peer's Content-Length, so every ordinary POST skips it #3236).wrapInvocationoption as entry-only (A per-handlerwrapInvocationnever sees the calls the dispatched body makes #3240). Ruled: entry-only semantics are kept — the option wraps exactly the invocation the request addressed, and nested direct server-function calls made by the dispatched body are not re-wrapped by it; hop-by-hop policy belongs to the configured (ambient) hook, which wraps every direct call. TSDoc only, no runtime behavior change; the boundary is now pinned by a regression test.provideEventOnceseam, so a hook that double-invokes or skips the callback fails loudly during a render instead of silently double-committing a mutation or answeringundefined, while synchronous direct calls keep returning their value synchronously (provideEvent's exactly-once contract is enforced on HTTP dispatch and nowhere else #3246).0,false,"",null) instead of silently dropping them: the flash decode and the no-JS handler now decide structurally (result presence,Responseshape) rather than by truthiness, and dispatch no longer erodes a returnednulltoundefinedon its way to the handler; anundefinedoutcome keeps its current no-cookie behavior pending ruling (A falsy outcome is no outcome: a committed submission reports nothing to the next render #3248)-0off the server-function JSON fast path.JSON.stringify(-0)is"0", so a signed zero admitted byisJSONSaferode the fast path and arrived as+0— a silent sign flip on the exact guard that already refusesNaNand the infinities for the same reason.-0now answers "not JSON-safe" and rides the codec, which spells it exactly, on both legs (argument lists and results).guardedPromiseownership (A rejecting promise in a result graph that fails to encode takes down the Node process #3216); real consumers still observe the rejection unchanged.transformFlightResultResponse via the ownership seam (ownResponse) before stamping the mutation's cookies and accumulated headers onto it, so a Response the integration retains (a memoized shell) never accumulates one caller's session cookies and serves them to the next (The single-flight fold stamps this request's cookies onto a Response the integration still holds #3234, completing commitEventResponse mutates the returned Response in place, so a cached Response accumulates every user's Set-Cookie #3155)extractBodyown the stream it decodes: the body is read where it lies, never from an internal clone. An unread tee branch queues the whole payload in memory for the life of the read and defeats backpressure and cancellation — the same ownership defect fixed for the upload leg inbufferBodyWithin(A client disconnect on a chunked upload rejects out of handleServerFunctionRequest instead of answering a status #3217–The 413 refusal cancels a tee branch, never the upload source #3219).decodeResponsekeeps its documented contract (an integration's response stays readable) by cloning at its own entry — a branch that is then read in full; the client transport decodes the response it owns directly, and the server's argument road reuses its one deliberate clone (kept soevent.requeststays readable) for the empty-body inspection instead of teeing again. This is the clone half of The client transport buffers every response twice and never ends the connection it opened #3244 only; connection teardown on completion is deliberately not included.wrapInvocationvalues (AwrapInvocationoption that is not a hook removes the configured authorization gate #3238). A value other than a function orundefined—null,false, an options bag in the wrong slot — used to fail in the quietest available direction: falsy values silently took per-invocation policy (auth, logging) off the call, truthy non-functions threw a bare "not a function" mid-dispatch. The hook is now validated at the point it is resolved for an invocation, on both roads (HTTP dispatch and direct SSR calls), with an error namingwrapInvocationand the received type;undefinedstays the one spelling of absence.X-Server-Function-Formattag before the decode switch runs. The content-type sniffing branches (there for untagged form posts) matched regardless of the tag, so a body tagged with a format this build has no case for — version skew from a newer peer, or a duplicated header thatHeaders.getjoins into one unknown value — was silently reinterpreted as a form and the function ran on an argument it was never sent. Such bodies now answer 400 before dispatch, with a development message naming version skew; untagged bodies keep the sniffing, and an untagged empty body stays a zero-argument call (Zero-argument server function calls 400 behind hosts that convert Node requests (empty POST body stream parses as an argument) #3214).url, so the cookie is discarded whole while claiming it fit #3249). The degrade ladder (The no-JS flash cookie has no size bound — an outcome past the browser's ceiling vanishes silently #3137) bounds the input echo and the result but never looked aturl— pathname + search of a request the caller chose — so a long enough form action pushed the fully-degraded payload past the ~4 KB cookie ceiling and the encoder emitted a cookie the browser discards whole, withtruncated: trueinside asserting a degradation that never stored.encodeFlashCookienow returnsnullwhen even the degraded payload cannot fit, and the no-JS handler falls back to the plain redirect — never an oversized cookie, never a url truncated to a prefix that would attach the outcome to a submission it does not identify. Cookie naming, attributes, and refusal/redirect statuses are untouched (The flash cookie carries the submission with noSameSite, no lifetime and no__Host-prefix #3239, A form navigation refused before dispatch is left on/_server/<id>with everything the user typed gone #3250 pending).patch.ts/patch-driver.tsdeleted, the compiler-contract exports (registerPatch/registerRowOps/registerSlotPatch/patchableRaw,patchDriver/rowProof/driveList) removed, thepatchDrivercompiler option dropped from both compilers, the insert$llseam stripped, and the write-side channel struct dieted to the single written-keys bound (t.wk) the core fold/notify paths actually use. Store-family app bundles reclaim up to ~900 B brotli; every measured tier shrinks.return { rows: cursor() }ran its generator under the render's ambient event — two concurrent direct calls read and wrote each other'slocals, and the render's own. The direct road now descends plain-object/array carriers and hands the caller a shallow-rebuilt carrier with the bound wrappers in the deferred slots; the user's returned containers are never written into, and results with nothing deferred keep their identity. Set/Map members, class instances, and frozen/non-writable slots are deliberately out of the carrier set (pinned by test): bodies reached through them stay bound to nothing, as before.transformResultfor plain thrown errors as its documentation already promises: the hook now runs once at the thrown path's entry (context.thrownset) for every thrown value — not only thrown Response/envelope shapes — and the response tail is selected from its output, while the wire stays sanitized and a hook that itself throws is contained as a sanitized 500 (transformResultsees every failure an author shaped by hand and none that happen to the app #3247).test-integration@2.0.0-rc.7
Patch Changes