fix(privacy): dia-thumbnail-badge noemt de wérkelijke privacy-stand (#1112) #1115

Merged
brenno merged 4 commits from fix/privacy-badge-disposition-1112 into main 2026-08-02 08:44:42 +00:00
Owner

Waarom

De privacy-badge op de dia-thumbnails toonde bij aanwijzen altijd "Persoonsgegevens geaccepteerd" — ook op een dia die op weglaten (redact) of accepteren + waarschuwen (shield) stond. De grijze badge dekt drie dispositie-standen af (isResolved = "niet warn"), maar noemde er maar één. "Geaccepteerd" op een weggelaten dia is onwaar: daar wordt niets geaccepteerd, het wordt juist weggehaald. Dat verklaart de melding "soms is het geaccepteerd en soms niet" (#1112).

Wat

De effectieve dispositie gaat nu mee naar de badge-tekst, die per stand het juiste woord kiest — in de geest van het instellingenpaneel (privacyDispositionShortLabel): geaccepteerd en weggelaten zijn er letterlijk uit, gemarkeerd voor de ontvanger is een preciezere parafrase van het paneelwoord gewaarschuwd.

Dispositie Badge-tekst (was: altijd "geaccepteerd")
accept Persoonsgegevens geaccepteerd
shield Persoonsgegevens gemarkeerd voor de ontvanger
redact Persoonsgegevens weggelaten
onbeslist (warn) Persoonsgegevens gevonden / Mogelijk persoonsgegevens (ongewijzigd)

Zowel de tooltip als het schermlezer-label lezen dezelfde functie, dus ook de voorgelezen tekst klopt nu. De badge-kleur verandert niet (grijs blijft "afgehandeld"); alleen de tekst noemt wélke van de drie.

Alleen lib/widgets/slides/slide_thumbnail.dart; de effectieve dispositie wordt in build gelezen en doorgegeven, _badgeTones krijgt de resolved-vlag als parameter.

Test

Regressietest per dispositie in test/slide_badge_gestures_test.dart (groep "de badge noemt de wérkelijke privacy-stand"), inclusief de kern van de bug: een redact-dia toont "weggelaten", níét "geaccepteerd". De bug was bovendien empirisch vastgelegd in de bestaande test "dubbelklik laat redactie met rust", die op main "Persoonsgegevens geaccepteerd" verwachtte op een weggelaten dia — die verwachting is nu "weggelaten".

l10n

Twee nieuwe bronstrings ("Persoonsgegevens weggelaten", "Persoonsgegevens gemarkeerd voor de ontvanger") in alle 31 niet-Nederlandse overlays via make add-l10n.

Documentatie

CHANGELOG (Fixed) en docs/USER_GUIDE.md: de grijze privacy-badge betekent "afgehandeld" (geaccepteerd, gemarkeerd voor de ontvanger, of weggelaten), niet enkel "geaccepteerd", en de badge noemt nu welke van de drie.

Poorten

  • make check groen (statische poorten + volledige testsuite 8064 tests + dekking 87,6% + per-bestand-vloer).
  • make check-secrets (gitleaks + trufflehog): 0 geheimen.
  • make sast (semgrep, lokale regels): 0 bevindingen.
  • DAST (ZAP) niet gedraaid — advisory, en deze wijziging raakt alleen editor-UI-tekst, niet het geserveerde weboppervlak (headers/CSP/verkeer ongewijzigd).

Bewaker

Interface- en documentatietekst over hoe persoonsgegevens behandeld worden = een privacy-belofte in de UI, dus de bewaker heeft meegelezen. Oordeel: akkoord — de bewoording is eerlijk in alle drie de standen en verwijdert een valse geruststelling (shield/redact zeiden ten onrechte "geaccepteerd"). Eén bevinding verwerkt: de claim "in de woorden van het instellingenpaneel" is verzacht naar "in de geest van", want voor shield gebruikt het paneel "gewaarschuwd" en is de badge-term een parafrase.

Buiten de rol van de bewaker, genoteerd voor de privacyexpert (los van deze fix, niet erdoor geïntroduceerd): of een louter-beeld-bevinding met stand redact/shield ook echt door de beeld-privacypijplijn wordt nageleefd — de badge spiegelt de dispositie, net als voorheen.

Closes #1112

## Waarom De privacy-badge op de dia-thumbnails toonde bij aanwijzen **altijd** "Persoonsgegevens geaccepteerd" — ook op een dia die op *weglaten* (redact) of *accepteren + waarschuwen* (shield) stond. De grijze badge dekt drie dispositie-standen af (`isResolved` = "niet `warn`"), maar noemde er maar één. "Geaccepteerd" op een weggelaten dia is onwaar: daar wordt niets geaccepteerd, het wordt juist weggehaald. Dat verklaart de melding "soms is het geaccepteerd en soms niet" (#1112). ## Wat De effectieve dispositie gaat nu mee naar de badge-tekst, die per stand het juiste woord kiest — in de geest van het instellingenpaneel (`privacyDispositionShortLabel`): *geaccepteerd* en *weggelaten* zijn er letterlijk uit, *gemarkeerd voor de ontvanger* is een preciezere parafrase van het paneelwoord *gewaarschuwd*. | Dispositie | Badge-tekst (was: altijd "geaccepteerd") | | --- | --- | | `accept` | Persoonsgegevens geaccepteerd | | `shield` | Persoonsgegevens gemarkeerd voor de ontvanger | | `redact` | Persoonsgegevens weggelaten | | onbeslist (`warn`) | Persoonsgegevens gevonden / Mogelijk persoonsgegevens (ongewijzigd) | Zowel de tooltip als het schermlezer-label lezen dezelfde functie, dus ook de voorgelezen tekst klopt nu. De badge-kleur verandert niet (grijs blijft "afgehandeld"); alleen de tekst noemt wélke van de drie. Alleen `lib/widgets/slides/slide_thumbnail.dart`; de effectieve dispositie wordt in `build` gelezen en doorgegeven, `_badgeTones` krijgt de resolved-vlag als parameter. ## Test Regressietest per dispositie in `test/slide_badge_gestures_test.dart` (groep "de badge noemt de wérkelijke privacy-stand"), inclusief de kern van de bug: een `redact`-dia toont "weggelaten", níét "geaccepteerd". De bug was bovendien empirisch vastgelegd in de bestaande test "dubbelklik laat redactie met rust", die op main "Persoonsgegevens geaccepteerd" verwachtte op een weggelaten dia — die verwachting is nu "weggelaten". ## l10n Twee nieuwe bronstrings ("Persoonsgegevens weggelaten", "Persoonsgegevens gemarkeerd voor de ontvanger") in alle 31 niet-Nederlandse overlays via `make add-l10n`. ## Documentatie CHANGELOG (Fixed) en `docs/USER_GUIDE.md`: de grijze privacy-badge betekent "afgehandeld" (geaccepteerd, gemarkeerd voor de ontvanger, of weggelaten), niet enkel "geaccepteerd", en de badge noemt nu welke van de drie. ## Poorten - `make check` groen (statische poorten + volledige testsuite 8064 tests + dekking 87,6% + per-bestand-vloer). - `make check-secrets` (gitleaks + trufflehog): 0 geheimen. - `make sast` (semgrep, lokale regels): 0 bevindingen. - DAST (ZAP) niet gedraaid — advisory, en deze wijziging raakt alleen editor-UI-tekst, niet het geserveerde weboppervlak (headers/CSP/verkeer ongewijzigd). ## Bewaker Interface- en documentatietekst over hoe persoonsgegevens behandeld worden = een privacy-belofte in de UI, dus de bewaker heeft meegelezen. **Oordeel: akkoord** — de bewoording is eerlijk in alle drie de standen en verwijdert een valse geruststelling (shield/redact zeiden ten onrechte "geaccepteerd"). Eén bevinding verwerkt: de claim "in de woorden van het instellingenpaneel" is verzacht naar "in de geest van", want voor shield gebruikt het paneel "gewaarschuwd" en is de badge-term een parafrase. Buiten de rol van de bewaker, genoteerd voor de privacyexpert (los van deze fix, niet erdoor geïntroduceerd): of een louter-beeld-bevinding met stand `redact`/`shield` ook echt door de beeld-privacypijplijn wordt nageleefd — de badge spiegelt de dispositie, net als voorheen. Closes #1112
De privacy-badge op de dia-thumbnails toonde bij aanwijzen altijd
"Persoonsgegevens geaccepteerd", ook op een dia op *weglaten* of *accepteren +
waarschuwen*. De grijze toon dekt drie dispositie-standen af maar noemde er maar
één; "geaccepteerd" op een weggelaten dia is onwaar — daar wordt niets
geaccepteerd, het wordt weggehaald.

De effectieve dispositie gaat nu mee naar de badge-tekst, die per stand het
juiste woord kiest (geaccepteerd / gemarkeerd voor de ontvanger / weggelaten),
in de bewoording van het instellingenpaneel. Het schermlezer-label volgt
dezelfde functie, dus ook de voorgelezen tekst klopt.

Regressietest per dispositie in slide_badge_gestures_test; de bestaande
redactie-test toonde de bug (verwachtte "geaccepteerd" op een weggelaten dia).

#1112

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
"Persoonsgegevens weggelaten" en "Persoonsgegevens gemarkeerd voor de ontvanger"
in alle 31 niet-Nederlandse overlays via make add-l10n, aansluitend op de
bestaande privacy-strings per taal.

#1112

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CHANGELOG-Fixed-entry en USER_GUIDE: de grijze privacy-badge betekent
"afgehandeld" (geaccepteerd, gemarkeerd voor de ontvanger, of weggelaten), niet
enkel "geaccepteerd", en de badge noemt nu welke van de drie.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs(privacy): verzacht de "instellingenpaneel"-claim (bewaker-bevinding)
Some checks failed
scans / scans (pull_request) Has been cancelled
4ec54a3170
De badge- en CHANGELOG-tekst beweerden dat de drie standwoorden "de woorden van
het instellingenpaneel" zijn. Twee kloppen letterlijk (geaccepteerd, weggelaten),
maar shield heet in het paneel "gewaarschuwd"; "gemarkeerd voor de ontvanger" is
een preciezere parafrase. "In de geest van" dekt dat eerlijk — anders twijfelt een
lezer die de claim natrekt aan de rest.

#1112

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno force-pushed fix/privacy-badge-disposition-1112 from 4ec54a3170
Some checks failed
scans / scans (pull_request) Has been cancelled
to 2950eb9b38
All checks were successful
scans / scans (pull_request) Successful in 3m42s
2026-08-02 08:44:19 +00:00
Compare
brenno merged commit de26b0fac1 into main 2026-08-02 08:44:42 +00:00
Sign in to join this conversation.
No description provided.