Skip to content

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

Merged
yash-giantanalytics merged 21 commits intomainfrom
feat/legal-review-features-v2
Mar 28, 2026
Merged

feat: legal review features, collab editing, upstream PR sync#1
yash-giantanalytics merged 21 commits intomainfrom
feat/legal-review-features-v2

Conversation

@yash-giantanalytics
Copy link
Copy Markdown

Summary

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
  • Collab server connects to Supabase and syncs between two clients
  • Playwright E2E tests pass

erophames and others added 21 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.
- Create packages/react/src/test-utils/happyDomSetup.ts using
  @happy-dom/global-registrator for DOM environment in bun tests
- Run prettier on all files to fix formatting issues from PR eigenpal#132 merge
@yash-giantanalytics yash-giantanalytics merged commit e14a851 into main Mar 28, 2026
2 checks passed
@yash-giantanalytics yash-giantanalytics deleted the feat/legal-review-features-v2 branch March 28, 2026 00:47
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