mirror of
https://github.com/runbear-io/beardrive.git
synced 2026-08-25 08:08:08 +02:00
* fix(webapp): a broken mermaid fence says which line, and why (BEA-135) A fence that doesn't parse showed "Couldn't render this diagram." and nothing else — no line, no parser output, no way to fix it. The diagnostic already existed: mermaid throws a parse error carrying the line number, the offending source, a caret column and the expected tokens, and the catch discarded it one line from where it was needed. Bind it and print it under the existing note, in a sibling element so .mermaid-err's text stays exactly what it was. textContent, never innerHTML: the message quotes the author's source verbatim and what renderMermaid returns is mounted through dangerouslySetInnerHTML. The seeded broken fence now carries a complete <img onerror=x> tag so the e2e proves that — short on purpose, since the parser's window is 20 characters of past input and a tag it truncated would leave no start tag for an innerHTML bug to mount. The line number is the diagram's, not the file's: the helper only ever sees rendered HTML, never the .md around it. Both surfaces, one helper: the hub viewer reads style.css, the share page reads the inline shell in shares.go and never loads the app's stylesheet. `white-space: pre` is load-bearing (the caret only lines up in a monospace, non-wrapping box) and max-height + overflow keeps a pathological message inside its own box. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore(webapp): rebuild static/ for the mermaid diagnostics go:embed needs the built output in the module. Split from the source commit because rollup re-hashes the whole mermaid chunk graph when its importer changes: 118 of these files are renames with byte-identical content, only their import filenames differ. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>