Compare commits

...

2 Commits

Author SHA1 Message Date
Jeff Emmett 8f788fcf93 Merge branch 'dev'
CI/CD / deploy (push) Successful in 2m23s Details
2026-04-15 16:09:38 -04:00
Jeff Emmett 030d69b29f fix(routing): redirect module-as-subdomain to demo instead of treating as space
rcred.rspace.online was being treated as a space slug, triggering
auto-provision + redirect to /rspace. Now any subdomain matching a
known module ID (rcred, rvote, etc.) redirects to demo.rspace.online/{moduleId}.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 16:09:32 -04:00
1 changed files with 8 additions and 0 deletions

View File

@ -4070,6 +4070,14 @@ const server = Bun.serve<WSData>({
// ── Subdomain routing: {space}.rspace.online/{moduleId}/... ──
if (subdomain) {
// ── Guard: module IDs are not space slugs ──
// Redirect rcred.rspace.online → demo.rspace.online/rcred (not a space)
const allModuleIds = new Set(getAllModules().map(m => m.id));
if (allModuleIds.has(subdomain.toLowerCase())) {
const pathSuffix = url.pathname === "/" ? "" : url.pathname;
return Response.redirect(`${proto}//demo.rspace.online/${subdomain}${pathSuffix}${url.search}`, 302);
}
// ── Auto-provision personal space on first visit ──
// Fast path: communityExists is an in-memory Map check for cached spaces.
if (!(await communityExists(subdomain))) {