mermaidWithDarkTheme slaat dark-directive over bij eigen %%{init}-directive #1922

Closed
opened 2026-09-02 13:26:03 +00:00 by brenno · 3 comments
Owner

Probleem

mermaidWithDarkTheme in lib/widgets/reader/doc_mermaid_view.dart slaat zijn dark-directive over als de bron al met %%{ begint:

String mermaidWithDarkTheme(String source) {
  final head = source.trimLeft();
  if (head.startsWith('%%{') || head.startsWith('---')) return source;
  return '%%{init: {"theme":"dark"}}%%\n$source';
}

De bedoeling is terecht: een diagram met een eigen %%{init}-directive moet die behouden. Maar het neveneffect is dat een diagram met een eigen init-directive (bijv. %%{init: {"themeVariables": {"primaryColor": "#ff0"}}}%%) in donker thema licht blijft, omdat de theme: dark-directive nooit wordt toegevoegd.

Oplossingsrichting

Samenvoegen in plaats van overslaan: als de bron al een %%{init: ...}%%-directive heeft, de theme: dark daarin injecteren (bestaande keys behouden, theme toevoegen of overschrijven). Als de bron met --- (YAML frontmatter) begint, de directive erna plaatsen.

Beeldkeuring-controlepunt (geen bevinding)

Daarnaast verdient het sequence-diagram een beeldkeuring. In een nabootsing kwam een Note als donker vlak met verschoven tekst uit de inliner, en verdwenen de autonumber-cirkels. Dit is niet in flutter_svg zelf geverifieerd, dus dit is een controlepunt, geen bevinding — bij het fixen van bovenstaand punt meenemen in de visuele controle.

Referenties

  • lib/widgets/reader/doc_mermaid_view.dart regel 207-211: mermaidWithDarkTheme
  • test/document_reader_test.dart regel 435-450: bestaande tests voor mermaidWithDarkTheme
## Probleem `mermaidWithDarkTheme` in `lib/widgets/reader/doc_mermaid_view.dart` slaat zijn dark-directive over als de bron al met `%%{` begint: ```dart String mermaidWithDarkTheme(String source) { final head = source.trimLeft(); if (head.startsWith('%%{') || head.startsWith('---')) return source; return '%%{init: {"theme":"dark"}}%%\n$source'; } ``` De bedoeling is terecht: een diagram met een eigen `%%{init}`-directive moet die behouden. Maar het neveneffect is dat een diagram met een eigen init-directive (bijv. `%%{init: {"themeVariables": {"primaryColor": "#ff0"}}}%%`) in donker thema **licht** blijft, omdat de `theme: dark`-directive nooit wordt toegevoegd. ## Oplossingsrichting Samenvoegen in plaats van overslaan: als de bron al een `%%{init: ...}%%`-directive heeft, de `theme: dark` daarin injecteren (bestaande keys behouden, `theme` toevoegen of overschrijven). Als de bron met `---` (YAML frontmatter) begint, de directive erna plaatsen. ## Beeldkeuring-controlepunt (geen bevinding) Daarnaast verdient het sequence-diagram een beeldkeuring. In een nabootsing kwam een Note als donker vlak met verschoven tekst uit de inliner, en verdwenen de autonumber-cirkels. Dit is niet in `flutter_svg` zelf geverifieerd, dus dit is een **controlepunt**, geen bevinding — bij het fixen van bovenstaand punt meenemen in de visuele controle. ## Referenties - `lib/widgets/reader/doc_mermaid_view.dart` regel 207-211: `mermaidWithDarkTheme` - `test/document_reader_test.dart` regel 435-450: bestaande tests voor `mermaidWithDarkTheme`
Author
Owner

Opgepakt (sessie hervat na een crash). Tak: fix/mermaid-dark-theme-and-scaling, PR #1924. Reikwijdte: mermaidWithDarkTheme in lib/widgets/reader/doc_mermaid_view.dart.

Opgepakt (sessie hervat na een crash). Tak: fix/mermaid-dark-theme-and-scaling, PR #1924. Reikwijdte: mermaidWithDarkTheme in lib/widgets/reader/doc_mermaid_view.dart.
Author
Owner

Het beeldkeuring-controlepunt (sequence-diagram: Note-vlak en autonumber-cirkels) is NIET visueel getoetst. De schermtoegang voor computer-use werd geweigerd, en dat is de enige route om OciDeck echt te bekijken. De code-reparatie zelf is wel gedekt: mermaidWithDarkTheme heeft drie tests op de samenvoeging (bestaande init-directive, behoud van andere sleutels, plaatsing na YAML-frontmatter) en de volledige make check staat groen.

Het controlepunt blijft dus open staan. Wie het alsnog wil doen heeft twee wegen: de app draaien met toegestane schermbediening, of een integratietest op macOS die de RepaintBoundary naar PNG schrijft — daar is de WebView wél beschikbaar, anders dan onder flutter test.

Het beeldkeuring-controlepunt (sequence-diagram: Note-vlak en autonumber-cirkels) is NIET visueel getoetst. De schermtoegang voor computer-use werd geweigerd, en dat is de enige route om OciDeck echt te bekijken. De code-reparatie zelf is wel gedekt: mermaidWithDarkTheme heeft drie tests op de samenvoeging (bestaande init-directive, behoud van andere sleutels, plaatsing na YAML-frontmatter) en de volledige make check staat groen. Het controlepunt blijft dus open staan. Wie het alsnog wil doen heeft twee wegen: de app draaien met toegestane schermbediening, of een integratietest op macOS die de RepaintBoundary naar PNG schrijft — daar is de WebView wél beschikbaar, anders dan onder flutter test.
Author
Owner

Opgelost en op main geverifieerd: merge-commit 5f113a229 (PR #1924), reparatie in a9731614c. mermaidWithDarkTheme voegt theme:dark nu samen in een bestaande %%{init}-directive in plaats van hem over te slaan, met behoud van andere sleutels, en zet de directive ná YAML-frontmatter. Drie tests dekken die drie gevallen.

Wat er NIET in zit: het beeldkeuring-controlepunt op het sequence-diagram. Zie de reactie hierboven — de schermtoegang werd geweigerd, dus dat blijft ongetoetst. Dat was in de issuetekst zelf al als controlepunt en niet als bevinding aangemerkt; ik sluit hier op de bevinding, niet op het controlepunt.

Opgelost en op main geverifieerd: merge-commit 5f113a229 (PR #1924), reparatie in a9731614c. mermaidWithDarkTheme voegt theme:dark nu samen in een bestaande %%{init}-directive in plaats van hem over te slaan, met behoud van andere sleutels, en zet de directive ná YAML-frontmatter. Drie tests dekken die drie gevallen. Wat er NIET in zit: het beeldkeuring-controlepunt op het sequence-diagram. Zie de reactie hierboven — de schermtoegang werd geweigerd, dus dat blijft ongetoetst. Dat was in de issuetekst zelf al als controlepunt en niet als bevinding aangemerkt; ik sluit hier op de bevinding, niet op het controlepunt.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1922
No description provided.