From 0e61c48c861014db7dfa044eaa2bce9b41e21bac Mon Sep 17 00:00:00 2001 From: Lukas May Date: Thu, 5 Mar 2026 21:49:01 +0100 Subject: [PATCH] fix: Use lowercase alphanumeric nanoid for Docker compose project names Docker compose requires project names to be lowercase alphanumeric with hyphens/underscores only. The default nanoid alphabet includes uppercase and special characters, causing build failures. --- apps/server/preview/manager.test.ts | 2 +- apps/server/preview/manager.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/server/preview/manager.test.ts b/apps/server/preview/manager.test.ts index 14dc0cd..d668b6b 100644 --- a/apps/server/preview/manager.test.ts +++ b/apps/server/preview/manager.test.ts @@ -67,7 +67,7 @@ vi.mock('node:fs/promises', () => ({ })); vi.mock('nanoid', () => ({ - nanoid: vi.fn(() => 'abc123test'), + customAlphabet: vi.fn(() => vi.fn(() => 'abc123test')), })); import { PreviewManager } from './manager.js'; diff --git a/apps/server/preview/manager.ts b/apps/server/preview/manager.ts index 418e9ba..6806c4f 100644 --- a/apps/server/preview/manager.ts +++ b/apps/server/preview/manager.ts @@ -8,7 +8,7 @@ import { join } from 'node:path'; import { mkdir, writeFile, rm } from 'node:fs/promises'; -import { nanoid } from 'nanoid'; +import { customAlphabet } from 'nanoid'; import type { ProjectRepository } from '../db/repositories/project-repository.js'; import type { PhaseRepository } from '../db/repositories/phase-repository.js'; import type { InitiativeRepository } from '../db/repositories/initiative-repository.js'; @@ -116,7 +116,8 @@ export class PreviewManager { ); // 4. Generate ID and prepare deploy dir - const id = nanoid(10); + const previewNanoid = customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', 10); + const id = previewNanoid(); const projectName = `${COMPOSE_PROJECT_PREFIX}${id}`; const deployDir = join(this.workspaceRoot, PREVIEWS_DIR, id); await mkdir(deployDir, { recursive: true });