fix: stop $ sequences in selected text corrupting the prompt

This commit is contained in:
golem
2026-08-01 23:15:39 -06:00
parent 1106f4e315
commit d7821e3dc7
2 changed files with 46 additions and 1 deletions
+6 -1
View File
@@ -21,7 +21,12 @@ function applyTemplate(template, query) {
}
const tpl = typeof template === "string" ? template : "";
if (tpl.includes("{query}")) {
return tpl.replaceAll("{query}", query);
// Replacer function, not a replacement string: String.prototype.replaceAll
// gives $&, $`, $', and $$ special meaning in a replacement STRING, and
// `query` is arbitrary page-selected text that can contain any of those
// (shell one-liners routinely do). The function form disables that
// interpretation entirely. Do not "simplify" this back to the string form.
return tpl.replaceAll("{query}", () => query);
}
const trimmed = tpl.trim();
return trimmed === "" ? query : `${trimmed} ${query}`;