fix: onbekend directief overleeft opslag, zoom boven 100% werkt, expectReproduces eerlijk (#1810, #1811, #1813) #1822

Merged
brenno merged 1 commit from fix/directive-preservation-test-zoom-1810-1811-1813 into main 2026-08-27 21:20:35 +00:00
Owner

Samenvatting

Drie gerelateerde issues uit de #1803-familie in één PR — ze raken dezelfde oppervlakte (formaat, tests, render) en zijn elk klein genoeg dat aparte PR's meer overhead dan winst kosten.

#1810: Onbekend ocideck_*-directief overleeft geen opslag

Een nieuw ocideck_*-commentaar in een diablok overleefde geen enkele opslag: drie keer stil verlies, één keer stille verandering van betekenis (het landde in de notities van de gebruiker).

Fix: De doorgeeflus zet een onbekend ocideck_*-directief nu apart via preservedMarpLines (dezelfde route als Marp-syntaxis die OciDeck niet modelleert) en schrijft het onveranderd terug. _isTailNote raakt het niet meer: een ocideck_-prefix is per definitie een directief, geen notitie.

Regressietest op alle vier de plaatsen uit het issue: bovenaan een bullets-blok, onderaan (was de notitie-val), bovenaan een bulletsImage-blok, en in een split-text-blok.

#1811: expectReproduces heette "the strongest check" maar was blind

De helper diffs het resultaat opnieuw, en een veld dat de diff niet kent is in béíde richtingen onzichtbaar — de hervergelijking komt leeg terug terwijl de waarde nooit is overgekomen. Dat was precies de fout van #1803.

Fix:

  1. Doc-comment eerlijk gemaakt: hij toetst de oppervlakte die de diff kent, en is per definitie blind voor alles daarbuiten.
  2. Tweede been toegevoegd: veld-voor-veld vergelijking over SlideField.values na toepassing, zodat een bug in slideFieldValue of _valuesEqual niet in beide richtingen onzichtbaar is.
  3. Het #1803-test-commentaar bijgewerkt: expectReproduces dekt imageZoom nu (sinds #1808), de directe waarde-check blijft als canarie.

#1813: Inzoomen op een afbeelding doet niets boven 100%

De zoomschuif loopt van 100% tot 400%, maar elke stand boven 100% leverde exact hetzelfde beeld op als 100%. AlignSizedBox binnen strakke grenzen knepen het kind stil terug tot het slot.

Fix: OverflowBox laat het kind buiten de oudergrenzen, met alignment op de OverflowBox zelf zodat zoom < 100 ook blijft werken (de eerder falende test "zoomed-out image with a title anchors to the top" is hiervan de canarie). Clamp toegevoegd aan imageZoom-parse (was een kale int.tryParse zonder grens, in tegenstelling tot imageSize dat al clamp). Dartdoc gecorrigeerd (enableZoom is true voor alle 5 callers, niet false voor bullets/twoImages), Chinees woord uit het commentaar.

Regressietest die de échte afgelegde maat meet bij zoom 100 vs 300 in de bijsnijddialoog.

Test plan

  • make check groen: 10652 tests, 87.1% dekking
  • make check-secrets schoon (gitleaks + trufflehog, 0 leaks)
  • make sast schoon (semgrep, 0 findings)
  • 4 nieuwe round-trip tests voor onbekende directieven op alle vier de plaatsen
  • 1 nieuwe widgettest die de afgelegde maat meet bij zoom 100 vs 300
  • Bestaande "zoomed-out image with a title anchors to the top" test blijft groen
  • expectReproduces heeft nu twee benen en alle 11 bestaande aanroepen blijven groen

Generated with Devin

## Samenvatting Drie gerelateerde issues uit de #1803-familie in één PR — ze raken dezelfde oppervlakte (formaat, tests, render) en zijn elk klein genoeg dat aparte PR's meer overhead dan winst kosten. ### #1810: Onbekend `ocideck_*`-directief overleeft geen opslag Een nieuw `ocideck_*`-commentaar in een diablok overleefde geen enkele opslag: drie keer stil verlies, één keer stille verandering van betekenis (het landde in de notities van de gebruiker). **Fix:** De doorgeeflus zet een onbekend `ocideck_*`-directief nu apart via `preservedMarpLines` (dezelfde route als Marp-syntaxis die OciDeck niet modelleert) en schrijft het onveranderd terug. `_isTailNote` raakt het niet meer: een `ocideck_`-prefix is per definitie een directief, geen notitie. Regressietest op alle vier de plaatsen uit het issue: bovenaan een bullets-blok, onderaan (was de notitie-val), bovenaan een bulletsImage-blok, en in een split-text-blok. ### #1811: `expectReproduces` heette "the strongest check" maar was blind De helper diffs het resultaat opnieuw, en een veld dat de diff niet kent is in béíde richtingen onzichtbaar — de hervergelijking komt leeg terug terwijl de waarde nooit is overgekomen. Dat was precies de fout van #1803. **Fix:** 1. Doc-comment eerlijk gemaakt: hij toetst de oppervlakte die de diff kent, en is per definitie blind voor alles daarbuiten. 2. Tweede been toegevoegd: veld-voor-veld vergelijking over `SlideField.values` na toepassing, zodat een bug in `slideFieldValue` of `_valuesEqual` niet in beide richtingen onzichtbaar is. 3. Het #1803-test-commentaar bijgewerkt: `expectReproduces` dekt `imageZoom` nu (sinds #1808), de directe waarde-check blijft als canarie. ### #1813: Inzoomen op een afbeelding doet niets boven 100% De zoomschuif loopt van 100% tot 400%, maar elke stand boven 100% leverde exact hetzelfde beeld op als 100%. `Align` → `SizedBox` binnen strakke grenzen knepen het kind stil terug tot het slot. **Fix:** `OverflowBox` laat het kind buiten de oudergrenzen, met `alignment` op de `OverflowBox` zelf zodat zoom < 100 ook blijft werken (de eerder falende test "zoomed-out image with a title anchors to the top" is hiervan de canarie). Clamp toegevoegd aan `imageZoom`-parse (was een kale `int.tryParse` zonder grens, in tegenstelling tot `imageSize` dat al clamp). Dartdoc gecorrigeerd (`enableZoom` is true voor alle 5 callers, niet false voor bullets/twoImages), Chinees woord uit het commentaar. Regressietest die de échte afgelegde maat meet bij zoom 100 vs 300 in de bijsnijddialoog. #### Test plan - [x] `make check` groen: 10652 tests, 87.1% dekking - [x] `make check-secrets` schoon (gitleaks + trufflehog, 0 leaks) - [x] `make sast` schoon (semgrep, 0 findings) - [x] 4 nieuwe round-trip tests voor onbekende directieven op alle vier de plaatsen - [x] 1 nieuwe widgettest die de afgelegde maat meet bij zoom 100 vs 300 - [x] Bestaande "zoomed-out image with a title anchors to the top" test blijft groen - [x] `expectReproduces` heeft nu twee benen en alle 11 bestaande aanroepen blijven groen Generated with [Devin](https://devin.ai)
fix: onbekend directief overleeft opslag, zoom boven 100% werkt, expectReproduces eerlijk (#1810, #1811, #1813)
All checks were successful
scans / scans (pull_request) Successful in 2m1s
static-gate / static-gate (pull_request) Successful in 4m57s
14db05fdfb
#1810: Een onbekend `ocideck_*`-directief overleefde geen opslag — het werd
weggegooid of, erger, een presentatienotitie. De doorgeeflus zet het nu apart
via preservedMarpLines (dezelfde route als Marp-syntaxis) en schrijft het
onveranderd terug. `_isTailNote` raakt het niet meer: een `ocideck_`-prefix is
per definitie een directief. Regressietest op alle vier de plaatsen.

#1811: `expectReproduces` heette "the strongest check" maar was blind voor
velden buiten de diff-oppervlakte — de hervergelijking kwam leeg terug terwijl
de waarde nooit was overgekomen. Doc-comment eerlijk gemaakt, en een tweede
been toegevoegd: veld-voor-veld vergelijking over SlideField.values na
toepassing, zodat een bug in slideFieldValue of _valuesEqual niet in beide
richtingen onzichtbaar is.

#1813: Inzoomen op een afbeelding deed niets boven 100% — Align → SizedBox
binnen strakke grenzen knepen het kind stil terug tot het slot. OverflowBox
laat het kind buiten de oudergrenzen, met alignment op de OverflowBox zelf
zodat zoom < 100 ook blijft werken. Clamp toegevoegd aan imageZoom-parse
(was een kale int.tryParse zonder grens). Dartdoc gecorrigeerd (enableZoom
is true voor alle 5 callers), Chinees woord uit het commentaar, regressietest
die de afgelegde maat meet bij zoom 100 vs 300.

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 7102e431f4 into main 2026-08-27 21:20:35 +00:00
Sign in to join this conversation.
No description provided.