Sensitive Field Readout Warning
Feature Detail
Description
Sensitive Field Readout Warning alerts the user before a screen reader speaks aloud a field containing sensitive personal data - such as health information, case notes, contact addresses, or assignment details. When a screen reader's focus enters a designated sensitive field, the app intercepts the accessibility event and presents a confirmation dialog before the field content is spoken aloud. This protects users who operate the app in public spaces or shared environments where accidental audio disclosure of personal data is a privacy exposure. The widget is reusable and applicable across all areas of the app that handle sensitive personal information.
Sources & reasoning
Line 37 explicitly lists 'Varsling ved opplesning av sensitive felt (NHF)' as a concrete accessibility requirement. Blueprint marks this feature [MVP] under the Accessibility area. NHF's user base includes screen reader-dependent users who operate in public community settings where accidental audio disclosure of personal data is a real privacy risk, justifying MVP priority.
-
docs/source/likeperson.md · line 37Varsling ved opplesning av sensitive felt (NHF).
Analysis
NHF explicitly identified the need for a warning when sensitive fields are read aloud, recognizing that peer mentors frequently work in community settings where their device may be overheard by others. Audible readout of a contact's health status, home address, or case content without consent is a GDPR data minimization risk and a breach of user trust. Implementing this as a configurable, reusable widget means it can be applied consistently across all sensitive fields with minimal per-screen overhead and extended to new data types without modifying warning logic. The feature also demonstrates to all partner organizations that the platform treats data privacy in assistive technology contexts as a first-class concern.
Implement as SensitiveFieldWarningWidget in Flutter, wrapping any display widget that contains sensitive personal data. The widget registers a Semantics focus listener; on focus entry it presents a modal BottomSheet or AlertDialog confirmation before TalkBack or VoiceOver reads the field content. ScreenReaderWarningService tracks session-level confirmation state per field identifier to avoid repeated prompts within a single session. Fields are tagged declaratively via an annotation parameter so developers can mark sensitive fields without modifying warning logic. The system is extensible to new sensitive data types and configurable via the OrganizationLabels system for per-org field labeling.
Quality Assurance
Peer Mentor (primary) · Coordinator (same flow)Peer Mentor
Quick UAT
- Aktiver VoiceOver (iOS) eller TalkBack (Android) og logg inn som Likeperson.
- Naviger til Kontakter og ĂĄpne en kontakt med sensitive opplysninger (f.eks. helseinformasjon eller hjemmeadresse).
- Flytt skjermleserfokus til et sensitivt felt — bekreft at en advarselsdialog vises og at feltinnholdet IKKE leses opp automatisk.
- Trykk «Ja, les opp» i dialogen — bekreft at skjermleseren nå leser opp feltinnholdet.
- Naviger til et nytt sensitivt felt og trykk «Avbryt» i dialogen — bekreft at feltinnholdet forblir stille og fokus returnerer til feltet.
Quick UAT — Accessibility
-
Aktiver VoiceOver (iOS) eller TalkBack (Android) og logg inn som Likeperson.
- Screen reader Innloggingsskjermen annonseres korrekt; alle felt har semantiske labels.
- Keyboard / focus Tab-rekkefølge: e-postfelt → passordfelt → Logg inn-knapp.
- Focus visibility Synlig fokusring pĂĄ aktivt felt; ingen fokus-felle ved innlasting.
-
Naviger til Kontakter og ĂĄpne en kontakt med sensitive opplysninger (f.eks. helseinformasjon eller hjemmeadresse).
- Screen reader Bunnavigasjon annonserer 'Kontakter, fane'; kontaktoppføringer leses opp med navn.
- Keyboard / focus Piltaster navigerer kontaktlisten; Enter ĂĄpner kontaktdetaljer.
- Touch target ≥ 24×24 CSS px på alle kontaktoppføringer og navigasjonselementer.
-
Flytt skjermleserfokus til et sensitivt felt — bekreft at en advarselsdialog vises og at feltinnholdet IKKE leses opp automatisk.
- Screen reader Skjermleseren annonserer dialogen: 'Advarsel: dette feltet inneholder sensitiv informasjon. Vil du at innholdet leses opp?' — feltinnholdet er ikke annonsert.
- Focus visibility Fokus flyttes automatisk til advarselsdialogen; første element i dialogen er aktivt. Fokus-felle holder seg inne i dialogen til bruker svarer.
- Live region Polite live-region annonserer advarselsmeldingen nĂĄr dialogen ĂĄpnes.
- Contrast 4.5:1 for dialogtekst og knappelabels; advarselsstatus formidles ikke kun gjennom farge.
-
Trykk «Ja, les opp» i dialogen — bekreft at skjermleseren nå leser opp feltinnholdet.
- Screen reader Etter bekreftelse leser skjermleseren opp feltinnholdet fullt ut. Dialogen lukkes og annonseres som 'lukket'.
- Focus visibility Fokus returnerer til det sensitive feltet etter at dialogen lukkes.
- Touch target Bekreftelsesknapp ≥ 24×24 CSS px.
-
Naviger til et nytt sensitivt felt og trykk «Avbryt» i dialogen — bekreft at feltinnholdet forblir stille og fokus returnerer til feltet.
- Screen reader Skjermleseren annonserer ikke feltinnholdet etter avslag. Dialogen lukkes og annonserer 'avbrutt'.
- Keyboard / focus Escape-tast tilsvarer «Avbryt»-handling.
- Focus visibility Fokus returnerer til det sensitive feltet uten at innholdet leses opp.
Expected End State
Sensitive felt leses kun opp av skjermleseren etter eksplisitt brukerbekreftelse. Avslag hindrer opplesning og returnerer fokus til feltet uten å avsløre innholdet.
Components (18)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.