a848003db2
Adds CommentHoverPreview, mounted in page-editor next to <EditorContent>: hovering a `.comment-mark[data-comment-id]` span shows a small floating card (createPortal, position:fixed, pointer-events:none so it never intercepts the mark's click) with the parent comment's plain text. Uses useCommentsQuery (shares the ["comments", pageId] cache with the side panel — no extra request). Skips unknown/not-yet-loaded, resolved (data-resolved attr or resolvedAt/resolvedById), and empty-text comments. A ~120ms open delay avoids flicker; hides on mouseout / mousedown / scroll(capture) / resize / page change. commentContentToText flattens the comment's ProseMirror doc (stringified or parsed) to plain text, preserving hardBreaks as newlines and never throwing. Main editor only (read-only / shares / history out of scope). closes #268 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>