Version Packages (next) - #3310
Open
ecoscript[bot] wants to merge 1 commit into
Open
ecoscript[bot] wants to merge 1 commit into
ecoscript[bot] wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Bundle Stats✅ No significant changes. All scenario measurements (7)🗺️
Significant means at least 1.0 KB and 1% gzip, or at least 5 ms and 10% import time. |
ecoscript
Bot
force-pushed
the
changeset-release/next
branch
from
September 25, 2026 06:38
9e8f8b9 to
8ef56e1
Compare
christianhg
requested changes
Sep 25, 2026
christianhg
left a comment
Member
There was a problem hiding this comment.
Not to be merged by mistake, so I'm "requesting changes" to mitigate that.
This branch was successfully deployed
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
@portabletext/editor@9.0.0-next.0
Major Changes
#3246
e52a9d2Thanks @christianhg! - fix: emit structural repair patches immediately and make engine normalization the sole repairerThe editor repairs structural defects in any value passed to it, initial or updated: it generates a
_keyfor a block or child that has none or duplicates a sibling's, and it inserts an empty span into a text block with no children. Until now those repairs stayed in the editor's memory and the fixing patches were only emitted once the user made their first edit. Now they are emitted as soon as the value is applied. The practical consequence: loading a broken document can produce amutationto persist before any user action.patchevents and theirmutationright away. A host persisting mutations stores the repaired document immediately instead of at the user's first edit.patchevents right away too, but holds themutationuntil the editor becomes editable, because hosts reject writes to read-only documents.mutationis still pending, the outdated repair is discarded, whether the editor is read-only and holding it or editable and simply hasn't flushed it yet: a repair is never mistaken for unsaved edit work, so a host that already fixed the same defect with its own key supersedes ours regardless of which arrives first. When the newer value is broken too, a fresh repair for it is emitted instead. A repair computed against a value that is no longer current is discarded rather than delivered, with two exceptions: a repair whose target block can't yet be identified keeps flushing on its usual schedule instead of risking a silent drop, and a repair overtaken by another client's own patches to the same document is still delivered and converges with the later write, the same as any other concurrent edit. A later value that still shows the exact shape a block was just repaired from is recognized as the host not having caught up yet rather than a fresh defect: no repair is recomputed for it, and a repair already pending for that block is not discarded as superseded.mutationlisteners during unmount. A host that rejects mutations while read-only loses them there, as it did before._keyno longer triggers the "invalid value" prompt. It is repaired like the other defects, emitting the same events. The prompt still appears for defects that need a human decision (an unknown_type, a non-object block), and its resolution patches now address the defective block's position instead of possibly addressing the wrong block. A keyless child with such a defect is now named by its position in the prompt too, instead of showing anundefinedkey.markDefsthat no span references are no longer removed when a value enters the editor. They are removed when the user next edits that block.InvalidValueResolution.autoResolveis removed. The editor repairs mechanically fixable defects itself on intake, so no resolution is ever auto-resolvable; hosts that branched on the flag can delete that path.A
mutationevent'svaluenow reflects the value the editor holds at the moment the mutation flushes, not the value that was current when its patches were produced. A mutation held read-only and flushed later carries the up-to-date value, not a stale snapshot from before the hold.@portabletext/plugin-character-pair-decorator@9.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-decorations@1.0.3-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-dnd@2.0.17-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-emoji-picker@8.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-input-rule@7.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-list-index@2.0.15-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-markdown-shortcuts@9.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-one-line@8.0.15-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-paste-link@5.0.15-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-sdk-value@8.1.10-next.0
Patch Changes
#3246
41c8331Thanks @christianhg! - fix: don't latch the value-sync machine on patches emitted while read-onlyA read-only editor that receives a structurally invalid value (for example a block missing its
_key) repairs it and emits the repair patch immediately. Previously the plugin mistook that repair for an unsaved user edit and stopped applying store updates until it was pushed, which cannot happen while read-only, so the editor stopped receiving remote changes for the rest of the read-only session. It now keeps applying store updates and pushes the repair once the editor becomes editable.One additional change: a background sync pass no longer mistakes the still-unpushed repair for the store having drifted and reverts it; the repaired content stays stable until the editor becomes editable and the repair pushes.
Another additional change: a handful of Behavior events (
select,mouse.click,clipboard.copy, and the serialization events) still run their actions while read-only, so a custom Behavior that mutates on one of those is now protected the same way as any other unpushed edit, instead of being mistaken for a held repair and risking reversion by the background sync pass.One more additional change: a store update applied while a read-only repair is still held now supersedes it instead of racing it. Previously the held repair could still flush after the newer update, pushing stale content (or, with
pushPatches, a stale key) back over it.Updated dependencies [
e52a9d2]:@portabletext/plugin-table@2.0.15-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-typeahead-picker@7.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/plugin-typography@9.0.16-next.0
Patch Changes
e52a9d2]:@portabletext/toolbar@9.0.16-next.0
Patch Changes
e52a9d2]: