fix(mermaid): dark-theme merge en schalen in Pagina's-weergave (#1921, #1922) #1924

Merged
brenno merged 2 commits from fix/mermaid-dark-theme-and-scaling into main 2026-09-02 16:41:43 +00:00
Owner

Samenvatting

Twee Mermaid-fixes in doc_mermaid_view.dart:

#1922: mermaidWithDarkTheme slaat dark-directive over

mermaidWithDarkTheme sloeg de dark-theme directive over wanneer de bron al een eigen %%{init: …}%%-directive had. Een diagram met custom kleuren (maar zonder expliciete theme) bleef daardoor licht in donker thema.

Fix: de theme:dark wordt nu in de bestaande directive geïnjecteerd (JSON geparseerd, bestaande keys behouden, theme toegevoegd of overschreven). Bij YAML-frontmatter komt de directive na de closing ---. Bij ongeparseerbare JSON valt hij terug op prepend.

#1921: Mermaid in Pagina's-weergave snijdt af met schuifbalk

DocMermaidView tekende op ware grootte met horizontaal scrollen. In de lezer is dat correct, maar in de gepagineerde Pagina's-weergave (vaste A4-kolombreedte) betekende het een afgesneden diagram met schuifbalk, terwijl de PDF hetzelfde diagram wél schaalde (BoxFit.contain).

Fix: nieuwe scaleToFit-parameter op DocMermaidView. Wanneer true en het diagram is breder dan de kolom, schaalt het af (hoogte proportioneel) i.p.v. scrollen. De Pagina's-weergave geeft scaleMermaidToFit: true mee; de lezer behoudt horizontaal scrollen.

Gewijzigde bestanden

  • lib/widgets/reader/doc_mermaid_view.dartscaleToFit parameter + mermaidWithDarkTheme merge-logica + _injectDarkThemeIntoInit helper
  • lib/widgets/reader/document_markdown_view.dartscaleMermaidToFit parameter doorgegeven
  • lib/widgets/reader/paged_document_view.dartscaleMermaidToFit: true op beide DocumentMarkdownView-aanroepen
  • test/document_reader_test.dart — tests bijgewerkt voor nieuw dark-theme gedrag + nieuwe scaleToFit-test
  • tool/check_conventions.dart — class-size plafond +5 voor DocumentMarkdownView

Testplan

  • make check lokaal (format, analyze, conventions, relevante tests groen)
  • make check-secrets (gitleaks + trufflehog, 0 leaks)
  • make sast (semgrep, 0 findings)
  • flutter test test/document_reader_test.dart — 44 tests groen (inclusief 4 nieuwe/bijgewerkte mermaidWithDarkTheme-tests en 1 nieuwe scaleToFit-test)
  • flutter test test/paged_document_view_test.dart — 18 tests groen
  • Beeldkeuring: verifieer visueel dat een breed Mermaid-diagram in de Pagina's-weergave schaalt i.p.v. afsnijdt, en dat een diagram met eigen %%{init}%% in donker thema donker rendert

Generated with Devin

## Samenvatting Twee Mermaid-fixes in `doc_mermaid_view.dart`: ### #1922: mermaidWithDarkTheme slaat dark-directive over `mermaidWithDarkTheme` sloeg de dark-theme directive over wanneer de bron al een eigen `%%{init: …}%%`-directive had. Een diagram met custom kleuren (maar zonder expliciete `theme`) bleef daardoor licht in donker thema. **Fix**: de `theme:dark` wordt nu in de bestaande directive geïnjecteerd (JSON geparseerd, bestaande keys behouden, `theme` toegevoegd of overschreven). Bij YAML-frontmatter komt de directive na de closing `---`. Bij ongeparseerbare JSON valt hij terug op prepend. ### #1921: Mermaid in Pagina's-weergave snijdt af met schuifbalk `DocMermaidView` tekende op ware grootte met horizontaal scrollen. In de lezer is dat correct, maar in de gepagineerde Pagina's-weergave (vaste A4-kolombreedte) betekende het een afgesneden diagram met schuifbalk, terwijl de PDF hetzelfde diagram wél schaalde (`BoxFit.contain`). **Fix**: nieuwe `scaleToFit`-parameter op `DocMermaidView`. Wanneer `true` en het diagram is breder dan de kolom, schaalt het af (hoogte proportioneel) i.p.v. scrollen. De Pagina's-weergave geeft `scaleMermaidToFit: true` mee; de lezer behoudt horizontaal scrollen. ## Gewijzigde bestanden - `lib/widgets/reader/doc_mermaid_view.dart` — `scaleToFit` parameter + `mermaidWithDarkTheme` merge-logica + `_injectDarkThemeIntoInit` helper - `lib/widgets/reader/document_markdown_view.dart` — `scaleMermaidToFit` parameter doorgegeven - `lib/widgets/reader/paged_document_view.dart` — `scaleMermaidToFit: true` op beide `DocumentMarkdownView`-aanroepen - `test/document_reader_test.dart` — tests bijgewerkt voor nieuw dark-theme gedrag + nieuwe scaleToFit-test - `tool/check_conventions.dart` — class-size plafond +5 voor `DocumentMarkdownView` ## Testplan - [x] `make check` lokaal (format, analyze, conventions, relevante tests groen) - [x] `make check-secrets` (gitleaks + trufflehog, 0 leaks) - [x] `make sast` (semgrep, 0 findings) - [x] `flutter test test/document_reader_test.dart` — 44 tests groen (inclusief 4 nieuwe/bijgewerkte mermaidWithDarkTheme-tests en 1 nieuwe scaleToFit-test) - [x] `flutter test test/paged_document_view_test.dart` — 18 tests groen - [ ] Beeldkeuring: verifieer visueel dat een breed Mermaid-diagram in de Pagina's-weergave schaalt i.p.v. afsnijdt, en dat een diagram met eigen `%%{init}%%` in donker thema donker rendert Generated with [Devin](https://devin.ai)
fix(mermaid): dark-theme merge en schalen in Pagina's-weergave (#1921, #1922)
Some checks failed
static-gate / static-gate (pull_request) Has been cancelled
scans / scans (pull_request) Has been cancelled
a9731614c4
mermaidWithDarkTheme sloeg de dark-directive over wanneer de bron al een
eigen %%{init}-directive had, waardoor een diagram met custom kleuren in
donker thema licht bleef. Nu wordt theme:dark in de bestaande directive
geïnjecteerd (bestaande keys behouden, theme toegevoegd of overschreven).
Bij YAML-frontmatter komt de directive na de closing ---.

DocMermaidView kreeg een scaleToFit-parameter: in de gepagineerde
Pagina's-weergave schaalt een breed diagram af naar de kolombreedte
(net als de PDF) in plaats van af te snijden met een schuifbalk. De lezer
behoudt horizontaal scrollen.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
docs(changelog): de mermaid-reparaties in het Unreleased-logboek (#1921, #1922)
All checks were successful
scans / scans (pull_request) Successful in 2m4s
static-gate / static-gate (pull_request) Successful in 5m38s
e72d334d9d
De reparatie zat in de PR, de aantekening niet — en het logboek is wat
over een half jaar het besluit nog vasthoudt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
brenno merged commit 5f113a2291 into main 2026-09-02 16:41:43 +00:00
Sign in to join this conversation.
No description provided.