githubnext/chopinPublic

Let's compose rich plans together

Harden link checks and keep a new link on the text it was opened for

- Refuse control, format and separator characters in link and image URLs,
  in the editor and in the dialect validator.
- Refuse protocol-relative and backslash values as repository paths, in
  both places. This closes a gap the server validator already had.
- Capture the link editor's target as Yjs relative positions. A remote
  edit no longer moves a new link onto other text; if the text itself is
  replaced, nothing is linked and the editor says why.
- Mod+Enter opens the link under the caret; Tab cycles inside the editor
  popover; host:port values become https URLs.
- Start-align both popovers to the link's left edge and follow remote
  edits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
C5MAMaggie Appleton and Claude Opus 5.5 authored
db1b8fdPatch
Parentefb2a81
11 files changed+509-113
StackedSplit
e2e/toolbar.e2e.ts+89 −0
packages/dialect/src/dialect.test.ts+32 −0
packages/dialect/src/dialect.ts+21 −0
packages/dialect/src/index.ts+2 −0
packages/dialect/src/validate.ts+15 −1
packages/editor/src/toolbar/index.tsx+1 −1
packages/editor/src/toolbar/link.tsx+222 −81
packages/editor/src/toolbar/position.ts+72 −0
packages/editor/src/toolbar/research.tsx+2 −22
packages/editor/src/toolbar/url.test.ts+35 −0
packages/editor/src/toolbar/url.ts+18 −8