Repository navigation
effect/ui: onMount without a message and with an input, head props, field values, Redacted state, View.Input requirements - #10600
Merged
tim-smart merged 3 commits intoNov 13, 2026
Conversation
🦋 Changeset detectedLatest commit: 72321c3 The changes in this PR will be included in the next version bump. This PR includes changesets to release 35 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
…tmlQuery field values, View.Input requirements
…ader snapshot in Redacted.test.ts
publishUnsafe drops a value when the capacity-one buffer is full, so a reader busy across two renders got the first. publish slides it out.
tim-smart
force-pushed
the
agent/nelson/52ce529c7cd8
branch
from
November 13, 2026 10:30
04f9385 to
72321c3
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.
Fixes six gaps a user of the effect/ui branch reported. Each fix follows the solution agreed on the issue.
onMountwithout a message.runmay end withundefined, which sends nothing and logs noUpdate. A component withmessage: Schema.Neverno longer needsEffect.never.onMountwith an input..onMount(name, input, (node, changes) => ...):changesstarts with the current input and gives each new one that differs byEqual. It is backed by a sliding PubSub (capacity 1, replay 1), so a slow reader gets only the latest value. The mount still runs once and its Scope still survives patches. Re-running the mount on change was rejected, because the old Scope's close doesn't wait. The input sits inView.Mount.input, so a story can check it.headgets props.head(model, props, loaded)now matchessubscriptions. This is a positional break for(model, loaded)callers. The ai-docsNotePagefixture is updated.Query.Nodegainsprops, andHtmlQuery.value(node)/HtmlQuery.checked(node)read the property before the attribute, on story views,TestHosttrees and the DOM.Schema.Redactedin state. An instance whose Model, or whose loader success, error or args Schema, holds aRedactedis never serialised. The server defers it,history.statekeeps no entry for it, and decoding is refused, so older state isn't adopted. The server logs one warning per component.holdsRedactedmoved tointernal/schemaRedact.tssoMessageLogand the runtime share it. The loader cache's own path into the HTML (~loader) is EFF-3763, and this PR doesn't touchreactivity/Loader.ts.View.Input<Msg, R = never>. A child that needs a service no longer erases requirements through a helper typed withView.Input<Msg>: it is rejected at the call site, and a generic tuple helper infers itsR.View.Requirements<any>isany.Known limit, recorded in the spec: a running mount can't send messages as it goes.
Closes EFF-3762