From 39b716409af1035f0e2fbfde2b20e8b351f7218d Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Mon, 1 Jun 2026 17:47:24 +0200 Subject: [PATCH] fix(settings): enforce trafficDiff max of 100 in UI (#4769) The trafficDiff InputNumber and form schema lacked an upper bound, so values above 100 were accepted in the UI but rejected by the backend (gte=0,lte=100), failing the entire settings save with a misleading 'request body failed validation' error. Add max=100 to the input and .max(100) to the schema. --- frontend/src/pages/settings/GeneralTab.tsx | 2 +- frontend/src/schemas/setting.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/settings/GeneralTab.tsx b/frontend/src/pages/settings/GeneralTab.tsx index 4b07c496..076eb8f5 100644 --- a/frontend/src/pages/settings/GeneralTab.tsx +++ b/frontend/src/pages/settings/GeneralTab.tsx @@ -205,7 +205,7 @@ export default function GeneralTab({ allSetting, updateSetting }: GeneralTabProp onChange={(v) => updateSetting({ expireDiff: Number(v) || 0 })} /> - updateSetting({ trafficDiff: Number(v) || 0 })} /> diff --git a/frontend/src/schemas/setting.ts b/frontend/src/schemas/setting.ts index e9f5276e..e5fd5438 100644 --- a/frontend/src/schemas/setting.ts +++ b/frontend/src/schemas/setting.ts @@ -16,7 +16,7 @@ export const AllSettingSchema = z.object({ panelProxy: z.string().optional(), pageSize: z.number().int().min(1).max(1000).optional(), expireDiff: nonNegativeInt.optional(), - trafficDiff: nonNegativeInt.optional(), + trafficDiff: nonNegativeInt.max(100).optional(), remarkModel: z.string().optional(), datepicker: z.enum(['gregorian', 'jalalian']).optional(), tgBotEnable: z.boolean().optional(),