@@ -202,6 +207,10 @@ async function _mergeFetchTargets() {
return;
}
+ // Stash target id + name in data-* attributes (NOT inline JS args)
+ // to avoid the quote-collision that breaks click binding when the
+ // project name contains characters JSON.stringify quotes. Same
+ // pattern as the backfill typeahead dropdown.
dropdown.innerHTML = candidates.map(m => {
const scoreBadge = m.score >= 0.99
? '
'
@@ -212,8 +221,10 @@ async function _mergeFetchTargets() {
if (m.location_count > 0) meta.push(`${m.location_count} location${m.location_count === 1 ? '' : 's'}`);
const metaLine = meta.length ? `