Skip to content

Pin shared Yjs stack across client and server for lockstep bumps - #23783

Open
myabc wants to merge 4 commits into
devfrom
housekeeping/dependabot-hocuspocus-groups-yjs-transitive
Open

Pin shared Yjs stack across client and server for lockstep bumps#23783
myabc wants to merge 4 commits into
devfrom
housekeeping/dependabot-hocuspocus-groups-yjs-transitive

Conversation

@myabc

@myabc myabc commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Note

This PR is based off #23782

Ticket

Stacked on #23782 · Related: #23755

What are you trying to accomplish?

Follow-up to #23782. Keeps the shared Yjs layer (yjs + y-protocols) aligned between the collaboration client (/frontend) and server (/extensions/op-blocknote-hocuspocus), which is the layer both artifacts actually serialize to each other.

Both reach yjs/y-protocols transitively via BlockNote — not via the @hocuspocus/* packages, which only share lib0/@hocuspocus/common (and common is locked to the hocuspocus major, so it can't be pinned independently). The packages are declared as direct deps in both manifests so Dependabot tracks them, and a new yjs group uses group-by: dependency-name to merge each into a single cross-directory PR instead of one per directory.

What approach did you choose and why?

group-by: dependency-name only merges a dependency of the same name across directories — which is exactly the case here once yjs/y-protocols are direct deps in both manifests. This is distinct from #23782's @hocuspocus/* grouping, which can't span directories (different names).

Caveats reviewers should weigh:

  • This aligns the Yjs stack, not the @hocuspocus/* packages themselves — those still bump in separate PRs.
  • These are effectively pinned direct deps we don't import directly; ranges are kept compatible with what BlockNote requires (resolution is unchanged — the lockfile updates only record them as direct).
  • npm support for group-by is still beta and has been reported to fall back to per-directory PRs; the runtime version-skew guard in hocuspocus: Add provider/server wire-protocol integration test with CI version-skew guard #23755 remains the real compatibility safety net.

Merge checklist

  • Added/updated tests
  • Added/updated documentation in Lookbook (patterns, previews, etc)
  • Tested major browsers (Chrome, Firefox, Edge, ...)

myabc added 4 commits June 16, 2026 17:40
Uses `directories` rather than repeated `directory` entries, so one
Dependabot update config scans multiple manifests.
Adds a `hocuspocus` group so `@hocuspocus/server` and `extension-logger`
bump together in the extension directory's PR.

Client (`@hocuspocus/provider`, frontend) and server still land in
separate PRs — Dependabot can't lockstep differently-named packages
across directories; the #23755 skew guard covers that.
Reorders the existing group definitions A–Z for easier scanning; no
behavior change.
`yjs` and `y-protocols` reach both the collab client (`/frontend`) and
server (the extension) transitively via BlockNote, not via the
`@hocuspocus/*` packages themselves. Declaring them as direct deps lets
Dependabot track them, and the new `yjs` group uses
`group-by: dependency-name` to merge each into one cross-directory PR —
keeping the shared CRDT/sync layer aligned across both artifacts.
Copilot AI review requested due to automatic review settings June 16, 2026 17:15
@myabc
myabc requested a review from akabiru June 16, 2026 17:16
@myabc myabc added ci dependencies Pull requests that update a dependency file experiment maintenance javascript Pull requests that update Javascript code labels Jun 16, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR ensures the shared Yjs CRDT/sync layer (yjs + y-protocols) is explicitly tracked in both the collaboration client (frontend) and the collaboration server extension (extensions/op-blocknote-hocuspocus), enabling Dependabot to propose lockstep updates across both artifacts.

Changes:

  • Add yjs and y-protocols as direct dependencies in frontend and op-blocknote-hocuspocus.
  • Update both package-lock.json files to reflect these dependencies as direct deps.
  • Extend .github/dependabot.yml with a yjs group using group-by: dependency-name to merge cross-directory updates per dependency.

Reviewed changes

Copilot reviewed 3 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
frontend/package.json Adds yjs and y-protocols as direct dependencies for the client.
frontend/package-lock.json Records yjs and y-protocols as direct deps in the frontend lockfile.
extensions/op-blocknote-hocuspocus/package.json Adds yjs and y-protocols as direct dependencies for the server extension.
extensions/op-blocknote-hocuspocus/package-lock.json Records yjs and y-protocols as direct deps in the extension lockfile.
.github/dependabot.yml Introduces a yjs group using group-by: dependency-name to generate cross-directory update PRs.
Files not reviewed (2)
  • extensions/op-blocknote-hocuspocus/package-lock.json: Generated file
  • frontend/package-lock.json: Generated file

Base automatically changed from housekeeping/dependabot-hocuspocus-groups to dev June 23, 2026 06:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci dependencies Pull requests that update a dependency file experiment javascript Pull requests that update Javascript code maintenance

Development

Successfully merging this pull request may close these issues.

2 participants