diff --git a/web/standalone/vite.config.ts b/web/standalone/vite.config.ts index 701d5a8..306652b 100644 --- a/web/standalone/vite.config.ts +++ b/web/standalone/vite.config.ts @@ -40,6 +40,11 @@ export default defineConfig({ alias: { "@": path.resolve(__dirname, "./src"), }, + // @pcbjam/shared is in a second pnpm workspace with its own `yjs`; dedupe so + // the bundled editor links ONE yjs (a mutable, instanceof-checked singleton). + // Without it shared's collab code (kicad-y) and the app's yjs are two + // instances → "Unexpected content type" the moment a doc is seeded. + dedupe: ["yjs"], }, server: { // Default :3048. The closed `pnpm dev:gpl` runs a second editor instance on diff --git a/web/standalone/vitest.config.ts b/web/standalone/vitest.config.ts index 62549f3..968f811 100644 --- a/web/standalone/vitest.config.ts +++ b/web/standalone/vitest.config.ts @@ -7,6 +7,11 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ resolve: { alias: { "@": path.resolve(__dirname, "./src") }, + // @pcbjam/shared lives in a second pnpm workspace, so without this its `yjs` + // and the standalone's `yjs` resolve to two physical copies → a Y.Map from + // one instance rejects Y types from the other ("Unexpected content type"). + // Force a single yjs (it's a shared mutable singleton — instanceof-checked). + dedupe: ["yjs"], }, test: { environment: "node",