Stijl: het standaardthema zakt door zijn eigen contrasteis zodra je een checklist gebruikt #1818

Closed
opened 2026-08-27 17:44:12 +00:00 by brenno · 2 comments
Owner

Wat er misgaat

Het standaard stijlprofiel gebruikt checklistUncheckedColor: '#CBD5E1' op
slideBackgroundColor: '#FFFFFF'. Dat is een contrastverhouding van 1,48,
terwijl SlideQualityAnalyzer._checkChecklistContrast een drempel van 3,0
hanteert (WCAG 1.4.11, niet-tekstuele UI-componenten).

Gevolg: elk deck met een checklist-dia levert bij het openen meteen een
checklistContrast-waarschuwing op — {label: Checklist (niet aangevinkt), ratio: 1.5, threshold: 3.0} — zonder dat de auteur daar vanuit de .md iets
aan kan doen, want styling staat bewust niet in het bestand (FILE_FORMAT §3.2).
De enige uitweg is het stijlprofiel aanpassen, en daar gaat niemand naar zoeken
als hij een waarschuwing op zijn dia ziet.

Dit is een defect in de standaardwaarde, niet in de check: de app zakt door zijn
eigen ondergrens zodra je een van zijn eigen diatypes gebruikt.

Gemeten op main (2bc36eea6), 2026-08-27, alle gebundelde profielen door
SlideQualityAnalyzer met een deck van titel/sectie/checklist/tabel/code:

profiel contrastbevindingen
Standaard 1 — niet-aangevinkt 1,5
LibreKAT 0
Security 1 — niet-aangevinkt 1,5
Vigilis 4 — niet-aangevinkt 1,5; accent 1,7; tussentitel 1,7; ondertitel 1,5

Drie van de vier profielen dragen dus dezelfde kleur, en Vigilis draagt er nog
drie eigen bij (zie het aparte issue voor het merkgeel).

De reparatie

#94A3B8 — de voor de hand liggende volgende stap in de slate-ramp — haalt het
niet: 2,56. Narekenen dus, niet gokken. De lichtste tint die 3,0 haalt ligt
rond #8695AA (3,05), en dat is te weinig marge.

#64748B (slate-500) haalt 4,76 op wit. En het is de enige klasse kleur die
op beide uitersten werkt: op de donkere achtergronden die deze repo elders
gebruikt haalt het 3,90 (#111318), 3,75 (#0F172A) en 3,07 (#1E293B), waar
#CBD5E1 juist op wit faalt. Een midden-grijs is de enige keuze die 3:1 haalt
ongeacht of de auteur zijn dia licht of donker zet.

Toetsen

Een test die de gebundelde profielen door SlideQualityAnalyzer haalt en nul
contrastbevindingen eist. Zonder die test kruipt dezelfde fout er bij het
volgende kleurtje weer in — er is vandaag niets dat de standaardwaarden aan hun
eigen ondergrens houdt.

**Wat er misgaat** Het standaard stijlprofiel gebruikt `checklistUncheckedColor: '#CBD5E1'` op `slideBackgroundColor: '#FFFFFF'`. Dat is een contrastverhouding van **1,48**, terwijl `SlideQualityAnalyzer._checkChecklistContrast` een drempel van **3,0** hanteert (WCAG 1.4.11, niet-tekstuele UI-componenten). Gevolg: elk deck met een checklist-dia levert bij het openen meteen een `checklistContrast`-waarschuwing op — `{label: Checklist (niet aangevinkt), ratio: 1.5, threshold: 3.0}` — zonder dat de auteur daar vanuit de `.md` iets aan kan doen, want styling staat bewust niet in het bestand (FILE_FORMAT §3.2). De enige uitweg is het stijlprofiel aanpassen, en daar gaat niemand naar zoeken als hij een waarschuwing op zijn dia ziet. Dit is een defect in de standaardwaarde, niet in de check: de app zakt door zijn eigen ondergrens zodra je een van zijn eigen diatypes gebruikt. **Gemeten op `main` (2bc36eea6), 2026-08-27**, alle gebundelde profielen door `SlideQualityAnalyzer` met een deck van titel/sectie/checklist/tabel/code: | profiel | contrastbevindingen | | --- | --- | | Standaard | 1 — niet-aangevinkt 1,5 | | LibreKAT | 0 | | Security | 1 — niet-aangevinkt 1,5 | | Vigilis | 4 — niet-aangevinkt 1,5; accent 1,7; tussentitel 1,7; ondertitel 1,5 | Drie van de vier profielen dragen dus dezelfde kleur, en Vigilis draagt er nog drie eigen bij (zie het aparte issue voor het merkgeel). **De reparatie** `#94A3B8` — de voor de hand liggende volgende stap in de slate-ramp — haalt het **niet**: 2,56. Narekenen dus, niet gokken. De lichtste tint die 3,0 haalt ligt rond `#8695AA` (3,05), en dat is te weinig marge. `#64748B` (slate-500) haalt **4,76** op wit. En het is de enige klasse kleur die op *beide* uitersten werkt: op de donkere achtergronden die deze repo elders gebruikt haalt het 3,90 (`#111318`), 3,75 (`#0F172A`) en 3,07 (`#1E293B`), waar `#CBD5E1` juist op wit faalt. Een midden-grijs is de enige keuze die 3:1 haalt ongeacht of de auteur zijn dia licht of donker zet. **Toetsen** Een test die de gebundelde profielen door `SlideQualityAnalyzer` haalt en nul contrastbevindingen eist. Zonder die test kruipt dezelfde fout er bij het volgende kleurtje weer in — er is vandaag niets dat de standaardwaarden aan hun eigen ondergrens houdt.
Author
Owner

Opgepakt. Tak: fix/checklist-contrast-default (worktree). Reikwijdte: lib/models/settings.dart (drie profielen + Vigilis-sectie), test/theme_profile_contrast_test.dart (nieuw), docs/FILE_FORMAT.md §3.2 + nl, CHANGELOG. Het Vigilis-accentgeel blijft er bewust buiten — dat is een merkbesluit en staat apart.

Opgepakt. Tak: fix/checklist-contrast-default (worktree). Reikwijdte: lib/models/settings.dart (drie profielen + Vigilis-sectie), test/theme_profile_contrast_test.dart (nieuw), docs/FILE_FORMAT.md §3.2 + nl, CHANGELOG. Het Vigilis-accentgeel blijft er bewust buiten — dat is een merkbesluit en staat apart.
brenno 2026-08-27 18:13:18 +00:00
Author
Owner

Opgelost en op main geverifieerd: merge-commit 1a50646e5 (PR #1820).

checklistUncheckedColor staat nu op #64748B in alle vier de kopieën van die standaard — constructor, security, vigilis, en de terugval in ThemeProfile.fromJson. Die laatste was bijna vergeten; dan had een profiel dat zónder deze sleutel uit de instellingen komt de oude kleur teruggekregen. Er staat nu een test op dat die twee gelijk blijven.

De waarde is nagerekend: #94A3B8 haalt 2,56 en zou het niet hebben opgelost. #64748B haalt 4,76 op wit en 3,90/3,75/3,07 op de donkere tinten die de repo elders voert — een midden-grijs is de enige klasse die 3:1 haalt ongeacht hoe de auteur zijn achtergrond zet.

Het bleek breder dan gemeld. Vigilis droeg er drie bij: de sectiedia tekende wit op het merkgeel (1,73, bevestigd in de renderer, niet alleen in de analyzer). Die achtergrond is nu het merkzwart #111318; accentColor blijft #FFB800.

Wat er NIET in zit, met opzet:

  • Het merkgeel als linkkleur op wit (1,73 tegen 4,5). Merkbesluit, staat apart als #1819 en blijft tot dan een benoemde uitzondering in de test.
  • Het aangevinkte #2E7D64 haalt op #1E293B 2,95 — nét onder 3,0. Bestaand geval op een achtergrond die geen gebundeld profiel voert; repareren zou de standaard-accentkleur veranderen. Staat opgeschreven in de test.

De poort die ontbrak staat er nu: test/theme_profile_contrast_test.dart haalt elk gebundeld profiel door dezelfde analyzer als het kwaliteitspaneel en eist nul bevindingen, met uitzonderingen bij naam plus issuenummer — en een tweede test die faalt zodra een uitzondering niet meer nodig is. ACCESSIBILITY.md en FILE_FORMAT §3.2 zijn bijgewerkt, in beide talen.

Opgelost en op main geverifieerd: merge-commit 1a50646e5 (PR #1820). `checklistUncheckedColor` staat nu op `#64748B` in alle vier de kopieën van die standaard — constructor, security, vigilis, en de terugval in `ThemeProfile.fromJson`. Die laatste was bijna vergeten; dan had een profiel dat zónder deze sleutel uit de instellingen komt de oude kleur teruggekregen. Er staat nu een test op dat die twee gelijk blijven. De waarde is nagerekend: `#94A3B8` haalt 2,56 en zou het niet hebben opgelost. `#64748B` haalt 4,76 op wit en 3,90/3,75/3,07 op de donkere tinten die de repo elders voert — een midden-grijs is de enige klasse die 3:1 haalt ongeacht hoe de auteur zijn achtergrond zet. Het bleek breder dan gemeld. Vigilis droeg er drie bij: de sectiedia tekende wit op het merkgeel (1,73, bevestigd in de renderer, niet alleen in de analyzer). Die achtergrond is nu het merkzwart `#111318`; `accentColor` blijft `#FFB800`. Wat er NIET in zit, met opzet: - Het merkgeel als linkkleur op wit (1,73 tegen 4,5). Merkbesluit, staat apart als #1819 en blijft tot dan een benoemde uitzondering in de test. - Het aangevinkte `#2E7D64` haalt op `#1E293B` 2,95 — nét onder 3,0. Bestaand geval op een achtergrond die geen gebundeld profiel voert; repareren zou de standaard-accentkleur veranderen. Staat opgeschreven in de test. De poort die ontbrak staat er nu: `test/theme_profile_contrast_test.dart` haalt elk gebundeld profiel door dezelfde analyzer als het kwaliteitspaneel en eist nul bevindingen, met uitzonderingen bij naam plus issuenummer — en een tweede test die faalt zodra een uitzondering niet meer nodig is. ACCESSIBILITY.md en FILE_FORMAT §3.2 zijn bijgewerkt, in beide talen.
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#1818
No description provided.