Bump versjon til v1.9.0 (versionCode 13)

Publiserer a11y-utbedringene fra forrige commit. User-Agent i
ShelterRepository er oppdatert til å matche versjonen.

I ACCESSIBILITY.md er de fire utbedrede WCAG-avvikene flyttet
fra §3.1 til et nytt §7 Historikk under versjon 1.9.0. §3.1
slår nå fast at ingen gjenværende avvik er identifisert utover
§3.2 (uforholdsmessig byrde på Leaflet-kartet). Uutilsynet/Digdir
er bekreftet som riktig tilsynsmyndighet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ole-Morten Duesund 2026-04-17 19:05:46 +02:00
commit 0efb599b8c
3 changed files with 18 additions and 13 deletions

View file

@ -12,7 +12,7 @@
## 1. Samsvarsstatus ## 1. Samsvarsstatus
Tilfluktsrom er **delvis i samsvar** med kravene i EN 301 549 (basert på WCAG 2.2 nivå AA). De kjente avvikene er listet opp i avsnitt 3. Tilfluktsrom er **delvis i samsvar** med kravene i EN 301 549 (basert på WCAG 2.2 nivå AA). Statusen er «delvis» fordi ett punkt er dokumentert som uforholdsmessig byrde (se avsnitt 3.2); egenkontroll har ikke identifisert andre gjenværende avvik på dette nivået per versjon 1.9.0.
## 2. Referansestandard ## 2. Referansestandard
@ -22,12 +22,7 @@ Erklæringen bygger på EU-direktiv 2016/2102 (Web Accessibility Directive, WAD)
### 3.1 Manglende samsvar med regelverket ### 3.1 Manglende samsvar med regelverket
Følgende avvik er identifisert ved egenkontroll. Utbedringer er lagt inn i kildekoden per 17. april 2026 og inngår i første utgave som bygges og publiseres etter denne datoen. Når utgaven er publisert, flyttes hvert punkt til et «Utbedret»-avsnitt med konkret versjonsnummer, og avsnitt 1 *Samsvarsstatus* oppdateres tilsvarende. Per versjon 1.9.0 har egenkontroll ikke identifisert gjenværende avvik på dette nivået i Android-appen. Tidligere identifiserte avvik som er utbedret, er dokumentert i avsnitt 7 (Historikk).
- **WCAG 2.4.7 Synlig fokus.** Android-appen hadde ikke tydelig synlig fokusmarkering på alle egendefinerte visninger (bl.a. FAB-knapper og den egenutviklede retningspilen `DirectionArrowView`). Skjermtastatur- og bryterbrukere kunne derfor miste oversikten over hvor fokus var plassert. *Status per 17. april 2026: utbedret i kildekode. Systemets standard fokusmarkering er slått på for temaet `Theme.Tilfluktsrom` via `android:defaultFocusHighlightEnabled`, og bundne ripple-bakgrunner (`?attr/selectableItemBackground`) er tatt i bruk på ikonknappene slik at fokusringen blir synlig ved tastatur- og bryternavigasjon. Venter på utgivelse.*
- **WCAG 4.1.2 Navn, rolle, verdi.** Retningspilen i kompassvisningen er tegnet på et `Canvas` og eksponerte ikke retnings- og avstandsinformasjon til TalkBack på en måte som ble oppdatert dynamisk. Skjermleserbrukere fikk derfor ikke samme navigasjonsstøtte som seende brukere. *Status per 17. april 2026: utbedret i kildekode. `DirectionArrowView` rapporterer seg som `ImageView` og setter innholdsbeskrivelse på formen «Retning til tilfluktsrom: <retning>, <avstand> unna»; endringer annonseres til TalkBack hver gang retningen krysser en 45°-sektor, med 750 ms-struping mot spam. Retningsbegrepene er oversatt til både bokmål og nynorsk. Venter på utgivelse.*
- **WCAG 1.4.3 Minimumskontrast.** Advarselsbanneret for manglende offline-kart brukte bakgrunnsfarge `#E65100` med hvit tekst. Kontrastforholdet var 3,75 : 1, under AA-kravet på 4,5 : 1. *Status per 17. april 2026: utbedret i kildekode. Bakgrunnsfargen er endret til `#BF360C`, som gir kontrast på omkring 5,5 : 1 mot hvit tekst. Venter på utgivelse.*
- **WCAG 2.3.3 Bevegelse fra interaksjon.** Retningspilen roterte kontinuerlig med kompasset mens brukeren vendte på enheten. Appen tok ikke hensyn til Android-innstillingen «Fjern animasjoner» / redusert bevegelse, og brukere med vestibulære plager hadde ikke mulighet til å slå av den kontinuerlige rotasjonen. *Status per 17. april 2026: utbedret i kildekode. Når `Settings.Global.ANIMATOR_DURATION_SCALE` er 0 (brukeren har slått av animasjoner), snapper retningspilen til nærmeste av åtte 45°-sektorer i stedet for å rotere kontinuerlig. Venter på utgivelse.*
### 3.2 Uforholdsmessig byrde ### 3.2 Uforholdsmessig byrde
@ -64,6 +59,17 @@ Er du ikke fornøyd med svaret du får, kan saken meldes til tilsynsorganet:
- **Nettsted:** https://www.uutilsynet.no/ - **Nettsted:** https://www.uutilsynet.no/
- **Klagerett:** Du har rett til å melde manglende universell utforming av digitale tjenester til tilsynet. - **Klagerett:** Du har rett til å melde manglende universell utforming av digitale tjenester til tilsynet.
## 7. Historikk
### Versjon 1.9.0 — 17. april 2026
Følgende avvik ble identifisert ved egenkontroll og utbedret i denne versjonen:
- **WCAG 2.4.7 Synlig fokus.** Systemets standard fokusmarkering er slått på for temaet `Theme.Tilfluktsrom` via `android:defaultFocusHighlightEnabled`, og bundne ripple-bakgrunner (`?attr/selectableItemBackground`) er tatt i bruk på ikonknappene slik at fokusringen er synlig ved tastatur- og bryternavigasjon.
- **WCAG 4.1.2 Navn, rolle, verdi.** `DirectionArrowView` rapporterer seg nå som `ImageView` og setter innholdsbeskrivelse på formen «Retning til tilfluktsrom: <retning>, <avstand> unna»; endringer annonseres til TalkBack hver gang retningen krysser en 45°-sektor, med 750 ms-struping mot spam. Retningsbegrepene er oversatt til både bokmål og nynorsk.
- **WCAG 1.4.3 Minimumskontrast.** Advarselsbanneret for manglende offline-kart hadde tidligere bakgrunnsfarge `#E65100` med hvit tekst (kontrastforhold 3,75 : 1, under AA-kravet på 4,5 : 1). Bakgrunnsfargen er endret til `#BF360C`, som gir kontrast på omkring 5,5 : 1 mot hvit tekst.
- **WCAG 2.3.3 Bevegelse fra interaksjon.** Retningspilen rotert tidligere kontinuerlig med kompasset, uten hensyn til Android-innstillingen «Fjern animasjoner». Når `Settings.Global.ANIMATOR_DURATION_SCALE` er 0, snapper retningspilen nå til nærmeste av åtte 45°-sektorer i stedet for å rotere kontinuerlig.
--- ---
## Notes for the maintainer (English — strip before publication) ## Notes for the maintainer (English — strip before publication)
@ -71,11 +77,10 @@ Er du ikke fornøyd med svaret du får, kan saken meldes til tilsynsorganet:
This statement is honest today but must be kept up to date. Before using it as a deliverable alongside a public-sector licensing agreement or a live public-sector deployment: This statement is honest today but must be kept up to date. Before using it as a deliverable alongside a public-sector licensing agreement or a live public-sector deployment:
- [ ] Replace `olemd@odinprosjekt.no` in §5 with a dedicated, monitored, public-facing address that the licensee (or you, if self-hosting) commits to reading within the stated response time. - [ ] Replace `olemd@odinprosjekt.no` in §5 with a dedicated, monitored, public-facing address that the licensee (or you, if self-hosting) commits to reading within the stated response time.
- [ ] After each release that ships an accessibility fix, move the corresponding item from §3.1 to an "Utbedret i versjon X.Y.Z" (resolved) list and update §1 *Samsvarsstatus* accordingly. When §3.1 is empty, §1 becomes "i samsvar". - [ ] After each release that ships an accessibility fix, move the corresponding item from §3.1 to §7 (Historikk) under a new `Versjon X.Y.Z` subsection, and update §1 *Samsvarsstatus* accordingly. When §3.1 and §3.2 are both empty, §1 becomes "i samsvar".
- [ ] Replace each *Venter på utgivelse* status with a concrete version number as soon as that version ships, so buyers can verify against the changelog.
- [ ] Update §4 *Dato for siste gjennomgang* at every release where user-facing code or content changes, even if nothing in §3 changes. - [ ] Update §4 *Dato for siste gjennomgang* at every release where user-facing code or content changes, even if nothing in §3 changes.
- [ ] Commission an independent WCAG 2.2 AA audit before the first public-sector deployment. §4 must then be amended from "Egenkontroll" to cite the auditor, their contact, and the audit date. - [ ] Commission an independent WCAG 2.2 AA audit before the first public-sector deployment. §4 must then be amended from "Egenkontroll" to cite the auditor, their contact, and the audit date.
- [ ] Confirm §6 *Tilsynsmyndighet* matches the actual supervisory body for the buyer's sector. For most Norwegian public-sector bodies it is Digdir/Uutilsynet, but sector-specific services (e.g. under DSB or Sivilforsvaret) may have alternative complaint paths. - [x] Confirm §6 *Tilsynsmyndighet*. Digdir / Uutilsynet is the correct supervisory body for this app (confirmed 2026-04-17); no buyer-specific override expected.
- [ ] Re-verify the §3.2 disproportionate-burden claim before publication. WAD requires a documented cost-vs-benefit assessment, not a bare claim. Keep a short internal memo on file. - [ ] Re-verify the §3.2 disproportionate-burden claim before publication. WAD requires a documented cost-vs-benefit assessment, not a bare claim. Keep a short internal memo on file.
- [ ] If an English translation is provided for international reviewers, mark it clearly as a courtesy translation and keep the Bokmål version authoritative. - [ ] If an English translation is provided for international reviewers, mark it clearly as a courtesy translation and keep the Bokmål version authoritative.
- [ ] Re-verify: is the deployed service actually covered by WAD? Privately-owned apps are exempt; coverage begins once the app is procured by a public-sector body or otherwise delivers a public-sector service. - [ ] Re-verify: is the deployed service actually covered by WAD? Privately-owned apps are exempt; coverage begins once the app is procured by a public-sector body or otherwise delivers a public-sector service.

View file

@ -14,8 +14,8 @@ android {
applicationId = "no.naiv.tilfluktsrom" applicationId = "no.naiv.tilfluktsrom"
minSdk = 26 minSdk = 26
targetSdk = 35 targetSdk = 35
versionCode = 12 versionCode = 13
versionName = "1.8.0" versionName = "1.9.0"
// Deep link domain — single source of truth for manifest + Kotlin code // Deep link domain — single source of truth for manifest + Kotlin code
val deepLinkDomain = "tilfluktsrom.naiv.no" val deepLinkDomain = "tilfluktsrom.naiv.no"

View file

@ -46,7 +46,7 @@ class ShelterRepository(private val context: Context) {
.readTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS)
.addInterceptor(Interceptor { chain -> .addInterceptor(Interceptor { chain ->
chain.proceed(chain.request().newBuilder() chain.proceed(chain.request().newBuilder()
.header("User-Agent", "Tilfluktsrom/1.8.0") .header("User-Agent", "Tilfluktsrom/1.9.0")
.build()) .build())
}) })
.build() .build()