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 <noreply@anthropic.com>
This commit is contained in:
Sven
2026-03-16 00:36:55 +01:00
parent 5b21fd3ea3
commit 437554cdc9

View File

@@ -7,16 +7,9 @@ const candidates = [
"node_modules/@indiekit/indiekit/node_modules/@indiekit/endpoint-posts/lib/controllers/form.js", "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 = [ 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", " // Easy MDE appends `image` value to formData for last image uploaded",
" delete values.image;", " delete values.image;",
"", "",
@@ -43,6 +36,34 @@ const newSnippet = [
" const mf2 = jf2ToMf2({ properties: sanitise(values) });", " const mf2 = jf2ToMf2({ properties: sanitise(values) });",
].join("\n"); ].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) { async function exists(filePath) {
try { try {
await access(filePath); await access(filePath);