From e5b4caccdf5b3cf45d104951e860f1a0c34e693f Mon Sep 17 00:00:00 2001 From: Kevin Date: Fri, 4 Sep 2026 22:00:33 -0400 Subject: [PATCH] Fix CMS journal date controls --- public/admin/config.yml | 13 +++++++++---- scripts/verify-decap.mjs | 5 +++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/public/admin/config.yml b/public/admin/config.yml index e382633..97f48a8 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -278,12 +278,17 @@ collections: pattern: ['^[\s\S]{30,180}$', 'Use 30–180 characters.'] - label: Publish date name: pubDate - widget: date - format: YYYY-MM-DD + widget: datetime + default: "{{now}}" + date_format: YYYY-MM-DD + time_format: false + picker_utc: true - label: Updated date name: updatedDate - widget: date - format: YYYY-MM-DD + widget: datetime + date_format: YYYY-MM-DD + time_format: false + picker_utc: true required: false - label: Tags name: tags diff --git a/scripts/verify-decap.mjs b/scripts/verify-decap.mjs index b7a8b86..f28e33a 100644 --- a/scripts/verify-decap.mjs +++ b/scripts/verify-decap.mjs @@ -101,8 +101,8 @@ const expectedCollections = { fields: { title: { widget: 'string', pattern: ['^.{12,100}$', 'Use 12–100 characters.'] }, description: { widget: 'text', pattern: ['^[\\s\\S]{30,180}$', 'Use 30–180 characters.'] }, - pubDate: { widget: 'date', format: 'YYYY-MM-DD' }, - updatedDate: { widget: 'date', format: 'YYYY-MM-DD', required: false }, + pubDate: { widget: 'datetime', default: '{{now}}', date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true }, + 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.'] } }, draft: { widget: 'boolean', default: false }, body: markdownField, @@ -153,6 +153,7 @@ for (const [fieldName, fieldContract] of Object.entries(expectedPageImageFields) function visitField(field) { 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.field) visitField(field.field); }