Back to Plate

3558 3435

docs/slate-issues/open-issues-dossiers/3558-3435.md

53.0.623.0 KB
Original Source

Issue #3558

Issue Summary

External agents like Google Translate can mutate the DOM and make Slate crash with removeChild errors.

Thread Summary

The thread is small, but the problem is concrete and clearly tied to foreign DOM mutation rather than ordinary typing.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it as real runtime-boundary debt around foreign DOM mutation.

Maintainer Action Suggestion

share-status

Future Reply Direction

Share status and keep it attached to external DOM mutation, not generic typing crashes.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3557

Issue Summary

Users expect overriding insertNode or insertFragment to catch paste flows, but the real pipeline goes through insertData and leaves them stranded.

Thread Summary

The thread matters because it shows the current paste pipeline is understandable to maintainers but confusing to plugin authors.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

Keep it as plugin-hook and paste-pipeline ergonomics pressure, not a core crash.

Maintainer Action Suggestion

share-status

Future Reply Direction

Share the real paste hook surface and decide whether the API should be clearer.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3551

Issue Summary

Undo after moveNodes could restore the wrong state.

Thread Summary

The thread is thin and mostly valuable because it points at a likely later fix.

Linked Artifacts Summary

The only useful later signal is PR #4717, which makes this look more like historical history debt than a fresh unknown.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

De-weight it unless someone revalidates it on current Slate.

Maintainer Action Suggestion

share-status

Future Reply Direction

Share the likely fix path instead of treating it like fresh breakage.

v2 Relevance

Direct.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3540

Issue Summary

If the user is still holding the mouse button, toggling a mark can break the selection.

Thread Summary

The comments are useful because they narrow the failure to mark toggles plus tiny mouse movement, not just any selection drag.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as real selection-plus-mark-toggle debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to active drag selection during mark changes.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3534

Issue Summary

Undo after a multi-block edit can restore the wrong selection start.

Thread Summary

The thread is short, but the repro is crisp and selection-specific, which makes it perfect history debt.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as real history selection-restore debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it in the history-selection family.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3499

Issue Summary

Marked text moved to a new line can break caret placement and then undo to the wrong mark state.

Thread Summary

This is useful because it ties insert-break, marks, and history together in one concrete repro instead of three separate complaints.

Linked Artifacts Summary

The comments matter because they show parts of the issue were thought fixed by PR #3602 and PR #3690, but later reports say at least one part still survives.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

Keep it open, but treat it as mixed history and mark-state debt instead of a narrow text-format bug.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to mark plus history semantics across line splits.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3497

Issue Summary

Unrelated parent state updates can still steal focus from the editor.

Thread Summary

The comments are useful because they broaden the issue to multiple editors and external state changes, not just one inline node case.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as high-signal React runtime focus debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it grouped with rerender-driven focus loss.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3487

Issue Summary

This is a fair design-question issue: the transfer-data base64 step is not obvious and wants explanation.

Thread Summary

There is no thread, but the question is concrete enough to count as docs debt rather than noise.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it as docs and design-explanation debt, not a bug.

Maintainer Action Suggestion

share-status

Future Reply Direction

Answer the design question or document it plainly.

v2 Relevance

None.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3486

Issue Summary

The hard-coded fragment transfer-data id causes trouble when multiple Slate-based systems need to coexist.

Thread Summary

The lone comment is useful because it pressures the real question: is this already achievable through existing copy hooks, or does the API need a better seam?

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Low urgency, but legitimate clipboard API pressure.

Maintainer Action Suggestion

share-status

Future Reply Direction

Share status and decide whether existing copy hooks are enough.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3482

Issue Summary

The required empty text child inside void nodes remains one of the strongest old data-model design tensions in Slate.

Thread Summary

The thread is rich and worth preserving because it argues the tradeoff from multiple angles instead of treating it as a simple bug.

Repro Status

Strong enough.

Workaround Status

None.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it as serious v2 data-model pressure, not a patch request.

Maintainer Action Suggestion

v2-roadmap

Future Reply Direction

Share status and frame it as data-model tradeoff, not a missing fix.

v2 Relevance

Direct.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3479

Issue Summary

This is a legacy 0.47 support question, not meaningful current Slate debt.

Thread Summary

The thread never leaves old-version support territory.

Repro Status

Strong enough.

Workaround Status

None.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

Close or ignore it as pre-0.5 support noise.

Maintainer Action Suggestion

close-stale

Future Reply Direction

Point at the old extension seam if anyone still asks, but do not let it steer current work.

v2 Relevance

None.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3478

Issue Summary

If onChange feeds an async external store like Redux, the editor can crash under ordinary typing speed.

Thread Summary

The thread is strong because multiple people reproduced it outside Redux too, which makes the real seam async external updates, not one library.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as high-signal external-store integration debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it grouped with async controlled-value crashes.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3470

Issue Summary

Selecting text and moving the cursor on Android could insert ghost text and completely break editing.

Thread Summary

The thread is valuable because it shows both the old unsupported status and ongoing attempts to patch Android behavior in later forks.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Invalid for current Slate.

Duplicate / Invalid / Stale Assessment

Do not count it as current-contract bug debt, but keep it as strong Android platform signal.

Maintainer Action Suggestion

v2-roadmap

Future Reply Direction

Share status honestly and keep it in the Android-demand bucket.

v2 Relevance

Direct.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3469

Issue Summary

Copying or deleting a whole list still fails because the selection does not actually include the block structure the user thinks it does.

Thread Summary

The comments strengthen it by generalizing the same bug to more block-level nodes, not just lists.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as strong structural selection and delete debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it in the same select-all structural-delete family.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3466

Issue Summary

Backspacing in the middle of bold text can merge paragraphs when it should just delete a character.

Thread Summary

The thread is still useful because it narrows the exact caret position needed to hit the bug.

Linked Artifacts Summary

The comments already point at Issue #3339, so this looks more like a sharper repro for an older delete-and-merge family than a new problem line.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Duplicate candidate.

Duplicate / Invalid / Stale Assessment

Keep the repro, but consolidate it under the older delete-and-merge family.

Maintainer Action Suggestion

close-duplicate

Future Reply Direction

Share the duplicate target and keep the sharper repro if the older issue is too fuzzy.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3465

Issue Summary

Slate still lacks a clean story for normalizing the initial value or imported documents before first user edits.

Thread Summary

The comments make it stronger because multiple migration and import flows hit the same missing full-document normalization seam.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it as high-signal normalization lifecycle pressure.

Maintainer Action Suggestion

v2-roadmap

Future Reply Direction

Share status and frame it as normalization lifecycle design, not just helper API churn.

v2 Relevance

Direct.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3460

Issue Summary

People want to put toolbars and command UI outside the editor subtree without losing easy editor access.

Thread Summary

The thread is messy, but the core pressure is real: current access patterns are awkward once the toolbar stops living next to Editable.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

Keep it as moderate API-surface pressure for React composition.

Maintainer Action Suggestion

share-status

Future Reply Direction

Share the current options and decide whether this needs a stronger public seam.

v2 Relevance

Direct.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3459

Issue Summary

This was a real placeholder-styling request, but it now mostly reads like old API surface before renderPlaceholder and related follow-ups.

Thread Summary

The later comments are the whole point: they give both a workaround and a likely close target.

Linked Artifacts Summary

The thread and linked follow-up show this request was effectively superseded by later placeholder customization seams.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

Close or de-weight it as superseded placeholder API debt.

Maintainer Action Suggestion

close-stale

Future Reply Direction

Share the newer placeholder surface and close it if nobody disputes that.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3458

Issue Summary

Arrow navigation breaks around single-character text nodes next to inline elements.

Thread Summary

The thread is strong because multiple people generalized the same problem and even narrowed it into Editor.positions().

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as strong inline-boundary and caret-navigation debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to inline-boundary navigation rather than generic arrow keys.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3453

Issue Summary

This is simple component contract confusion: Slate is not a DOM element and should not receive an id for DOM lookup.

Thread Summary

The comments already answer it cleanly.

Repro Status

Strong enough.

Workaround Status

Strong.

Validity Assessment

Invalid for current Slate.

Duplicate / Invalid / Stale Assessment

Close it as current-contract confusion.

Maintainer Action Suggestion

close-invalid

Future Reply Direction

Point at Editable or a wrapping div and move on.

v2 Relevance

None.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3452

Issue Summary

Calling setState during click handling used to restore an older caret position.

Thread Summary

The later comments make it read as historical fix context rather than live debt.

Linked Artifacts Summary

The thread already says PR #3355 fixed the issue, which is the only part worth preserving.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

De-weight it as likely resolved by later selection work.

Maintainer Action Suggestion

close-stale

Future Reply Direction

Share the fix breadcrumb and move on unless someone revalidates it.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3450

Issue Summary

This is a reasonable namespace-coherence request around addMark and removeMark.

Thread Summary

There is no thread, but the issue is coherent and maps cleanly to public API organization.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it as low-drama API surface pressure.

Maintainer Action Suggestion

v2-roadmap

Future Reply Direction

Share status and keep it in namespace and surface cleanup, not bug counts.

v2 Relevance

Indirect.

Red-Test Extraction Note

Not a direct test candidate.

Issue #3449

Issue Summary

ReactEditor.findEventRange gives inconsistent results on void nodes under mousemove.

Thread Summary

There is no thread, but the issue body is specific and compares it to a working seam, which is enough.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as hit-testing debt around void content.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to event-range stability over void elements.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3438

Issue Summary

Once the first line is selected with the keyboard, the selection cannot shrink back correctly.

Thread Summary

There is no thread, but the issue has a crisp keyboard repro and a clear expected behavior.

Repro Status

Strong enough.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as keyboard selection debt.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to selection expansion and shrink behavior.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.

Issue #3435

Issue Summary

There is no clean way to insertBreak after a selected void element without weird double-insert behavior.

Thread Summary

The workaround discussion is useful because it proves the current input handling captures the same Enter key twice across the manual and built-in path.

Repro Status

Strong enough.

Workaround Status

Acceptable.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Keep it open as real insert-break debt around void boundaries.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge it and keep it tied to Enter handling after selected void elements.

v2 Relevance

Direct.

Red-Test Extraction Note

See the paired test-candidate map entry.