fix(#484): drop noisy "parse failed" note on JSON/YAML fragments
LLMs routinely emit JSON/YAML *fragments* in fenced blocks — a bare
`"key": "value"` line, snippets with `...`, trailing commas — which
legitimately fail JSON.parse. initTreeViews() stamped an unstyled
`<div class="tree-parse-note">parse failed</div>` below such blocks,
producing bare white text under an otherwise-clean code box.
The note was incidental, not designed: it was bolted onto the YAML
lazy-load commit (29a31a6e), has no CSS, no behavior test, and originally
even fired on *valid* YAML before the CDN script finished loading (later
fixed). The block still renders as syntax-highlighted raw, so the note
added only noise.
Remove the note insertion; fall through silently to raw view. The per-block
Raw/Tree toggle, YAML lazy-load, and the #484 default-view config are all
unchanged. The `parse_failed_note` i18n key is intentionally retained (kept
green by test_chinese_locale.py) to avoid touching all 13 locales.
Verification: ./scripts/test.sh tests/test_issue484_json_tree_viewer.py
tests/test_chinese_locale.py — 29 passed.
This commit is contained in:
1 parent
7043b45f5d
commit
867471c7d3
1 file changed
+6
-9
+6
-9
@@ -13636,15 +13636,12 @@ function initTreeViews(container){
|
||||
// Mark as initialised only after we've committed to a render decision
|
||||
wrap.setAttribute('data-tree-init','1');
|
||||
if(!parsed || typeof parsed!=='object'){
|
||||
if(parseFailed){
|
||||
const hint=wrap.querySelector('.tree-raw-view');
|
||||
if(hint&&!hint.querySelector('.tree-parse-note')){
|
||||
const note=document.createElement('div');
|
||||
note.className='tree-parse-note';
|
||||
note.textContent=t('parse_failed_note')||'parse failed';
|
||||
hint.parentNode.insertBefore(note,hint.nextSibling);
|
||||
}
|
||||
}
|
||||
// No tree view for non-object values or unparseable content. LLMs often
|
||||
// emit JSON fragments (a bare "key": "val" line, snippets with ..., etc.)
|
||||
// that legitimately fail JSON.parse; surfacing a "parse failed" note for
|
||||
// those was pure noise. The block still renders as syntax-highlighted raw,
|
||||
// so just fall through silently. (parseFailed is retained for clarity.)
|
||||
void parseFailed;
|
||||
return; // leave as raw view
|
||||
}
|
||||
const lineCount=rawText.split('\n').length;
|
||||
|
||||
Reference in new issue
Block a user