You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bug: [lexical-y] A local delete overlapping a remote one applied in the same update while composing is stored differently from the editor #9836
@lexical/y: while the editor is composing (a composition key is set), a local delete and a remote delete that overlap it, applied inside the same update (a provider applying the change there), leave the editor and the document apart.
Repro (3 peers; A has a DOM root): A composes in the first line ($setCompositionKey on its text node), and a TextNode mutation listener ends the composition in an update it queues. Offline, B deletes [8,12) of eight nine ten; A deletes [7,11) of the same line and applies B's change inside that update (origin 'provider'); everyone syncs; A then appends # to the line. A shows eight nien# (only B's delete), while a fresh read of A's document and the peers have eight n (both deletes with stale bounds, which also removed en, and the # is lost). Expected everywhere: eight nen#.
The same history without the composition converges since #9826 (which split items at what writes deleted again while a remote change is unread); the composition path still diverges, on every tree back to before #9777 (so not the hold it can form). Found by a generator run (composition hold, overlapping deletes, listener edits, cursors resolved from transaction observers; Prism and Shiki, gc on and off, both client orders: all the same).
Activity