From 0d8d8202a55f85b3dd11a444166a5e41fb6195a8 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Tue, 3 Mar 2026 13:16:06 -0800 Subject: [PATCH] fix: normalize legacy space visibility values to 3-type model Co-Authored-By: Claude Opus 4.6 --- server/community-store.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/server/community-store.ts b/server/community-store.ts index 8b5a0a3..0936187 100644 --- a/server/community-store.ts +++ b/server/community-store.ts @@ -11,7 +11,15 @@ import { const STORAGE_DIR = process.env.STORAGE_DIR || "./data/communities"; -export type SpaceVisibility = 'public' | 'public_read' | 'authenticated' | 'members_only'; +export type SpaceVisibility = 'public' | 'permissioned' | 'private'; + +/** Normalize legacy visibility values to the current 3-type model. */ +export function normalizeVisibility(v: string): SpaceVisibility { + if (v === 'public_read' || v === 'public') return 'public'; + if (v === 'authenticated' || v === 'permissioned') return 'permissioned'; + if (v === 'members_only' || v === 'private') return 'private'; + return 'public'; +} // ── Nest Permissions & Policy ── @@ -243,6 +251,8 @@ export async function loadCommunity(slug: string): Promise(bytes); // Runtime migration: participant → member doc = migrateParticipantToMember(doc, slug); + // Runtime migration: normalize legacy visibility values + doc = migrateVisibility(doc, slug); communities.set(slug, doc); return doc; } catch (e) { @@ -261,6 +271,8 @@ export async function loadCommunity(slug: string): Promise