diff --git a/apps/web/src/lib/server/config-file/__tests__/schema.test.ts b/apps/web/src/lib/server/config-file/__tests__/schema.test.ts index 35fb15649..76d0467df 100644 --- a/apps/web/src/lib/server/config-file/__tests__/schema.test.ts +++ b/apps/web/src/lib/server/config-file/__tests__/schema.test.ts @@ -36,6 +36,15 @@ describe('parseQuackbackConfig', () => { expect(result.success).toBe(true) }) + it('accepts the rebranded config kind', () => { + const result = parseQuackbackConfig({ + apiVersion: 'quackback.io/v1', + kind: 'quackbackConfig', + spec: {}, + }) + expect(result.success).toBe(true) + }) + it('rejects a missing apiVersion', () => { const result = parseQuackbackConfig({ kind: 'QuackbackConfig', spec: {} }) expect(result.success).toBe(false) diff --git a/apps/web/src/lib/server/config-file/schema.ts b/apps/web/src/lib/server/config-file/schema.ts index 71037a8e6..73d7c37e2 100644 --- a/apps/web/src/lib/server/config-file/schema.ts +++ b/apps/web/src/lib/server/config-file/schema.ts @@ -126,7 +126,9 @@ const authSchema = z export const quackbackConfigSchema = z .object({ apiVersion: z.literal('quackback.io/v1'), - kind: z.literal('QuackbackConfig'), + // Accept both the original public discriminator and the rebranded + // spelling so existing managed deployments continue to reconcile. + kind: z.enum(['QuackbackConfig', 'quackbackConfig']), metadata: z.object({ source: z.string().optional() }).strict().optional(), spec: z .object({