Bevinding-dia: schaarse header-only pagina 1 door de logo-reserve (opvolging #1163) #1198

Closed
opened 2026-08-04 07:39:20 +00:00 by brenno · 2 comments
Owner

Wat is er aan de hand

Tijdens de beeldkeuring van #1163 (kleiner finding-lettertype) bleek dat de winst "meer op één dia" maar deels landt. De bindende beperking is niet de letter maar de logo-reserve in de paginering (finding_pagination.dart_linesPerSlideFor): het standaardprofiel heeft logoPath gezet en showLogo staat standaard aan, dus per finding-pagina wordt ~4 regels gereserveerd. Effect gemeten aan de draaiende app (max. 4 volle secties):

  • F-03 (4 secties) → 3 pagina's, waarvan pagina 1 alleen de header-kaart is (~60% leeg).
  • F-04 (4 lange secties) → 5 pagina's, vrijwel één sectie per pagina.
  • F-05 (kort, 2 secties) → 2 pagina's terwijl het op één past.

Zonder logo-reserve laat de #1163-herkalibratie pagina 1 wél de header + eerste sectie dragen (zie de kalibratietest). De header-only pagina 1 is dus specifiek een mét-logo-artefact.

Te verifiëren lead

De beeldkeurder zag het logo nergens zichtbaar renderen (voorvertoning, presentatie, PDF, óók de titelpagina), terwijl de paginering er wél ruimte voor reserveert. Het asset bestaat (assets/images/librekat-logo.png, in pubspec) en _LogoOverlay rendert het via _resolvedImage(..., trustedAsset: true) — dus op de code lijkt het te moeten werken. Eén van twee dingen is waar en dat bepaalt de fix:

  1. Het logo rendert wél (klein, rechtsonder) → dan is de reserve terecht en is de vraag of de finding-paginering het logo-budget wat zuiniger kan inschatten / of pagina 1 de header + een korte sectie mag delen ondanks het logo.
  2. Het logo rendert niet (bv. asset:-prefix-afhandeling in _resolvedImage) → dan reserveert de paginering ruimte voor een logo dat niet verschijnt, en is dát de echte bug (breder dan alleen de finding-dia).

Waarom apart van #1163

#1163 ging over de lettergrootte en is opgelost/landbaar; deze schaarse-pagina's-oorzaak is een ander mechanisme (logo-reserve + eventueel niet-renderend logo) en verdient een eigen diagnose met de app erbij. Begin met verifiëren welke van de twee gevallen hierboven waar is.

## Wat is er aan de hand Tijdens de beeldkeuring van #1163 (kleiner finding-lettertype) bleek dat de winst "meer op één dia" maar deels landt. De bindende beperking is niet de letter maar de **logo-reserve** in de paginering (`finding_pagination.dart` → `_linesPerSlideFor`): het standaardprofiel heeft `logoPath` gezet en `showLogo` staat standaard aan, dus per finding-pagina wordt ~4 regels gereserveerd. Effect gemeten aan de draaiende app (max. 4 volle secties): - **F-03** (4 secties) → 3 pagina's, waarvan **pagina 1 alleen de header-kaart** is (~60% leeg). - **F-04** (4 lange secties) → 5 pagina's, vrijwel één sectie per pagina. - **F-05** (kort, 2 secties) → 2 pagina's terwijl het op één past. Zonder logo-reserve laat de #1163-herkalibratie pagina 1 wél de header + eerste sectie dragen (zie de kalibratietest). De header-only pagina 1 is dus specifiek een **mét-logo**-artefact. ## Te verifiëren lead De beeldkeurder zag het logo **nergens zichtbaar** renderen (voorvertoning, presentatie, PDF, óók de titelpagina), terwijl de paginering er wél ruimte voor reserveert. Het asset bestaat (`assets/images/librekat-logo.png`, in pubspec) en `_LogoOverlay` rendert het via `_resolvedImage(..., trustedAsset: true)` — dus op de code lijkt het te moeten werken. Eén van twee dingen is waar en dat bepaalt de fix: 1. **Het logo rendert wél** (klein, rechtsonder) → dan is de reserve terecht en is de vraag of de finding-paginering het logo-budget wat zuiniger kan inschatten / of pagina 1 de header + een korte sectie mag delen ondanks het logo. 2. **Het logo rendert niet** (bv. `asset:`-prefix-afhandeling in `_resolvedImage`) → dan reserveert de paginering ruimte voor een logo dat niet verschijnt, en is dát de echte bug (breder dan alleen de finding-dia). ## Waarom apart van #1163 #1163 ging over de lettergrootte en is opgelost/landbaar; deze schaarse-pagina's-oorzaak is een ander mechanisme (logo-reserve + eventueel niet-renderend logo) en verdient een eigen diagnose met de app erbij. Begin met verifiëren welke van de twee gevallen hierboven waar is.
Author
Owner

Opgepakt op tak fix/1198-finding-logo-sparse-page. Begin met de te-verifiëren lead: rendert het logo werkelijk op een bevinding-dia (voorvertoning/presentatie/PDF), of reserveert de paginering ruimte voor iets dat niet verschijnt.

Opgepakt op tak `fix/1198-finding-logo-sparse-page`. Begin met de te-verifiëren lead: rendert het logo werkelijk op een bevinding-dia (voorvertoning/presentatie/PDF), of reserveert de paginering ruimte voor iets dat niet verschijnt.
Author
Owner

Opgelost en geland op main via #1223 (merge eab3096b).

Diagnose. De lead in dit issue klopte niet: het LibreKAT-logo rendert wél en is zichtbaar (geverifieerd via echte-render-test + pixelanalyse en visueel met de beeldkeurder). De echte oorzaak was de header-kostenschatting in finding_pagination.dart — één vaste constante (_headerCardCost = 18.5, ~80% van een dia), terwijl de echte headerkaart ~44% (gewone bevinding) tot ~98% (volle header) beslaat. Die overreserveerde voor de gewone bevinding, waardoor de eerste sectie eraf viel en pagina 1 header-only werd (verergerd door de terechte logo-reserve).

Fix (commits c8ec6e7b, a3af7784):

  • _headerCardCost is nu inhoud-afgeleid en met een echte-render-test tegen de levende preview vastgepind.
  • Pagina 1 draagt onvoorwaardelijk header + eerste sectie (nooit meer header-only).
  • De vervolgpagina-kop is ~gehalveerd (w*0.032 → w*0.017), _contHeadingCost 6.0 → 4.5, zodat vervolgpagina's meer inhoud dragen; een voorbeeldbevinding past nu in 2 i.p.v. 3 pagina's.

Volledige make check groen en visueel bevestigd over voorvertoning, presentatiemodus en PDF-export.

Terzijde gevonden (aparte bug, apart opgevolgd): niet-canonieke ## …-sectiekoppen in een bevinding verdwijnen stil uit presentatie/export terwijl de bron-.md ze behoudt.

Opgelost en geland op `main` via #1223 (merge `eab3096b`). **Diagnose.** De lead in dit issue klopte niet: het LibreKAT-logo rendert wél en is zichtbaar (geverifieerd via echte-render-test + pixelanalyse en visueel met de beeldkeurder). De echte oorzaak was de header-kostenschatting in `finding_pagination.dart` — één vaste constante (`_headerCardCost = 18.5`, ~80% van een dia), terwijl de echte headerkaart ~44% (gewone bevinding) tot ~98% (volle header) beslaat. Die overreserveerde voor de gewone bevinding, waardoor de eerste sectie eraf viel en pagina 1 header-only werd (verergerd door de terechte logo-reserve). **Fix (commits `c8ec6e7b`, `a3af7784`):** - `_headerCardCost` is nu inhoud-afgeleid en met een echte-render-test tegen de levende preview vastgepind. - Pagina 1 draagt onvoorwaardelijk header + eerste sectie (nooit meer header-only). - De vervolgpagina-kop is ~gehalveerd (`w*0.032 → w*0.017`), `_contHeadingCost` 6.0 → 4.5, zodat vervolgpagina's meer inhoud dragen; een voorbeeldbevinding past nu in 2 i.p.v. 3 pagina's. Volledige `make check` groen en visueel bevestigd over voorvertoning, presentatiemodus en PDF-export. Terzijde gevonden (aparte bug, apart opgevolgd): niet-canonieke `## …`-sectiekoppen in een bevinding verdwijnen stil uit presentatie/export terwijl de bron-`.md` ze behoudt.
brenno referenced this issue from a commit 2026-08-04 18:26:32 +00:00
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#1198
No description provided.