fix(settings): allow pagination size of 0 to disable pagination

The pageSize setting described '(0 = disable)' and the inbounds table already treated 0 as show-all, but every validation layer enforced a minimum of 1. Relax the bound to gte=0 in the AllSetting struct tag (source of truth for the generated frontend schemas), regenerate zod, and lower the min on the hand-written schema and the InputNumber control.
This commit is contained in:
MHSanaei
2026-06-02 14:54:11 +02:00
parent 66d4d04776
commit 2f12b34635
4 changed files with 5 additions and 5 deletions

View File

@@ -28,7 +28,7 @@ export const AllSettingSchema = z.object({
ldapUserAttr: z.string(),
ldapUserFilter: z.string(),
ldapVlessField: z.string(),
pageSize: z.number().int().min(1).max(1000),
pageSize: z.number().int().min(0).max(1000),
panelProxy: z.string(),
remarkModel: z.string(),
restartXrayOnClientDisable: z.boolean(),
@@ -116,7 +116,7 @@ export const AllSettingViewSchema = z.object({
ldapUserAttr: z.string(),
ldapUserFilter: z.string(),
ldapVlessField: z.string(),
pageSize: z.number().int().min(1).max(1000),
pageSize: z.number().int().min(0).max(1000),
panelProxy: z.string(),
remarkModel: z.string(),
restartXrayOnClientDisable: z.boolean(),

View File

@@ -180,7 +180,7 @@ export default function GeneralTab({ allSetting, updateSetting }: GeneralTabProp
</SettingListItem>
<SettingListItem paddings="small" title={t('pages.settings.pageSize')} description={t('pages.settings.pageSizeDesc')}>
<InputNumber value={allSetting.pageSize} min={1} max={1000} step={5} style={{ width: '100%' }}
<InputNumber value={allSetting.pageSize} min={0} max={1000} step={5} style={{ width: '100%' }}
onChange={(v) => updateSetting({ pageSize: Number(v) || 0 })} />
</SettingListItem>

View File

@@ -14,7 +14,7 @@ export const AllSettingSchema = z.object({
sessionMaxAge: z.number().int().min(1).max(525600).optional(),
trustedProxyCIDRs: z.string().optional(),
panelProxy: z.string().optional(),
pageSize: z.number().int().min(1).max(1000).optional(),
pageSize: z.number().int().min(0).max(1000).optional(),
expireDiff: nonNegativeInt.optional(),
trafficDiff: nonNegativeInt.max(100).optional(),
remarkModel: z.string().optional(),

View File

@@ -32,7 +32,7 @@ type AllSetting struct {
PanelProxy string `json:"panelProxy" form:"panelProxy"` // Proxy URL for the panel's own outbound requests (GitHub/Telegram)
// UI settings
PageSize int `json:"pageSize" form:"pageSize" validate:"gte=1,lte=1000"` // Number of items per page in lists
PageSize int `json:"pageSize" form:"pageSize" validate:"gte=0,lte=1000"` // Number of items per page in lists (0 disables pagination)
ExpireDiff int `json:"expireDiff" form:"expireDiff" validate:"gte=0"` // Expiration warning threshold in days
TrafficDiff int `json:"trafficDiff" form:"trafficDiff" validate:"gte=0,lte=100"` // Traffic warning threshold percentage
RemarkModel string `json:"remarkModel" form:"remarkModel"` // Remark model pattern for inbounds