From 3489876ed8088003d5ec3e730ba8ba77f5bf592e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 14 Mar 2026 10:49:14 +0000 Subject: [PATCH] Fix: Respect dateFormat of all datetime fields (incl. publishDate) during auto-save Co-authored-by: estruyf <2900833+estruyf@users.noreply.github.com> --- src/commands/Article.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/commands/Article.ts b/src/commands/Article.ts index 837262e1..7b5f7b0a 100644 --- a/src/commands/Article.ts +++ b/src/commands/Article.ts @@ -150,7 +150,10 @@ export class Article { } const cloneArticle = Object.assign({}, article); - const dateField = await ArticleHelper.getModifiedDateField(article); + + // Fetch content type once and derive modified date field from it + const contentType = await ArticleHelper.getContentType(article); + const dateField = contentType.fields.find((f) => f.isModifiedDate); Logger.verbose(`Article:setLastModifiedDateInner:DateField - ${JSON.stringify(dateField)}`); try { @@ -160,6 +163,21 @@ export class Article { Logger.verbose( `Article:setLastModifiedDateInner:DateField name - ${fieldName} - value - ${fieldValue}` ); + + // Reformat other datetime fields that contain Date objects (e.g. from TOML parsing) + // using their configured dateFormat, so the format is preserved on save + for (const field of contentType.fields) { + if (field.type === 'datetime' && field.name !== fieldName) { + const value = cloneArticle.data[field.name]; + if (value instanceof Date) { + cloneArticle.data[field.name] = Article.formatDate(value, field.dateFormat); + Logger.verbose( + `Article:setLastModifiedDateInner:Reformat field - ${field.name} - value - ${cloneArticle.data[field.name]}` + ); + } + } + } + Logger.verbose(`Article:setLastModifiedDateInner:End`); return cloneArticle; } catch (e: unknown) {