feat(callouts): vaste-rail pijlen (#1829) #1837

Merged
brenno merged 1 commit from feat/fixed-rail-arrows-1829 into main 2026-08-29 07:10:27 +00:00
Owner

Samenvatting

De derde presentatiemodus voor image-references: pijlen van een vaste rail aan de linkerrand van de afbeelding (de rechterrand van de bullet-kolom) naar elk target (IMAGE_CALLOUTS.md §5).

  • Punt-target: een pijl van de rail naar het punt.
  • Regio-target: een omlijnde rechthoek met de pijl op de linker rand ervan, op de hoogte van het centrum (§3.1).
  • De rail is vast — geen breekbare post-layout-meting, geen handmatige buigpunten (§5).

Renderers

  • Flutter overlay (preview, presentator, beamer): _ArrowPainter met two-tone rand (§6) en pijlpunt.
  • HTML export: .ocideck-arrow CSS met ::after pijlpunt-driehoek.
  • LaTeX/Beamer: degradeert naar pin/region plus tekstuele referentie (§5).
  • Raster exports (PDF/PPTX/ODP): via de Flutter overlay, reveal flat.

Integratie

  • De stap-voor-stap onthulling uit #1828 werkt ongewijzigd: een pijl verschijnt atomair met zijn bullet.
  • De editor krijgt een "Pijlen" segment in de presentation-mode SegmentedButton.
  • Een nieuwe quality-finding calloutCrossingArrows is gedefinieerd maar meldt niets zolang pijlen horizontaal zijn (kruising is dan geometrisch onmogelijk).

Bewaker

De pijl is uitsluitend een rendering over data die volledig portabel is — mode: arrow is een front-matter key onder ocideck_callouts: die ander Marp-gereedschap negeert. Het .md blijft leesbaar; de bullets en (A) references zijn gewone tekst. Als OciDeck stopt, toont het deck alles in pin/region-modus (de LaTeX-degradatie is het bewijs). Geen botsing van waarden.

Test plan

  • callout_arrow_test.dart — overlay bouwt met punt/regio/gemengde targets, revealedReferences filter, HTML export met punt/regio/flatten, CSS aanwezig
  • callout_editor_test.dart — Pijlen-toggle bestaat, schakelen emit calloutPresentation=arrow
  • slide_quality_localization_coverage_test.dartcalloutCrossingArrows gedekt
  • app_localizations_test.dart — nieuwe l10n strings in alle 31 talen
  • make check groen (10.814 tests, 86.8% dekking)
  • make check-secrets groen (gitleaks + trufflehog)
  • make sast groen (semgrep, 0 findings)
  • CI static-gate groen

Generated with Devin

## Samenvatting De derde presentatiemodus voor image-references: **pijlen** van een vaste rail aan de linkerrand van de afbeelding (de rechterrand van de bullet-kolom) naar elk target (IMAGE_CALLOUTS.md §5). - **Punt-target**: een pijl van de rail naar het punt. - **Regio-target**: een omlijnde rechthoek met de pijl op de linker rand ervan, op de hoogte van het centrum (§3.1). - De rail is vast — geen breekbare post-layout-meting, geen handmatige buigpunten (§5). ### Renderers - **Flutter overlay** (preview, presentator, beamer): `_ArrowPainter` met two-tone rand (§6) en pijlpunt. - **HTML export**: `.ocideck-arrow` CSS met `::after` pijlpunt-driehoek. - **LaTeX/Beamer**: degradeert naar pin/region plus tekstuele referentie (§5). - **Raster exports** (PDF/PPTX/ODP): via de Flutter overlay, reveal flat. ### Integratie - De stap-voor-stap onthulling uit #1828 werkt ongewijzigd: een pijl verschijnt atomair met zijn bullet. - De editor krijgt een "Pijlen" segment in de presentation-mode SegmentedButton. - Een nieuwe quality-finding `calloutCrossingArrows` is gedefinieerd maar meldt niets zolang pijlen horizontaal zijn (kruising is dan geometrisch onmogelijk). ### Bewaker De pijl is uitsluitend een rendering over data die volledig portabel is — `mode: arrow` is een front-matter key onder `ocideck_callouts:` die ander Marp-gereedschap negeert. Het `.md` blijft leesbaar; de bullets en `(A)` references zijn gewone tekst. Als OciDeck stopt, toont het deck alles in pin/region-modus (de LaTeX-degradatie is het bewijs). Geen botsing van waarden. ### Test plan - [x] `callout_arrow_test.dart` — overlay bouwt met punt/regio/gemengde targets, revealedReferences filter, HTML export met punt/regio/flatten, CSS aanwezig - [x] `callout_editor_test.dart` — Pijlen-toggle bestaat, schakelen emit `calloutPresentation=arrow` - [x] `slide_quality_localization_coverage_test.dart` — `calloutCrossingArrows` gedekt - [x] `app_localizations_test.dart` — nieuwe l10n strings in alle 31 talen - [x] `make check` groen (10.814 tests, 86.8% dekking) - [x] `make check-secrets` groen (gitleaks + trufflehog) - [x] `make sast` groen (semgrep, 0 findings) - [ ] CI `static-gate` groen Generated with [Devin](https://devin.ai)
feat(callouts): vaste-rail pijlen (#1829)
All checks were successful
scans / scans (pull_request) Successful in 3m58s
static-gate / static-gate (pull_request) Successful in 9m8s
8f142aa914
De derde presentatiemodus voor image-references: pijlen van een vaste
rail aan de linkerrand van de afbeelding naar elk target (§5). Een
punt-target krijgt een pijl naar het punt; een regio-target krijgt een
omlijnde rechthoek met de pijl op de linker rand ervan, op de hoogte
van het centrum (§3.1). De rail is vast — geen breekbare post-layout-
meting, geen handmatige buigpunten.

Renderers:
- Flutter overlay (preview, presentator, beamer): _ArrowPainter met
  two-tone rand (§6) en pijlpunt.
- HTML export: .ocideck-arrow CSS met ::after pijlpunt-driehoek.
- LaTeX/Beamer: degradeert naar pin/region plus tekstuele referentie (§5).
- Raster exports (PDF/PPTX/ODP): via de Flutter overlay, reveal flat.

De stap-voor-stap onthulling uit #1828 werkt ongewijzigd: een pijl
verschijnt atomair met zijn bullet. De editor krijgt een "Pijlen" segment
in de presentation-mode SegmentedButton. Een nieuwe quality-finding
calloutCrossingArrows is gedefinieerd maar meldt niets zolang pijlen
horizontaal zijn (kruising is dan geometrisch onmogelijk).

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

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