Merge remote-tracking branch 'origin/main' into cms

This commit is contained in:
Kevin
2026-09-04 22:10:39 -04:00
2 changed files with 12 additions and 6 deletions
+9 -4
View File
@@ -278,12 +278,17 @@ collections:
pattern: ['^[\s\S]{30,180}$', 'Use 30–180 characters.'] pattern: ['^[\s\S]{30,180}$', 'Use 30–180 characters.']
- label: Publish date - label: Publish date
name: pubDate name: pubDate
widget: date widget: datetime
format: YYYY-MM-DD default: "{{now}}"
date_format: YYYY-MM-DD
time_format: false
picker_utc: true
- label: Updated date - label: Updated date
name: updatedDate name: updatedDate
widget: date widget: datetime
format: YYYY-MM-DD date_format: YYYY-MM-DD
time_format: false
picker_utc: true
required: false required: false
- label: Tags - label: Tags
name: tags name: tags
+3 -2
View File
@@ -101,8 +101,8 @@ const expectedCollections = {
fields: { fields: {
title: { widget: 'string', pattern: ['^.{12,100}$', 'Use 12–100 characters.'] }, title: { widget: 'string', pattern: ['^.{12,100}$', 'Use 12–100 characters.'] },
description: { widget: 'text', pattern: ['^[\\s\\S]{30,180}$', 'Use 30–180 characters.'] }, description: { widget: 'text', pattern: ['^[\\s\\S]{30,180}$', 'Use 30–180 characters.'] },
pubDate: { widget: 'date', format: 'YYYY-MM-DD' }, pubDate: { widget: 'datetime', default: '{{now}}', date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true },
updatedDate: { widget: 'date', format: 'YYYY-MM-DD', required: false }, updatedDate: { widget: 'datetime', date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true, required: false },
tags: { widget: 'list', min: 1, max: 4, field: { widget: 'string', pattern: ['^.{2,32}$', 'Use 2–32 characters.'] } }, tags: { widget: 'list', min: 1, max: 4, field: { widget: 'string', pattern: ['^.{2,32}$', 'Use 2–32 characters.'] } },
draft: { widget: 'boolean', default: false }, draft: { widget: 'boolean', default: false },
body: markdownField, body: markdownField,
@@ -153,6 +153,7 @@ for (const [fieldName, fieldContract] of Object.entries(expectedPageImageFields)
function visitField(field) { function visitField(field) {
assert(field.widget !== 'file', `General file widget is forbidden: ${field.name}.`); assert(field.widget !== 'file', `General file widget is forbidden: ${field.name}.`);
assert(field.widget !== 'date', `Unsupported Decap date widget is forbidden; use a date-only datetime widget: ${field.name}.`);
if (field.fields) field.fields.forEach(visitField); if (field.fields) field.fields.forEach(visitField);
if (field.field) visitField(field.field); if (field.field) visitField(field.field);
} }