fix(mermaid): wacht op pagina-klaar vóór renderen op macOS-WebView (#882) #887
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!887
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/882-mermaid-macos-render"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Op macOS-desktop renderde geen mermaid-diagram (grijs kader met broncode) en was de PDF/PPTX-export van diagram-dia´s leeg. Oorzaak: een opstartrace.
loadHtmlStringresolvet zodra het laden START;_bootstrapped=truewerd dan meteen gezet en de wachtrij vuurderunJavaScript(´window.__renderMermaid(...)´)af — maar die functie wordt pas een tel later gedefinieerd wanneer het 3,4MB-pagina-script draait, dus die vroege renders raaktenFWFEvaluateJavaScriptError.Diagnostiek (via een nieuw JS-channel) bevestigde dat mermaid wél laadt en rendert op WKWebView (
setup-ok mermaid=object render=function); de fout viel steeds vóór dat signaal.Fix: de WebView-pagina meldt
setup-okzodra mermaid geladen en__renderMermaidgedefinieerd is; de dienst geeft de renderwachtrij pas dán vrij (met een 10s-time-out-vangnet), niet meer bij het resolven vanloadHtmlString. De render stuurt zijn resultaat via het channel terug i.p.v. een Promise viarunJavaScriptReturningResult.Verificatie:
make checkgroen; de pipeline-test (mermaid_render_pipeline_test.dart) bootst het channel + de setup-ok-handshake na (9/9). Beeldkeuring op de draaiende macOS-app: geenFWFEvaluateJavaScriptErrormeer, diagrammen renderen vanaf de eerste weergave, PDF-export niet meer leeg. 5 van de 7 diagramtypen renderen correct.Bekend restant, apart getrackt: erDiagram en gantt renderen nog niet (type-specifiek, stille fallback) — zie #886. Staat los van deze race-fix.
fixes #882
De setup-keten in de WebView-pagina staat nu in try/catch en meldt bij pageload via MermaidChannel of hij slaagde ('setup-ok' met typeof mermaid/__renderMermaid/ inliner) of anders wélke fout hem brak ('setup-error'). Zo is met één beeldkeuring-ronde vast te stellen of de inline-setup draait en of de mermaid-bundel laadt op WKWebView — de oorzaak van #882 zit dieper dan het Promise-marshalen (runJavaScript negeert dat juist). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>