From 27a7b72984b5f2b9888dbb25a43b6dd1cd913111 Mon Sep 17 00:00:00 2001 From: glass beadian Date: Mon, 12 Oct 2026 22:47:48 +0000 Subject: [PATCH] Provisioner: normalize bare room IDs to full !id:server form (tuwunel returns localpart) --- apps/api/src/collectives/provisioner.config.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/api/src/collectives/provisioner.config.ts b/apps/api/src/collectives/provisioner.config.ts index 5f5148b..d62483f 100644 --- a/apps/api/src/collectives/provisioner.config.ts +++ b/apps/api/src/collectives/provisioner.config.ts @@ -115,7 +115,13 @@ export class MatrixHttpClient implements MatrixAdminPort { if (typeof body.room_id !== "string" || body.room_id === "") { throw new ProvisionerUnavailableError("createRoom response missing room_id"); } - return { roomId: body.room_id }; + // Some homeservers return the bare localpart; the full room ID carries the + // server name, and every downstream consumer (DB checks, invites, joins) + // requires the complete form. + const roomId = body.room_id.includes(":") + ? body.room_id + : `${body.room_id}:${this.config.homeserverUrl.host}`; + return { roomId }; } async sendStateEvent(