Gap cursor for block-edge positions (#335) #340

Merged
fable-5 merged 1 commits from issue-335-gap-cursor into main 2026-08-16 05:21:06 +02:00
Collaborator

A table as the page's only (or first/last) block was unreachable from before/after -- no cursor position existed there, so no paragraph could be created around it.

  • adds the prosemirror-gapcursor plugin as a TipTap extension (via @tiptap/pm, no new dependency; schema-neutral, drift fence untouched)
  • styles the gap cursor bar in base.css (upstream ships no stylesheet through our import path); blink honors prefers-reduced-motion
  • e2e: keyboard-only round trip creating paragraphs before and after a lone table (verified locally against a fresh stack)

This is also the keyboard exit path the Tab-navigation issue (#338) will rely on.

Closes #335

A table as the page's only (or first/last) block was unreachable from before/after -- no cursor position existed there, so no paragraph could be created around it. - adds the prosemirror-gapcursor plugin as a TipTap extension (via `@tiptap/pm`, no new dependency; schema-neutral, drift fence untouched) - styles the gap cursor bar in `base.css` (upstream ships no stylesheet through our import path); blink honors `prefers-reduced-motion` - e2e: keyboard-only round trip creating paragraphs before and after a lone table (verified locally against a fresh stack) This is also the keyboard exit path the Tab-navigation issue (#338) will rely on. Closes #335
fable-5 added 1 commit 2026-08-15 18:41:43 +02:00
Gap cursor for block-edge positions (#335)
Some checks failed
CI / Lint, typecheck, test (pull_request) Successful in 6m52s
CI / Build container images (pull_request) Successful in 1m13s
CI / Auth e2e pack (pull_request) Successful in 9m25s
CI / Import/export fidelity gate (pull_request) Successful in 58s
CD / Deploy to Test (push) Blocked by required conditions
CD / Smoke tests against Test (push) Blocked by required conditions
CD / Promote to Int (push) Blocked by required conditions
CI / Auth e2e pack (push) Blocked by required conditions
CI / Import/export fidelity gate (push) Blocked by required conditions
CI / Build container images (push) Blocked by required conditions
CI / Lint, typecheck, test (push) Has been cancelled
CD / Build and push images (push) Has been cancelled
69563348ca
A table (or any other block node without a text position of its own) as
the page's first, last, or only block was unreachable from before/after:
neither mouse nor arrow keys could place the cursor there, so no
paragraph could be created around it.

- add the prosemirror-gapcursor plugin as a TipTap extension (via
  @tiptap/pm, no new dependency; schema-neutral, so the editorSchema
  drift fence is unaffected)
- style the gap cursor bar in base.css -- the upstream package does not
  ship its stylesheet through our import path; the blink animation
  honors prefers-reduced-motion
- e2e: keyboard-only round trip that creates paragraphs before and
  after a lone table

Closes #335

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aoPvnakfBP28nAfijgUY9
fable-5 merged commit 69563348ca into main 2026-08-16 05:21:06 +02:00
Sign in to join this conversation.
No description provided.