Skip to content

feat: legal review features, collab editing, upstream PR sync#229

Closed
yash-giantanalytics wants to merge 20 commits intoeigenpal:mainfrom
giantanalyticsai:feat/legal-review-features-v2
Closed

feat: legal review features, collab editing, upstream PR sync#229
yash-giantanalytics wants to merge 20 commits intoeigenpal:mainfrom
giantanalyticsai:feat/legal-review-features-v2

Conversation

@yash-giantanalytics
Copy link
Copy Markdown

Summary

  • Review toolbar (accept/reject all, prev/next change navigation) in suggesting mode
  • Comment creation UI (toolbar button, Ctrl+Alt+M, context menu)
  • Template field onTagSelect callback for consumer edit dialogs
  • Find & replace with tracked changes (replaceWithTracking, replaceNextWithTracking)
  • @mention autocomplete in comment inputs via mentionProvider prop
  • Default heading styles (Title, H1-H3) always visible in style picker
  • Real-time collaborative editing package (packages/collab/) — Yjs + Hocuspocus + Supabase Postgres
  • Synced upstream PRs: feat(ribbon) Ribbon bar #132 (ribbon bar), feat: live agent chat with client-side document tools #201 (agent tools), fix: header/footer editor line spacing mismatch with layout view #228 (H/F spacing fix)
  • Changeset-based release workflow with GitHub Packages publishing

Test plan

  • Typecheck passes (bun run typecheck)
  • Build passes (bun run build)
  • Review toolbar buttons functional in suggesting mode
  • Comment add via toolbar, keyboard shortcut, context menu
  • Template field click triggers onTagSelect callback
  • @mention dropdown shows org members
  • Style picker shows headings for documents without heading styles
  • Collab package builds independently (cd packages/collab && bun run build)
  • Collab server connects to Supabase and syncs between two clients
  • Playwright E2E tests pass

erophames and others added 20 commits March 11, 2026 17:46
Refactoring of ribbon/spell check/contextual memory.
…licts resolved

Full merge of eigenpal#132:
- Ribbon UI components, config, actions, icons
- StoredMarksSyncExtension, mark utils improvements
- Perf flags infrastructure (PERF_ENABLED, recordLayoutPerf)
- PageNavigator, ColorHistoryProvider, EditingModeDropdown extraction
- E2E test coverage for ribbon features
- Resolved 18 merge conflicts across 4 files (bun.lock, renderPage.ts,
  PagedEditor.tsx, DocxEditor.tsx) keeping both HEAD and pr-132 additions
… find-replace

Cherry-pick of our features onto merged PR eigenpal#132 ribbon base. Conflicts
resolved in DocxEditor.tsx (4 zones: imports, comment handlers,
keyboard shortcut deps).
Three-workflow CI pipeline with single responsibilities:
- ci.yml: typecheck, test, build, lint on PRs (unchanged)
- release.yml: changesets creates version PR on merge to main,
  tags + GitHub Release when version PR merges
- publish.yml: triggered by GitHub Release, builds and publishes
  to GitHub Packages (replaces upstream npm public publish)

Includes changeset for the legal review features (minor bump).
Add mention dropdown to comment inputs (ReplyInput, AddCommentCard).
When user types @ followed by a query, a dropdown of matching users
appears. Provider callback is passed via mentionProvider prop on
DocxEditor, threaded through useCommentSidebarItems to all comment
and tracked change cards.

New exports: MentionProvider, MentionUser types.
…, @mention cleanup

- StylePicker always shows Title, Heading 1-3 even if document styles
  don't define them (merges DEFAULT_STYLES with document styles)
- Remove unused Save as DOCX/PDF from File menu (handled at page level)
- Clean up unused onSaveAsDocx/onSaveAsPdf props
New packages/collab/ package with:

Server (import from '@eigenpal/docx-collab/server'):
- createCollabServer() — Hocuspocus v3 WebSocket server
- Supabase Postgres persistence via @hocuspocus/extension-database
- Auth hook for Supabase JWT validation
- Auto-start when run directly (tsx src/server.ts)

Client (import from '@eigenpal/docx-collab'):
- createCollabProvider() — Yjs + Hocuspocus client with ProseMirror plugins
- useCollaboration() — React hook managing provider lifecycle
- CollabPresence — component showing connected users' avatars
- Cursor awareness (y-prosemirror yCursorPlugin)
- Collaborative undo/redo (yUndoPlugin)

Architecture: Yjs CRDT (client) ↔ Hocuspocus WebSocket (server) ↔ Supabase Postgres
All dependencies MIT licensed, zero licensing cost.

Includes ADR 0002 documenting the decision.
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 27, 2026

@yash-giantanalytics is attempting to deploy a commit to the EigenPal Team on Vercel.

A member of the Team first needs to authorize it.

@yash-giantanalytics
Copy link
Copy Markdown
Author

Opened on wrong repo, closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants