From 74e822134fc89d794fcc49503194bbd98a20b7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20T=C3=B6rcsv=C3=A1ri?= Date: Wed, 29 Jul 2026 20:44:58 +0200 Subject: [PATCH] =?UTF-8?q?fix(collab):=20filenames=20with=20spaces=20?= =?UTF-8?q?=E2=80=94=20canonical=20room=20DO=20name,=20injective=20ydoc=20?= =?UTF-8?q?keys=20+=20lazy=20open-triggered=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The partykit provider splices the room into the WS URL verbatim, so it now travels as ONE percent-encoded path segment (the sync worker decodes it at its edge); bumps pcbjam-shared for the injective key scheme. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01CfEPcy9dStnSfm1hmaiTe4 --- web/pcbjam-shared | 2 +- web/standalone/src/wasm/collab/provider.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/web/pcbjam-shared b/web/pcbjam-shared index 6189307..f8feab8 160000 --- a/web/pcbjam-shared +++ b/web/pcbjam-shared @@ -1 +1 @@ -Subproject commit 6189307bf50a3fc1d477f0616434e8c9e2f980b9 +Subproject commit f8feab8f8ac66a6a0bf5fa7dd1e83bf0d24b7d8d diff --git a/web/standalone/src/wasm/collab/provider.ts b/web/standalone/src/wasm/collab/provider.ts index 42b6f45..a87869d 100644 --- a/web/standalone/src/wasm/collab/provider.ts +++ b/web/standalone/src/wasm/collab/provider.ts @@ -91,7 +91,12 @@ async function partyKitProvider( params: ProviderConfig["params"], ): Promise { const { default: YProvider } = await import("y-partyserver/provider"); - const provider = new YProvider(endpoint, room, doc, { + // The provider splices the room into the WS URL verbatim, so it must travel + // as ONE percent-encoded path segment — otherwise a docPath containing + // `/`, ` `, `#`, `%` or `?` truncates or corrupts the room name. The sync + // worker decodes it once at its edge; the decoded string is the canonical + // room/DO name everywhere. + const provider = new YProvider(endpoint, encodeURIComponent(room), doc, { party: PARTYKIT_PARTY, connect: true, params,