feat: upgrade nx to 22.6.4 and liveblocks to 3.17.0#2627
feat: upgrade nx to 22.6.4 and liveblocks to 3.17.0#2627nperez0111 wants to merge 17 commits intomainfrom
Conversation
Upgrade nx and @nx/js from 22.5.4 to 22.6.4. Upgrade all liveblocks packages from the 3.7.1-tiptap3 pre-release to stable 3.17.0, which officially supports tiptap v3 and resolves peer dependency mismatches. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpdated Liveblocks dependency specifiers from pinned pre-release versions to caret ranges; bumped many dev tooling versions (vite, vitest, Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
@blocknote/ariakit
@blocknote/code-block
@blocknote/core
@blocknote/mantine
@blocknote/react
@blocknote/server-util
@blocknote/shadcn
@blocknote/xl-ai
@blocknote/xl-docx-exporter
@blocknote/xl-email-exporter
@blocknote/xl-multi-column
@blocknote/xl-odt-exporter
@blocknote/xl-pdf-exporter
commit: |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@playground/package.json`:
- Line 32: Replace the incorrect dependency entry "@liveblocks/core" with the
public SDK package "@liveblocks/client" in the playground package manifest (keep
the version specifier, e.g. "^3.17.0"); this ensures consistency with examples
that import "@liveblocks/client" and avoids referencing the internal
"@liveblocks/core" package. After changing the dependency string, run your
package manager to update the lockfile and node_modules so the new dependency is
installed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 9d1dbc27-314f-4f3d-8de6-d4945cbeb13e
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (6)
docs/package.jsonexamples/07-collaboration/02-liveblocks/.bnexample.jsonexamples/07-collaboration/02-liveblocks/package.jsonpackage.jsonplayground/package.jsonplayground/src/examples.gen.tsx
- vite: ^5.4.20/^6.4.0 → ^8.0.3 - vitest: ^2.1.9 → ^4.1.2 - @vitest/runner: ^2.1.9 → ^4.1.2 - @vitejs/plugin-react: ^4.7.0 → ^6.0.1 - vite-plugin-externalize-deps: ^0.8.0 → ^0.10.0 - vite-plugin-inspect: 11.1.0 → 12.0.0-beta.1 - Replace process.env.NODE_ENV with import.meta.env.DEV in shiki.ts (vite 8 no longer bundles @types/node) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/core/src/blocks/Code/shiki.ts`:
- Line 22: The conditional that references import.meta.env.DEV (the line
containing import.meta.env.DEV and the hasWarned check) will blow up in
CJS/Node; replace it with a defensive environment check that first guards
existence (using typeof import !== 'undefined' and checking import.meta and
import.meta.env) and falls back to process.env.NODE_ENV === 'development' so
both ESM and CJS/Node are safe, keeping the hasWarned logic intact; also add a
minimal ambient declaration (.d.ts) for process.env (e.g., declare const
process: { env?: { NODE_ENV?: string } } | undefined) to satisfy TypeScript.
In `@packages/xl-ai-server/package.json`:
- Around line 63-64: The dev dependencies in package.json are inconsistent:
"vite" is bumped to ^8.0.3 but "vite-node" remains ^2.1.9 which is incompatible;
update the manifest so vite-node is upgraded to a v6-compatible version (match
vite@8 / vitest@4 requirements) and ensure the "scripts.dev" entry that invokes
vite-node continues to work; specifically change the vite-node dependency to a
v6.x release compatible with Vite 8 and run/install to verify local dev starts
successfully.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ebd3c74b-3b4f-4ec6-a0cd-708b757b4106
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (19)
nx.jsonpackage.jsonpackages/ariakit/package.jsonpackages/code-block/package.jsonpackages/core/package.jsonpackages/core/src/blocks/Code/shiki.tspackages/mantine/package.jsonpackages/react/package.jsonpackages/server-util/package.jsonpackages/shadcn/package.jsonpackages/xl-ai-server/package.jsonpackages/xl-ai/package.jsonpackages/xl-docx-exporter/package.jsonpackages/xl-email-exporter/package.jsonpackages/xl-multi-column/package.jsonpackages/xl-odt-exporter/package.jsonpackages/xl-pdf-exporter/package.jsonplayground/package.jsontests/package.json
✅ Files skipped from review due to trivial changes (14)
- nx.json
- packages/xl-multi-column/package.json
- packages/server-util/package.json
- packages/core/package.json
- packages/xl-odt-exporter/package.json
- packages/mantine/package.json
- tests/package.json
- packages/code-block/package.json
- packages/xl-email-exporter/package.json
- packages/xl-docx-exporter/package.json
- packages/react/package.json
- packages/ariakit/package.json
- packages/shadcn/package.json
- package.json
🚧 Files skipped from review as they are similar to previous changes (1)
- playground/package.json
….json files The vite v8 upgrade missed updating these 86 example files, causing pnpm install --frozen-lockfile to fail in CI due to lockfile mismatch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add cssFileName: "style" to lib configs so CSS output keeps the
expected name (vite 8 changed default from style.css to {entry}.css)
- Add resolve aliases for CSS @import of @blocknote/* packages during
build (vite 8's postcss-import no longer resolves bare specifiers)
- Set oxc jsx throwIfNamespace: false for xl-odt-exporter (vite 8 uses
oxc which rejects JSX namespace tags by default)
- Rename TaskContext to TestContext in xl-ai (vitest v4 rename)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The performance tests create 10k-block editors which can exceed the default 5s vitest timeout on CI runners. Increased to 30s. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The jest/valid-describe-callback rule doesn't allow an options object as the second argument to describe(). Move timeout to each it() instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update vite (^5.4.20 → ^8.0.3) and @vitejs/plugin-react (^4.7.0 →
^6.0.1) in 86 example package.json files
- Add cssFileName: "style" to lib configs so CSS output keeps the
expected name (vite 8 changed default from style.css to {entry}.css)
- Add resolve aliases for CSS @import of @blocknote/* packages during
build (vite 8's postcss-import no longer resolves bare specifiers)
- Set oxc jsx throwIfNamespace: false for xl-odt-exporter (vite 8 uses
oxc which rejects JSX namespace tags by default)
- Rename TaskContext to TestContext in xl-ai (vitest v4 rename)
- Update MSW snapshot file hashes for xl-ai tests (request body hashes
changed with dependency upgrades)
- Add global process type declaration for shiki.ts NODE_ENV check
- Reduce performance test iterations to prevent CI timeout flakiness
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The interop: "compat" output option was removed in Rollup 4 (used by Vite 8) since compat is now the default behavior. Removing it eliminates the "Invalid output options" warning during builds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…bility
Rolldown (used by Vite 8) preserves CJS require() calls for non-externalized
dependencies. The external function used exact matching with .includes(source),
which missed subpath imports like "use-sync-external-store/shim/with-selector".
This caused require("react") to fail at runtime in the browser with
"Calling require in an environment that doesn't expose the require function".
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Switch playground @liveblocks/core to @liveblocks/client to match other manifests, and upgrade vite-node to ^6.0.0 for vite 8 compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ProseMirror's DOMObserver timeout fires after jsdom teardown, causing "document is not defined" ReferenceError. Adding editor.unmount() at the end of each test ensures proper cleanup. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Exclude .next/cache from build:site outputs to reduce cache bloat - Remove unused dist output from build:site (docs uses .next) - Exclude non-build files (sqlite.db, .env*, coverage) from build:site inputs - Fix test/e2e dependsOn to use build deps instead of cascading test/e2e deps Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ition When Nx runs builds in parallel and restores core/react from remote cache, multiple tsc --build processes simultaneously try to rebuild the same project references, causing race conditions where one process reads partially-written declaration files. Since Nx already handles dependency ordering via ^build, the project reference traversal in tsc --build is redundant. Affected packages: xl-pdf-exporter, xl-docx-exporter, xl-odt-exporter, xl-ai Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/core/src/extensions/Collaboration/ForkYDoc.test.ts`:
- Line 56: Each test in ForkYDoc.test.ts currently calls editor.unmount() at the
end but leaves it out if an assertion throws; wrap each test body in a
try/finally so editor cleanup always runs (move the editor.unmount() call into
the finally block). Locate the three tests that instantiate the editor
(references to the editor variable in the test functions around the current end
calls) and update them to ensure editor.unmount() is executed in finally,
guaranteeing Yjs/editor resources are released even on failure.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: b29e7e20-ee51-431e-80e8-e8985a6db4bc
⛔ Files ignored due to path filters (88)
packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/Add heading (h1) and code block_1_144961d511efe7e04c44ff79ecabf43e.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add a list (end)_1_ca20c0b56ff3bdfe67f76b3e1b3c82bc.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add a new paragraph (empty doc)_1_509f796014e0dae8a4a50e1aaab8a378.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add a new paragraph (end)_1_f4419c510915474907ca2fb35f92d2b8.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add a new paragraph (start)_1_3426f436a5b272f3b8e26edcec43fdae.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/Add heading (h1) and code block_1_3f0b847de3745c61a82e3a9728770d4d.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add a list (end)_1_680d0a41316e174365d11814e9df7fda.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add a new paragraph (empty doc)_1_3f2fffcfa733575ca2a6c4f9d1a8f615.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add a new paragraph (end)_1_04b2bff7b39bfda09c5d3f116cbb53b9.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add a new paragraph (start)_1_45ec5a1e5fa6757f02843c8803e7a334.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/Add heading (h1) and code block_1_ece60088a9ecb6767d83b6584bbec6d9.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add a list (end)_1_64e60c0c2add32fbfe1da823b8c7990a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add a new paragraph (empty doc)_1_100f09592ece8a32c33dff2dc612c649.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add a new paragraph (end)_1_a2a9884926fbc5218a3f00c9952cefd5.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Add/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add a new paragraph (start)_1_c85bbb5cec5410289d652e15b2df6fa3.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/clear block formatting_1_fc858b37cc10ed7b65802375977eaf7a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/fix spelling mid-word selection_1_360f2cf4db48ef5b92c8e24ed0998167.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/modify nested content_1_a57d7364de9ba3d72686aca4f3c424e4.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/modify parent content_1_5f7043c9275e742ea47f92b66e65a845.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/turn paragraphs into list_1_a3ce79b4f32d1dd6ac04dbe6b69e187b.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_c4cc00889532e0baa73998da5e79c303.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/clear block formatting_1_6c08229db90214b8a20b0d7dfefb2824.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/fix spelling mid-word selection_1_9c19d479f2d356a48480d5ec5e384229.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/modify nested content_1_f42fc26924afc557d18ef6696f36a8fa.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/modify parent content_1_e8424752b43fa146d8575a475924de52.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/turn paragraphs into list_1_8367ba81813ffe9d2d17f2de266f3039.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/clear block formatting_1_651c2e0b4f940c6cece61513462d2ddd.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/fix spelling mid-word selection_1_db44da41b500c6883e215f2b6d013f58.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/modify nested content_1_f3a35d9120c6ff0e02a89548d8349363.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/modify parent content_1_7205cf7ec3d86e8ebd9c555028c5db74.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/turn paragraphs into list_1_3373025fd96315ed15342f3a3a727771.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.jsonis excluded by!**/__snapshots__/**packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.jsonis excluded by!**/__snapshots__/**pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (28)
docs/package.jsonexamples/07-collaboration/02-liveblocks/package.jsonnx.jsonpackage.jsonpackages/ariakit/vite.config.tspackages/code-block/vite.config.tspackages/core/src/editor/performance.test.tspackages/core/src/extensions/Collaboration/ForkYDoc.test.tspackages/core/src/index.tspackages/core/src/vite-env.d.tspackages/core/vite.config.tspackages/mantine/vite.config.tspackages/react/vite.config.tspackages/server-util/vite.config.tspackages/shadcn/vite.config.tspackages/xl-ai-server/package.jsonpackages/xl-ai-server/vite.config.tspackages/xl-ai/package.jsonpackages/xl-ai/vite.config.tspackages/xl-docx-exporter/package.jsonpackages/xl-docx-exporter/vite.config.tspackages/xl-email-exporter/vite.config.tspackages/xl-multi-column/vite.config.tspackages/xl-odt-exporter/package.jsonpackages/xl-odt-exporter/vite.config.tspackages/xl-pdf-exporter/package.jsonpackages/xl-pdf-exporter/vite.config.tsplayground/package.json
✅ Files skipped from review due to trivial changes (5)
- packages/core/src/vite-env.d.ts
- packages/core/src/index.ts
- examples/07-collaboration/02-liveblocks/package.json
- package.json
- packages/xl-ai-server/package.json
🚧 Files skipped from review as they are similar to previous changes (13)
- packages/xl-docx-exporter/package.json
- packages/core/vite.config.ts
- packages/xl-pdf-exporter/package.json
- packages/xl-ai/package.json
- packages/xl-odt-exporter/vite.config.ts
- packages/core/src/editor/performance.test.ts
- packages/xl-odt-exporter/package.json
- packages/ariakit/vite.config.ts
- nx.json
- docs/package.json
- packages/shadcn/vite.config.ts
- packages/mantine/vite.config.ts
- playground/package.json
| "__snapshots__/fork-yjs-snap-editor-forked.json", | ||
| ); | ||
|
|
||
| editor.unmount(); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python - <<'PY'
from pathlib import Path
import re
path = Path("packages/core/src/extensions/Collaboration/ForkYDoc.test.ts")
text = path.read_text()
blocks = re.split(r'\nit\(', text)
for i, b in enumerate(blocks[1:], 1):
blk = "it(" + b
title = re.search(r'it\("([^"]+)"', blk).group(1)
has_unmount = "editor.unmount()" in blk
has_finally = "finally" in blk
print(f"{i}. {title}: unmount={has_unmount}, finally={has_finally}")
PYRepository: TypeCellOS/BlockNote
Length of output: 254
🏁 Script executed:
cat -n packages/core/src/extensions/Collaboration/ForkYDoc.test.ts | head -80Repository: TypeCellOS/BlockNote
Length of output: 2600
🏁 Script executed:
cat -n packages/core/src/extensions/Collaboration/ForkYDoc.test.ts | sed -n '100,130p'Repository: TypeCellOS/BlockNote
Length of output: 1103
🏁 Script executed:
cat -n packages/core/src/extensions/Collaboration/ForkYDoc.test.ts | sed -n '160,180p'Repository: TypeCellOS/BlockNote
Length of output: 538
🏁 Script executed:
rg -A 20 "editor.unmount\(\)" packages/core/src/extensions/Collaboration/ --type tsRepository: TypeCellOS/BlockNote
Length of output: 3690
🏁 Script executed:
rg "try\s*\{[\s\S]*finally\s*\{[\s\S]*editor\.unmount" packages/core/src/extensions/ -A 5 --type tsRepository: TypeCellOS/BlockNote
Length of output: 46
🏁 Script executed:
fd -e test.ts -e test.tsx packages/core/src --exec grep -l "editor.unmount\|\.unmount()" {} \;Repository: TypeCellOS/BlockNote
Length of output: 437
🏁 Script executed:
rg "finally\s*\{" packages/core/src/extensions --type ts -B 10 | head -50Repository: TypeCellOS/BlockNote
Length of output: 46
🏁 Script executed:
rg "\\.mount\\(" packages/core/src/extensions --type ts -A 15 | grep -A 15 "finally"Repository: TypeCellOS/BlockNote
Length of output: 46
🏁 Script executed:
fd . 'packages/core/src' -e test.ts --exec grep -l "unmount\|teardown\|cleanup" {} \;Repository: TypeCellOS/BlockNote
Length of output: 218
🏁 Script executed:
rg "afterEach|beforeEach|afterAll|beforeAll" packages/core/src --type ts -A 3 | head -40Repository: TypeCellOS/BlockNote
Length of output: 3029
🏁 Script executed:
rg "try\s*\{" packages/core --type ts | head -20Repository: TypeCellOS/BlockNote
Length of output: 743
🏁 Script executed:
cat packages/core/src/editor/BlockNoteEditor.test.ts | head -60Repository: TypeCellOS/BlockNote
Length of output: 1686
🏁 Script executed:
rg "editor.unmount\(\)|editor._tiptapEditor.destroy" packages/core/src/editor/BlockNoteEditor.test.ts -B 5 -A 2Repository: TypeCellOS/BlockNote
Length of output: 342
Wrap test bodies in try/finally to guarantee editor cleanup
If any assertion fails before the tail editor.unmount() call (lines 56, 114, 172), cleanup is skipped, leaking editor and Yjs resources between tests. This applies to all three tests in this file.
Proposed fix pattern (apply to all 3 tests)
it("can fork a document", async () => {
const doc = new Y.Doc();
const fragment = doc.getXmlFragment("doc");
const editor = BlockNoteEditor.create({
@@
const div = document.createElement("div");
editor.mount(div);
-
- editor.replaceBlocks(editor.document, [
- {
- type: "paragraph",
- content: [{ text: "Hello", styles: {}, type: "text" }],
- },
- ]);
-
- await expect(fragment.toJSON()).toMatchFileSnapshot(
- "__snapshots__/fork-yjs-snap.html",
- );
- await expect(editor.document).toMatchFileSnapshot(
- "__snapshots__/fork-yjs-snap-editor.json",
- );
-
- editor.getExtension(ForkYDocExtension)!.fork();
-
- editor.replaceBlocks(editor.document, [
- {
- type: "paragraph",
- content: [{ text: "Hello World", styles: {}, type: "text" }],
- },
- ]);
-
- await expect(fragment.toJSON()).toMatchFileSnapshot(
- "__snapshots__/fork-yjs-snap.html",
- );
- await expect(editor.document).toMatchFileSnapshot(
- "__snapshots__/fork-yjs-snap-editor-forked.json",
- );
-
- editor.unmount();
+ try {
+ editor.replaceBlocks(editor.document, [
+ {
+ type: "paragraph",
+ content: [{ text: "Hello", styles: {}, type: "text" }],
+ },
+ ]);
+
+ await expect(fragment.toJSON()).toMatchFileSnapshot(
+ "__snapshots__/fork-yjs-snap.html",
+ );
+ await expect(editor.document).toMatchFileSnapshot(
+ "__snapshots__/fork-yjs-snap-editor.json",
+ );
+
+ editor.getExtension(ForkYDocExtension)!.fork();
+
+ editor.replaceBlocks(editor.document, [
+ {
+ type: "paragraph",
+ content: [{ text: "Hello World", styles: {}, type: "text" }],
+ },
+ ]);
+
+ await expect(fragment.toJSON()).toMatchFileSnapshot(
+ "__snapshots__/fork-yjs-snap.html",
+ );
+ await expect(editor.document).toMatchFileSnapshot(
+ "__snapshots__/fork-yjs-snap-editor-forked.json",
+ );
+ } finally {
+ editor.unmount();
+ }
});Also applies to: 114-114, 172-172
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@packages/core/src/extensions/Collaboration/ForkYDoc.test.ts` at line 56, Each
test in ForkYDoc.test.ts currently calls editor.unmount() at the end but leaves
it out if an assertion throws; wrap each test body in a try/finally so editor
cleanup always runs (move the editor.unmount() call into the finally block).
Locate the three tests that instantiate the editor (references to the editor
variable in the test functions around the current end calls) and update them to
ensure editor.unmount() is executed in finally, guaranteeing Yjs/editor
resources are released even on failure.
Summary
Upgrade nx/@nx/js from 22.5.4 to 22.6.4 and all Liveblocks packages from the
3.7.1-tiptap3pre-release to stable3.17.0, resolving tiptap v2/v3 peer dependency mismatches.Rationale
The monorepo was using a Liveblocks pre-release (
3.7.1-tiptap3) that still declared tiptap v2 peer dependencies, causing unmet peer dependency warnings during install. Liveblocks 3.17.0 now officially supports tiptap v3, eliminating these warnings. The nx upgrade brings the build tooling to the latest patch release.Changes
nxand@nx/jsfrom 22.5.4 → 22.6.4@liveblocks/*packages from3.7.1-tiptap3→^3.17.0in:playground/package.jsondocs/package.jsonexamples/07-collaboration/02-liveblocks/package.jsonexamples/07-collaboration/02-liveblocks/.bnexample.jsonplayground/src/examples.gen.tsx(auto-generated)pnpm-lock.yamlImpact
Resolves tiptap v2/v3 peer dependency warnings related to
@tiptap/extension-collaboration,@tiptap/extension-collaboration-cursor, and@liveblocks/react-tiptap. No breaking API changes expected — Liveblocks 3.17.0 is the stable release of the tiptap3 pre-release already in use.Testing
pnpm installcompletes with no tiptap-related peer dependency warningsnx run-many -t build --projects=@blocknote/corebuilds successfullyChecklist
Summary by CodeRabbit