From 4049a73c6bd6d25b1516150ac49f7d885ab3c61e Mon Sep 17 00:00:00 2001 From: ginnoir Date: Tue, 2 Jun 2026 18:15:12 -0500 Subject: [PATCH] fix(garden): accept relative urls for plant image uploads Zod v4 changed .url() to use the WHATWG URL spec, which rejects relative paths like /api/uploads/... that our upload API returns. Relax image URL validators to z.string().min(1) since these are internal paths. --- src/modules/garden/server/actions.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/garden/server/actions.ts b/src/modules/garden/server/actions.ts index 261eafd..da1329f 100644 --- a/src/modules/garden/server/actions.ts +++ b/src/modules/garden/server/actions.ts @@ -118,8 +118,8 @@ const plantInput = z.object({ fertilizingNotes: z.string().trim().max(2000).nullable().optional(), notes: z.string().trim().max(2000).nullable().optional(), acquisitionDate: z.string().nullable().optional(), - images: z.array(z.string().url()).max(10).default([]), - primaryImageUrl: z.string().url().nullable().optional(), + images: z.array(z.string().min(1)).max(10).default([]), + primaryImageUrl: z.string().min(1).nullable().optional(), }); export async function createPlant(input: z.input) { @@ -230,7 +230,7 @@ export async function deletePlant(input: { id: string }) { } export async function addPlantImage(input: { id: string; url: string }) { - const parsed = z.object({ id: z.string().uuid(), url: z.string().url() }).parse(input); + const parsed = z.object({ id: z.string().uuid(), url: z.string().min(1) }).parse(input); const { household } = await getCurrentSession(); await assertCanAccessPlant(parsed.id, household.id);