[Bug] A Scorecard slide looks filled in, renders blank, passes the quality gate and exports empty #583
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#583
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found in the pre-publication first-run review by a tester who had never seen the app. This is the most expensive class of bug a presentation tool can have.
Reproduce:
What happens: the editor shows a complete, filled-in form — title "Seit dem letzten Bericht", metric 1 "Offene Feststellungen", now 96, previous 120, unit "Tage" — all in near-black text, visually indistinguishable from the real values on the bullets slide beside it. (On that slide the placeholder "Unterüberschrift" is correctly greyed.) The slide itself renders entirely white, logo only. The source contains just
<!-- _class: scorecard logo-safe -->and nothing else. The quality panel reports "no quality issues found". In presentation mode and in the exported PDF it is a blank white page.Why this must be fixed before publication: "I stood in front of the room with a blank slide" is the worst outcome this product has. The user received no signal at any point: the form looked filled, the quality gate was green, and the export went through without a murmur. Every safety net the app has was pointing the wrong way at once.
Proposal: two parts. (1) Give the Scorecard editor placeholders the same grey treatment used elsewhere, so an empty field reads as empty. (2) Have the quality analyser report an empty slide as a warning — "this slide has no content" — which also catches the general case rather than just this slide type.
De helft hiervan is opgelost in
b043d5f(PR #652); dit issue blijft open voor de andere helft.Wat er gedaan is — de placeholders. De oorzaak zat niet in de scorecard-editor maar in het thema:
AppTheme.fromProfilezette helemaal geenhintStyle, dus élkehintTextin de app erfde de gewone tekstkleur. Twee editors repareerden dat zelf (alt_text_field,_editor_field); de rest niet. Daarom is de fix inapp_theme.darten niet inscorecard_editor.dart— hij geldt nu voor elk invoerveld.De kleur is
mutedgeworden, de profielgestuurde gedempte tekstkleur die dezelfde functie al berekent. Mijn eerste keuze,scheme.onSurfaceVariant, lag maar 0,041 luminantie van de gewone tekstkleur af — een verschil dat je met een kleurenkiezer ziet en met het oog niet.test/input_hint_contrast_test.dartrekent dat na in licht én donker thema en stond eerst rood om precies die reden.Wat er nog staat — de lege dia meldt zichzelf nog steeds niet. De kwaliteitscontrole zei "geen problemen" over een dia zonder inhoud, en dat blijft zo. Dat vraagt een nieuw
SlideQualityIssueKind, en dat is geen bijvangst van een afgebakende wijziging: de keten loopt langsslide_quality.dart(enum),slide_quality_localization.dart(nieuwed()-string, dus 31 vertalingen),slide_quality_analyzer.dart(de regel zelf), plus de plekken die uitputtend op het enum schakelen —quality_export_policy,slide_quality_panel,slide_quality_actions,slide_badge_tone_test.Dat is ook de waardevolste helft: hij vangt de algemene vorm ("deze dia heeft geen inhoud") en niet alleen dit slidetype. Verwant aan #615, dat constateert dat negen van de 24 slidetypes in géén exporttest voorkomen — samen zijn dat de twee vangnetten die hier allebei de verkeerde kant op wezen.
De tweede helft opgepakt. Tak:
fix/lege-dia-melden-583. Reikwijdte:slide_quality.dart(nieuwSlideQualityIssueKind),slide_quality_localization.dart(nieuwed()-string, 31 vertalingen),slide_quality_analyzer.dart, plus de plekken die uitputtend op het enum schakelen —quality_export_policy,slide_quality_panel,slide_quality_actions— en de tests.De tweede helft is opgelost in
9fb5b867e.v. (PR #681), op main. Daarmee is dit issue rond.De regel gaat over de vorm, niet over het slidetype — dat was de waardevolste helft van je voorstel, en het is precies zo gebouwd:
SlideQualityIssueKind.emptySlide, met de tekst "Deze dia is leeg: hij toont niets op het scherm en in de export".Hoe "leeg" wordt bepaald is het enige waar ik een keuze moest maken. De dia wordt vergeleken met een vers aangemaakte dia van hetzelfde type. Wat daar al in staat — de vaste kop van een checklist, de beginrijen van een scope-matrix, de voorbeeldgebeurtenissen van een tijdlijn — is niet van de auteur en telt dus niet als inhoud. Een handgeschreven veldenlijst zou die koppen wél meetellen, en dan meldt een lege checklist zichzelf nooit. Bijkomend: de regel onderhoudt zichzelf, en dat is bij
SlideTypegeen luxe.Een waarschuwing, geen fout: een dia die je nog moet vullen is geen vergissing.
De test loopt uitputtend over
SlideType.values. Eén bestaande test moest mee —forSlide returns only matching slide issuesleunde erop dat een verse bullets-dia nul meldingen geeft, en dat is nu niet meer waar.Bijvangst, apart ingediend als #677: bij het vertalen bleek dat zes talen bestaande kwaliteitsmeldingen nog als onvertaald Engels dragen.
make l10n-checkziet dat niet, want die toetst dekking en geen taal. Naast de nieuwe, correct vertaalde melding komt in die zes talen dus Engelse tekst in hetzelfde paneel te staan.