From 437554cdc927bb04829547820b58a861ab63d3fc Mon Sep 17 00:00:00 2001 From: Sven Date: Mon, 16 Mar 2026 00:36:55 +0100 Subject: [PATCH] fix(patches): always strip legacy ai-text-level keys on form save Hyphenated keys (ai-text-level, ai-code-level, etc.) from the upstream beta.41 endpoint are now unconditionally deleted on form submission, preventing them from coexisting with the camelCase equivalents in MongoDB. Co-Authored-By: Claude Sonnet 4.6 --- scripts/patch-endpoint-posts-ai-cleanup.mjs | 37 ++++++++++++++++----- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/scripts/patch-endpoint-posts-ai-cleanup.mjs b/scripts/patch-endpoint-posts-ai-cleanup.mjs index 4583fb47..86acf520 100644 --- a/scripts/patch-endpoint-posts-ai-cleanup.mjs +++ b/scripts/patch-endpoint-posts-ai-cleanup.mjs @@ -7,16 +7,9 @@ const candidates = [ "node_modules/@indiekit/indiekit/node_modules/@indiekit/endpoint-posts/lib/controllers/form.js", ]; -const marker = "Remove empty AI metadata fields so Micropub payload stays lean."; +const marker = "Always remove legacy hyphenated keys — superseded by camelCase equivalents."; const oldSnippet = [ - " // Easy MDE appends `image` value to formData for last image uploaded", - " delete values.image;", - "", - " const mf2 = jf2ToMf2({ properties: sanitise(values) });", -].join("\n"); - -const newSnippet = [ " // Easy MDE appends `image` value to formData for last image uploaded", " delete values.image;", "", @@ -43,6 +36,34 @@ const newSnippet = [ " const mf2 = jf2ToMf2({ properties: sanitise(values) });", ].join("\n"); +const newSnippet = [ + " // Easy MDE appends `image` value to formData for last image uploaded", + " delete values.image;", + "", + " // Remove empty AI metadata fields so Micropub payload stays lean.", + " for (const key of [", + " \"aiTextLevel\",", + " \"aiCodeLevel\",", + " \"aiTools\",", + " \"aiDescription\",", + " ]) {", + " if (", + " values[key] === undefined ||", + " values[key] === null ||", + " String(values[key]).trim() === \"\"", + " ) {", + " delete values[key];", + " }", + " }", + " // Always remove legacy hyphenated keys — superseded by camelCase equivalents.", + " delete values[\"ai-text-level\"];", + " delete values[\"ai-code-level\"];", + " delete values[\"ai-tools\"];", + " delete values[\"ai-description\"];", + "", + " const mf2 = jf2ToMf2({ properties: sanitise(values) });", +].join("\n"); + async function exists(filePath) { try { await access(filePath);