Back to Plate

Slate v2 Open Issue Dossiers: 5994-5918

docs/slate-issues/open-issues-dossiers/5994-5918.md

53.0.628.8 KB
Original Source

Slate v2 Open Issue Dossiers: 5994-5918

Scope

These dossiers cover issues #5994 through #5918 from the pilot set. Use the top-level index for the range map and the ledger for the canonical structured cache.


Issue #5994

Issue Summary

This looks like a selection-boundary bug in the mentions example. After creating a new line after a trailing mention and then backspacing that line away, the cursor disappears and the mention becomes selected instead.

Thread Summary

There is no thread. The problem is the repro reliability: the reporter says it happens on a local checkout of main, but not on the deployed official example.

Repro Status

Unclear. The steps are concrete, but the environment discrepancy matters.

Workaround Status

Poor.

Validity Assessment

Unclear.

Duplicate / Invalid / Stale Assessment

No duplicate signal yet. This needs reproduction before it deserves stronger conclusions.

Maintainer Action Suggestion

ask-for-repro

Future Reply Direction

Ask for a tighter repro: exact commit or local diff, and whether the issue still reproduces in a clean local checkout of the example.

v2 Relevance

Indirect. It is another signal that inline/selection boundary behavior is still fragile, but the issue is too underconfirmed to carry much architectural weight yet.

Red-Test Extraction Note

Blocked on repro. Do not write a test from this yet.


Issue #5992

Issue Summary

This is a large-document performance complaint against the huge-document example. Cutting a selection in a 50,000-block document is reported as excessively slow, with the reporter pointing at array destructuring cost in the profile.

Thread Summary

No thread yet. The issue is thin but still useful because it names a concrete workload and example URL instead of just saying “Slate is slow.”

Repro Status

Likely reproducible from the official huge-document example.

Workaround Status

Poor.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

keep-open

Future Reply Direction

If a maintainer replies, the useful move is to acknowledge the workload and push it toward a benchmark/profiling lane instead of generic bug back-and-forth.

v2 Relevance

Direct. This is exactly the kind of workload that pressures execution model and scaling choices.

Red-Test Extraction Note

This is really a benchmark candidate, not a classic red-test candidate. The right artifact is a reproducible perf lane.

Benchmark Extraction Note

Ready with minor setup. The right next move is a stable huge-document cut benchmark with a fixed document generator, fixed selection shape, and cut through the public transform path.


Issue #5989

Issue Summary

This is a strong Android IME bug report: with placeholder visible, the first Hangul composition does not combine into a syllable correctly and instead inserts separate characters.

Thread Summary

The only comment is a ping, so the body carries almost all the value. It is still a good report: official example, exact sequence, platform, and a plausible hint that placeholder rendering is involved.

Repro Status

Strong.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Acknowledge and narrow the likely seam: Android composition plus placeholder/empty-state handling.

v2 Relevance

Direct. This is another signal that mobile IME and empty-state behavior need to be first-class in runtime design.

Red-Test Extraction Note

Ready with minor setup. First red test should target the composition result, not every browser-level IME nuance at once.


Issue #5987

Issue Summary

This is a real slate-react stability bug: when decorate changes from an async state update, the caret can jump to the wrong position when the new decorations apply.

Thread Summary

The maintainer reply is useful and specific. It ties the issue to a known decoration rewrite, suspects DOM remount plus selectionchange, and points directly at the likely source files. That is real evidence, not hand-waving.

Repro Status

Strong. The issue includes a sandbox and a stable async timing trigger.

Workaround Status

Poor. The reported workaround is a hacky deselect/reselect after a timeout.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Share status if more is known. Otherwise the issue already has a useful maintainer breadcrumb and should remain a good test candidate.

v2 Relevance

Direct. This is exactly the sort of render/subscription/selection timing garbage a transaction-plus-snapshot runtime is meant to reduce.

Red-Test Extraction Note

Ready now. This wants a React integration test around async decoration updates and selection stability.


Issue #5984

Issue Summary

This is a high-signal Android Chinese IME bug: one backspace press does not trigger the expected single delete/onChange, while the second press deletes twice.

Thread Summary

The comment is interesting because it links a PR and claims a root cause/fix, but it is not maintainer-verified. That raises the value of the issue, but it does not close it.

Linked Artifacts Summary

Linked PR #5985 may contain useful debugging or fix context, but it should not be trusted without review.

Repro Status

Strong. The issue includes minimal code and a very clear behavior contract.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Share status around the linked PR or confirm whether that line of investigation is still considered plausible.

v2 Relevance

Direct. This is another concrete mobile IME editing-semantics failure.

Red-Test Extraction Note

Ready with minor setup. The first useful test is about delete semantics and emitted state change, not every browser/input-method combination.


Issue #5983

Issue Summary

This is a voice-input duplication bug on Android when the editor is empty. The first dictated input repeats, while the same flow behaves normally if the editor already contains content.

Thread Summary

No thread yet. The body is still decent: official example, specific IMEs, and a clear empty-vs-non-empty distinction.

Repro Status

Likely valid from the official example.

Workaround Status

Poor.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

keep-open

Future Reply Direction

Short acknowledgement is enough for now. The next useful step is reproduction and clustering with other Android empty-state input issues.

v2 Relevance

Direct. Empty-state behavior plus mobile input keeps recurring as a weak seam.

Red-Test Extraction Note

Ready with minor setup. Likely first test should focus on duplicate insertion from empty state, not voice input plumbing itself.


Issue #5977

Issue Summary

This issue starts from custom operations, but the stronger thread conclusion is narrower and more important: Editor.isEditor should not depend so heavily on validating the exact shape of editor.operations.

Thread Summary

The comments are the real value here. One maintainer argues that strict editor.operations validation is unnecessary and has already caused performance trouble. Another points out that true custom-operation support is broader and currently awkward across multiple seams. So the issue is not “custom ops fully work today.” The issue is that one current validation seam is too brittle.

Repro Status

Strong enough. The failure mode is concrete and the discussion identifies the architectural seam.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

fix-current-architecture

Future Reply Direction

If a maintainer replies again, the useful message is to narrow scope: this is about loosening a brittle validation seam, not promising full custom-operation support everywhere.

v2 Relevance

Direct. It touches the core question of what operations are allowed to mean and how extensibility should work.

Red-Test Extraction Note

Ready now. This can become a test that editor detection does not collapse just because custom operations exist in the operations list.


Issue #5974

Issue Summary

This is a Chinese composition/input complaint, but only in Chrome DevTools iPhone emulation. The reporter also found a workaround by overriding onCompositionEnd with slate-dom internals.

Thread Summary

The thread increases technical detail but not confidence. The workaround is invasive and environment-specific, and the issue is still framed around emulator behavior rather than a real device.

Repro Status

Unclear outside the emulator setup.

Workaround Status

Acceptable, though ugly.

Validity Assessment

Unclear.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread, but this needs scope clarification before it deserves high priority.

Maintainer Action Suggestion

ask-for-scope-clarification

Future Reply Direction

Ask whether the failure reproduces on real iOS devices or only in Chrome emulation. That is the key fork.

v2 Relevance

Indirect. It may just be an emulator quirk, but it still points at fragile composition handling.

Red-Test Extraction Note

Blocked on repro. Emulator-only behavior is too weak a foundation for a serious test.


Issue #5972

Issue Summary

This is a deletion-semantics complaint around empty inline elements. Backspace at the boundary deletes the preceding character instead of just removing the empty inline.

Thread Summary

The thread is useful because it exposes both a likely current cause and a real ambiguity. A contributor explains why current 'character' delete behavior leads here and points out that more complex inline cases become murky quickly. The reporter clarifies the desired basic case.

Repro Status

Strong for the simple case.

Workaround Status

Poor.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

No duplicate signal in the thread.

Maintainer Action Suggestion

ask-for-scope-clarification

Future Reply Direction

Ask for the desired semantics on the harder nested-inline cases before changing core delete behavior broadly.

v2 Relevance

Direct. This is core editing semantics, not just example polish.

Red-Test Extraction Note

Ready now for the simple documented case. The harder nested cases can stay as follow-up scope questions.


Issue #5961

Issue Summary

This started as a possible Slate/React timing bug, but the thread eventually shows the reporter was still running stale requestAnimationFrame code and the original warning disappeared once that was fixed.

Thread Summary

The thread is long but useful. It moves from speculation to proper debugging, and then to resolution by the reporter. The remaining discussion is about a separate decoration-delay issue, not the original warning.

Repro Status

Resolved by the reporter.

Workaround Status

Strong. The underlying bad pattern was removed.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

This should probably be closed unless someone can still reproduce the original warning without the stale code path.

Maintainer Action Suggestion

close-stale

Future Reply Direction

Short closure note: the original report appears resolved in-thread; reopen with a minimal repro if the warning still exists independently of requestAnimationFrame.

v2 Relevance

None.

Red-Test Extraction Note

Not a test candidate. The original report resolved into consumer-side timing misuse.


Issue #5958

Issue Summary

This looks serious at first glance: Burmese IME composition stops responding after a specific key sequence in the plaintext example on Windows browsers.

Thread Summary

The only comment is the real triage outcome. The reporter later says this is a Chromium issue and links the upstream browser bug directly.

Linked Artifacts Summary

Linked Chromium issue 344767735 is the most important artifact in the thread.

Repro Status

The repro steps are concrete and likely valid, but the current evidence points at browser behavior more than Slate behavior.

Workaround Status

Poor. There is no Slate-level workaround in the thread.

Validity Assessment

Likely invalid as a Slate issue.

Duplicate / Invalid / Stale Assessment

This should not stay open as if Slate owns the fix. The current thread points upstream.

Maintainer Action Suggestion

close-invalid

Future Reply Direction

Short and explicit: link the Chromium issue, note that the current evidence points upstream, and close unless new Slate-specific evidence appears.

v2 Relevance

Indirect. It still counts as evidence that input-method behavior is a real pain cluster, but not every member of that cluster will be fixable in Slate.

Red-Test Extraction Note

Not a good Slate test candidate while the thread points at Chromium itself.


Issue #5956

Issue Summary

This is not a core editor bug. The reported “no cursor” behavior is the caret being visually hidden by the focus ring.

Thread Summary

The thread already resolves it. A contributor explains the focus-ring interaction, cites the relevant accessibility guidance, and the reporter acknowledges the answer.

Repro Status

Resolved in thread.

Workaround Status

Strong. Adjust the focus ring or padding.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

This is effectively solved support traffic, not active roadmap input.

Maintainer Action Suggestion

close-stale

Future Reply Direction

No long discussion needed. Point at the existing explanation and close.

v2 Relevance

None.

Red-Test Extraction Note

Not a test candidate. This belongs to consumer styling and accessibility guidance.


Issue #5947

Issue Summary

This is a strong writeup of a nested-editor bug in DOMEditor.toSlatePoint. The important claim is that global DOM-to-node bookkeeping can let a nested editor resolve a point inside the parent editor.

Thread Summary

There is no comment thread, but the body is already maintainer-grade: concrete control flow, exact file references, and a plausible mitigation.

Repro Status

Strong enough from the writeup alone.

Workaround Status

None in the thread.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

No duplicate or stale signal yet. This should stay open.

Maintainer Action Suggestion

keep-open

Future Reply Direction

A useful maintainer reply would acknowledge the nested-editor/global-map angle and confirm whether the proposed mitigation is directionally right.

v2 Relevance

Direct. This is exactly the kind of cross-editor identity leak that a cleaner runtime and editor-scoped bookkeeping model should avoid.

Red-Test Extraction Note

Ready now. This wants a DOM integration test with nested editors and a point resolution path that currently escapes into the parent editor.


Issue #5945

Issue Summary

This is a good performance report, not vague whining. It compares large plain-text paste behavior against Tiptap and gives a reproducible workload.

Thread Summary

The thread is the useful part. A contributor profiles the path and identifies two concrete costs: repeated normalization during insertData, and isEditor spending O(n^2) time validating editor.operations through isOperationList.

Repro Status

Strong. The workload is explicit and the thread already contains profiler-backed diagnosis.

Workaround Status

Poor. The only real answer is to optimize the engine path.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Not stale, not invalid, and clearly part of the same large-document performance cluster as other recent perf reports.

Maintainer Action Suggestion

fix-current-architecture

Future Reply Direction

The right reply is not “try less text.” It is to acknowledge the workload and point at the normalization and editor-validation costs already identified in-thread.

v2 Relevance

Direct. It reinforces the case for transaction-aware execution and for removing per-operation overhead from bulk text ingestion.

Red-Test Extraction Note

Not a correctness test candidate. The right artifact is a reproducible perf lane.

Benchmark Extraction Note

Ready now. Start from a large plain-text paste benchmark and make normalization plus editor-validation cost visible instead of hiding everything in one top-line number.


Issue #5944

Issue Summary

This is an advanced-layout request, not a conventional bug. The user wants stable word-processor-style pagination and is fighting measurement feedback loops caused by DOM spacers affecting the next layout pass.

Thread Summary

There is no thread yet, so the issue is still one-sided. The body is useful, though: it describes the exact strategy already attempted and why it still flickers.

Repro Status

Weak. The issue mentions a repro link and GIF, but they are not actually present.

Workaround Status

Poor. The whole issue exists because the current attempts still oscillate.

Validity Assessment

Unclear as a current Slate issue, but valuable as a v2 capability signal.

Duplicate / Invalid / Stale Assessment

Not stale, but not mature enough to treat as a concrete fix ticket either.

Maintainer Action Suggestion

v2-roadmap

Future Reply Direction

If someone replies, the useful move is to ask for the missing minimal repro and keep the conversation focused on whether Slate should own this at all versus leaving it to higher-level layout systems.

v2 Relevance

Direct. Pagination/layout composition is one of the clearest “custom use case” pressures on the current model.

Red-Test Extraction Note

Not a current TDD candidate. This belongs in architecture requirements first.


Issue #5938

Issue Summary

This is a real render-timing bug: DOMEditor.findPath can throw or return the wrong path in onChange because DOM-index caches update on render, but onChange fires first.

Thread Summary

The thread is good. A contributor explains the quirk, points at related issue #5800, gives a workaround using deferred selectors, and the reporter links a PR attempt that fails under tests.

Linked Artifacts Summary

Related issue #5800 and attempted fix PR #5939 are both part of the real context.

Repro Status

Strong. The issue has a sandbox and a crisp four-step repro.

Workaround Status

Acceptable. Deferred selector evaluation works, but only by waiting until after render.

Validity Assessment

Valid.

Duplicate / Invalid / Stale Assessment

Not a duplicate. It is part of an existing problem family, but still a live issue in its own right.

Maintainer Action Suggestion

keep-open

Future Reply Direction

The useful reply is a narrow status update: related to the broader path-computation problem, workaround exists, easy fixes fail, deeper seam likely needed.

v2 Relevance

Direct. This is exactly what “transaction-first internally, op-first externally” is supposed to clean up on the runtime side.

Red-Test Extraction Note

Ready now. Write the first red test around DOMEditor.findPath inside onChange after a structural edit, not around private cache maps.


Issue #5931

Issue Summary

This is a Windows suggestion-acceptance bug. Accepting a suggested completion appends the chosen word after the typed prefix instead of replacing the active word segment.

Thread Summary

No thread yet. The body still carries enough weight because it names the exact environment, the exact expected behavior, and the likely event-model seam.

Repro Status

Likely strong, assuming Windows suggestion bars are available in the test environment.

Workaround Status

Poor. There is no real Slate-level workaround in the issue.

Validity Assessment

Likely valid.

Duplicate / Invalid / Stale Assessment

No direct duplicate signal, but it clearly belongs in the broader Windows/input-method cluster.

Maintainer Action Suggestion

keep-open

Future Reply Direction

A useful maintainer reply would confirm whether this lands in the same seam as composition and beforeinput handling, then ask for any browser differences if repro is attempted.

v2 Relevance

Direct. This is another case where the runtime/input bridge is doing too much guesswork.

Red-Test Extraction Note

Ready with minor setup. The hard part is the Windows suggestion harness, not the behavioral assertion.


Issue #5928

Issue Summary

This is mostly a consumer integration trap, not a Slate engine bug. The command palette logic was wired to keydown, which is unreliable on Android, and the thread lands on onDOMBeforeInput plus requestAnimationFrame as the practical fix.

Thread Summary

The thread already resolves the useful answer. A contributor explains the Android event-model difference, and the reporter confirms the working pattern.

Repro Status

Resolved in thread.

Workaround Status

Strong.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

This should not stay open as an unresolved engine issue.

Maintainer Action Suggestion

close-stale

Future Reply Direction

Short closure note: mobile slash-trigger logic belongs on input events, not keydown; the thread already contains the working pattern.

v2 Relevance

Indirect. It is still useful as evidence that the runtime should not make keydown-driven integrations feel reliable on mobile when they are not.

Red-Test Extraction Note

Not a test candidate. This is a docs/pattern handoff.


Issue #5924

Issue Summary

This is a thoughtful request for a structural-layout affordance: mark some DOM nodes as part of component structure without letting the browser place the caret there.

Thread Summary

The thread weakens the case as a current issue. A contributor suggests existing contentEditable={false} plus CSS approaches, and the reporter later says they could no longer reproduce the issue in isolation and that it was likely something local.

Repro Status

No longer credible as a live repro.

Workaround Status

Acceptable, at least for the cases discussed in-thread.

Validity Assessment

Stale candidate.

Duplicate / Invalid / Stale Assessment

Not a duplicate, but not a solid current-ticket either.

Maintainer Action Suggestion

close-stale

Future Reply Direction

If this gets closed, point at the current workaround discussion and the reporter’s later note that the issue no longer reproduced cleanly.

v2 Relevance

Direct, but only at the requirements level. It still says something useful about advanced layout composition and structural editing pressure.

Red-Test Extraction Note

Not a current test candidate. Keep it as a capability note, not a failing behavior obligation.


Issue #5918

Issue Summary

This is another Windows input-method issue. The reported symptoms are duplicated words and broken deletion after committing a Vietnamese word and starting the next one.

Thread Summary

The thread is weak. The only comment suggests switching away from the default Windows Vietnamese input method, which is more folklore than maintainer triage.

Repro Status

Weak. The reporter says their app shows one problem and the official example shows a different one.

Workaround Status

Acceptable only in the worst sense: “use another IME” is not a real product answer.

Validity Assessment

Unclear.

Duplicate / Invalid / Stale Assessment

This belongs in the Windows/input-method cluster, but the issue itself still needs sharper repro boundaries before it becomes actionable.

Maintainer Action Suggestion

ask-for-scope-clarification

Future Reply Direction

Ask for the exact IME, exact browser, and whether the official example can reproduce the same failure mode instead of a related-but-different one.

v2 Relevance

Direct. Even fuzzy reports like this are telling us the Windows input bridge is a real pain surface.

Red-Test Extraction Note

Blocked on repro. Do not write a fake Windows IME test until the failure shape is narrowed.