docs/plans/2026-04-27-slate-v2-hovering-toolbar-mouse-selection.md
Complete.
Fix /examples/hovering-toolbar so the toolbar appears after real mouse
selection, and use the bug to tighten the browser-proof architecture.
/Users/zbeyens/git/slate-v2./Users/zbeyens/git/plate-2./examples/hovering-toolbar.dev-browser early.playwright/integration/examples/hovering-toolbar.test.ts contains
page.pause() and uses programmatic selectText(), not mouse selection.HoveringToolbar reads editor.getSelection() inside an effect but does not
subscribe to selection changes. useSlate() only rerenders on editor change
notifications; relying on that for overlay visibility is not an API contract.useSlateSelection() exists and is the correct low-cost selector for this
example.window.getSelection() had text but the toolbar stayed hidden.mouseup closes the native
mouse-selection path without reopening internal controls.bun test:stress failed against reused 3101 server state, but the same
stress lane passed when pinned to the current dev server at 3100.dev-browser on the persistent Chrome route. Done.PLAYWRIGHT_BASE_URL=http://localhost:3100 bunx playwright test ./playwright/integration/examples/hovering-toolbar.test.ts --project=chromium --workers=1 --retries=0
dev-browser --connect http://127.0.0.1:9222
bun --filter slate-react typecheck
bun typecheck:site
bun typecheck:root
bun lint:fix
bun test:slate-browser:selection
PLAYWRIGHT_BASE_URL=http://localhost:3100 bun test:stress