Skip to content

Commit cde7649

Browse files
committed
fix: backward compat for old field format + re-render on page refresh
- All field regexes now accept both @field: and Field: format via (?:@field|Field): Affected: @use/Use, @think/Think, @search/Search, @prompt/Prompt, @name/Name, @step/Step - Trigger re-render after docgen loads (dispatches input event) so tags render as cards on page refresh instead of raw text - Also fixes dedup and memory dropdown fallback for old Name: format - 40/40 tests pass, build passes, browser verified
1 parent 6fa1f1b commit cde7649

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

js/ai-docgen.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,34 +99,34 @@
9999
}
100100
// Parse @use, @think, @search, @prompt fields
101101
if (block.type !== 'Image' && block.type !== 'Memory') {
102-
var useMatch = block.prompt.match(/^@use:\s*(.+)$/m);
102+
var useMatch = block.prompt.match(/^(?:@use|Use):\s*(.+)$/m);
103103
if (useMatch) {
104104
block.useMemory = useMatch[1].split(',').map(function (s) { return s.trim(); });
105105
block.prompt = block.prompt.replace(useMatch[0], '').trim();
106106
}
107107
// Parse @think: yes/no field
108-
var thinkMatch = block.prompt.match(/^@think:\s*(yes|no)$/mi);
108+
var thinkMatch = block.prompt.match(/^(?:@think|Think):\s*(yes|no)$/mi);
109109
if (thinkMatch) {
110110
block.think = thinkMatch[1].toLowerCase() === 'yes';
111111
block.prompt = block.prompt.replace(thinkMatch[0], '').trim();
112112
} else if (block.think === undefined) {
113113
block.think = false;
114114
}
115115
// Parse @search: field
116-
var searchMatch = block.prompt.match(/^@search:\s*(\S+)$/mi);
116+
var searchMatch = block.prompt.match(/^(?:@search|Search):\s*(\S+)$/mi);
117117
if (searchMatch) {
118118
block.search = searchMatch[1].toLowerCase();
119119
block.prompt = block.prompt.replace(searchMatch[0], '').trim();
120120
}
121121
// Strip @prompt: prefix if present (backward-compat: works without it too)
122-
var promptMatch = block.prompt.match(/^@prompt:\s*/m);
122+
var promptMatch = block.prompt.match(/^(?:@prompt|Prompt):\s*/m);
123123
if (promptMatch) {
124124
block.prompt = block.prompt.replace(promptMatch[0], '').trim();
125125
}
126126
}
127127
// Parse Memory block fields
128128
if (block.type === 'Memory') {
129-
var nameMatch = block.prompt.match(/^@name:\s*(.+)$/m);
129+
var nameMatch = block.prompt.match(/^(?:@name|Name):\s*(.+)$/m);
130130
block.memoryName = nameMatch ? nameMatch[1].trim() : 'default';
131131
}
132132

@@ -142,7 +142,7 @@
142142
var lines = prompt.split('\n');
143143
for (var i = 0; i < lines.length; i++) {
144144
var line = lines[i].trim();
145-
var stepMatch = line.match(/^@step\s*(\d+)\s*:\s*(.+)/i);
145+
var stepMatch = line.match(/^(?:@step|Step)\s*(\d+)\s*:\s*(.+)/i);
146146
if (stepMatch) {
147147
steps.push({
148148
number: parseInt(stepMatch[1], 10),
@@ -179,7 +179,7 @@
179179
if (_dedupInProgress) return markdown;
180180
var fenced = getFencedRanges(markdown);
181181
var tagRe = /\{\{Memory:\s*([\s\S]*?)\}\}/g;
182-
var nameRe = /^@name:\s*(.+)$/m;
182+
var nameRe = /^(?:@name|Name):\s*(.+)$/m;
183183
var seen = {};
184184
var replacements = []; // { start, end, oldName, newName }
185185
var m;
@@ -534,7 +534,7 @@
534534
function getDocMemoryNames() {
535535
var text = M.markdownEditor ? M.markdownEditor.value : '';
536536
var names = [];
537-
var re = /\{\{Memory:[^}]*@name:\s*([^\s}]+)/gi;
537+
var re = /\{\{Memory:[^}]*(?:@name|Name):\s*([^\s}]+)/gi;
538538
var m;
539539
while ((m = re.exec(text)) !== null) {
540540
var n = m[1].replace(/[,}]/g, '').trim();
@@ -908,4 +908,11 @@
908908
M.bindDocgenPreviewActions = bindDocgenPreviewActions;
909909
M.parseDocgenBlocks = parseDocgenBlocks;
910910

911+
// Trigger re-render now that docgen is loaded.
912+
// The initial render (phase 2) happens before this module loads (phase 3e),
913+
// so tags display as raw text until we re-render here.
914+
if (M.markdownEditor) {
915+
M.markdownEditor.dispatchEvent(new Event('input'));
916+
}
917+
911918
})(window.MDView);

0 commit comments

Comments
 (0)