Commit graph

65 commits

Author SHA1 Message Date
42c28df102 PWA: iOS-hjemskjermhint, kompass-feilmelding og zoom-fiks
- Fjern maximum-scale/user-scalable på viewport slik at siden kan
  zoomes (WCAG 1.4.4). Leaflet håndterer gestikk på kartet selv.
- Legg til Apple-meta-tagger for standalone-modus og statuslinje.
- Vis engangsbanner på iOS Safari om å legge til på hjemskjerm,
  siden iOS ikke støtter beforeinstallprompt.
- Gi tydelig statusmelding når bruker avslår kompasstilgang i
  stedet for å stille reversere til kartmodus.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 13:22:21 +02:00
f0c4a1f5b4 Actionable banner når posisjon ikke er tilgjengelig
Tidligere sto statusteksten igjen på «Venter på GPS…» uansett om
årsaken var manglende tillatelse, avslåtte stedstjenester eller
bare at GPS-en ikke hadde fått fix ennå. For en nødsituasjonsapp
er det en reell feilmodus: brukeren får ingen hint om hva som kan
gjøres for å finne nærmeste tilfluktsrom.

Ny noLocationBanner plasseres øverst i innholdsområdet (rett under
statuslinjen) slik at den ikke kolliderer med de flytende
handlingsknappene over bunnarket, og viser én av tre tilstander:

1. Tillatelse avslått eller ikke gitt — «Posisjonstilgang
   nødvendig for å finne nærmeste tilfluktsrom. Du kan også
   trykke på et merke i kartet.» + «Gi tilgang» som åpner
   ACTION_APPLICATION_DETAILS_SETTINGS.
2. Tillatelse gitt, men stedstjenester slått av — «Stedstjenester
   er slått av. Aktiver dem eller velg et tilfluktsrom fra
   kartet.» + «Aktiver» som åpner ACTION_LOCATION_SOURCE_SETTINGS.
3. Begge OK — banner er skjult og den eksisterende «Venter på
   GPS…»-teksten gjelder.

Helperen updateLocationStatusBanner() kalles fra loadData(),
permission-result-kallbacket og onResume(), slik at banneret
oppdaterer seg både ved appstart, umiddelbart etter avslag, og
når brukeren kommer tilbake fra systeminnstillingene.
AlertDialog-en ved permanent avslag er fjernet til fordel for det
ikke-modale banneret, som lar brukeren fortsatt pan-ne kartet og
velge tilfluktsrom manuelt. Toasten på mykt avslag er beholdt som
en kort bekreftelse. API-nivå-fallbacket bruker
LocationManager.isLocationEnabled på API 28+, isProviderEnabled
for GPS/Network på API 26–27.

Verifisert på emulator i alle fire tilstander (avslag → App
Settings, tjeneste-av → Posisjonsinnstillinger, gjenopprettet).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 10:32:02 +02:00
7ce0827e9f Fjern utdatert notis om 24-timers GPS-utløp i README
Linjen under «Sikkerhet» beskrev 24-timers-grensen på
widget_prefs-cachen som ble fjernet sammen med widgeten i
forrige commit. Appen persisterer nå ikke GPS-posisjon
overhodet, så linjen er erstattet med «GPS-posisjon lagres
ikke — den brukes bare i minnet mens appen er i bruk», som
samsvarer med den allerede oppdaterte teksten i
about_stored_body.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 10:02:14 +02:00
0743eac9dd Fjern hjemmeskjerm-widget
Widgeten har vært en vedlikeholdskostnad uten et klart produktformål:
den duplikerte lokasjonslogikken fra hovedappen, kunne vise inntil
24 timer gammel GPS-posisjon uten alderindikator, og krevde en egen
WorkManager-periodisk oppdatering. Den strategiske vurderingen
(2026-04-17) konkluderte med at den samme nytten kan leveres via
app-åpning eller en lettere mekanisme senere, og at flaten bør
krympes før pitch mot offentlig sektor.

Denne endringen fjerner widget/-pakken for begge flavors
(standard + fdroid), AppWidgetProvider-mottakeren i manifestet,
WidgetUpdateWorker, androidx.work:work-runtime-ktx-avhengigheten,
widget_prefs SharedPreferences-lagringen i MainActivity, samt
widget_*-strenger og linjen om «for hjemmeskjerm-widgeten» i
about-dialogen. Dokumentasjonen i CLAUDE.md, ARCHITECTURE.md,
README.md, STANDING_ON_SHOULDERS.md og fastlane-beskrivelsene
er justert tilsvarende. Historiske changelogs (v3, v5, v6, v7)
er bevisst urørt — de beskriver korrekt hva som ble levert i
de versjonene.

Eksisterende widget-plasseringer på brukernes hjemmeskjerm
forsvinner automatisk neste gang appen oppdateres; Android
fjerner foreldreløse provider-komponenter uten migreringskode.
Begge debug-flavors bygger rent etter endringen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 09:57:45 +02:00
4e6c03c301 Bump versjon til v1.9.1 (versionCode 14) v1.9.1
Patch-utgave som inneholder rettelsen av N-indikatoren i
kompassvisningen. User-Agent og «Dato for siste gjennomgang» i
ACCESSIBILITY.md oppdatert i samsvar.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 19:13:56 +02:00
1303a74d25 Fiks klipping av N-indikator i kompassvisning
Nordindikatoren («N»-merket) ble plassert på en sirkel med radius
min(w,h) * 0,54 fra senter. I stående kompassvisning er dette
bredere enn viewporten, så indikatoren havnet utenfor skjermen når
brukeren vendte omtrent 90° eller 270°.

Ny hjelpefunksjon clampIndicatorRadius finner avstanden fra
sentrum til nærmeste viewport-kant i nordretningen, og klamper
radiusen slik at hele «N»-etiketten holder seg innenfor rammen
uansett rotasjonsvinkel. Seks nye unittester dekker
grensetilfeller, inkludert en sweep over alle 360° som fanget opp
en float-presisjonsartefakt ved 240°.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 19:13:27 +02:00
0efb599b8c Bump versjon til v1.9.0 (versionCode 13) v1.9.0
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>
2026-04-17 19:05:46 +02:00
e4f44ede97 Utbedre WCAG 2.2 AA-avvik og legg til tilgjengelighetserklæring
Fire WCAG-avvik utbedret før appen kan lisensieres til offentlig
sektor (WAD / EN 301 549):

- SC 1.4.3: Advarselsbanner til #BF360C (~5,5:1 mot hvit, var 3,75:1).
- SC 2.4.7: defaultFocusHighlightEnabled i temaet; ikonknapper
  bruker bundet selectableItemBackground.
- SC 4.1.2: DirectionArrowView rapporterer ImageView-rolle og
  annonserer retning + avstand til TalkBack når en 45°-sektor
  krysses, med 750 ms-struping mot spam.
- SC 2.3.3: Snapper til nærmeste 45° når brukeren har slått av
  animasjoner (ANIMATOR_DURATION_SCALE=0).

Nye retningsstrenger i nb/nn/en. JVM-unittester for
sektoraritmetikken sikrer grensetilfeller (negative vinkler,
360°-overgang, vilkårlige vinkler).

ACCESSIBILITY.md dokumenterer tilgjengelighetserklæring etter
WAD artikkel 7, i bokmål med engelsk preambel og
vedlikeholdsjekkliste.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 19:02:55 +02:00
22fad9e1db Fjern shelters.json frå git-sporing
Fila vart lagt til .gitignore i 012da23 men var framleis spora.
Ho vert generert av `bun run fetch-shelters` og skal ikkje versjonerast.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:44:11 +01:00
029cfa45f9 Bump versjon til v1.8.0 (versionCode 12) v1.8.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:39:16 +01:00
015bc0d926 Bytt djuplenkjer frå tilfluktsrom:// til HTTPS App Links
SMS-appar gjenkjenner ikkje eigendefinerte URI-skjema som klikkbare
lenkjer. Brukar no https://tilfluktsrom.naiv.no/shelter/{id} som
opnar appen direkte (Android App Links med autoVerify) eller fell
tilbake til PWA i nettlesaren.

Android: DEEP_LINK_DOMAIN i build.gradle.kts, HTTPS intent-filter,
oppdatert handleDeepLinkIntent og shareShelter med HTTPS-URL.

PWA: assetlinks.json for Android-verifisering, djuplenkjehandtering
i app.ts, base-sti endra frå './' til '/', config.ts for domene.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:37:13 +01:00
ae249d5d47 Dokumenter arkitektur for Android-app og PWA
Beskriver designprinsipp, datapipeline, plattformspesifikke
implementasjonsdetaljar, delte algoritmar (Haversine, UTM-konvertering),
fråkobla-først-strategi og sikkerheit/personvern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:04:49 +01:00
7d40c9e9a8 Fiks PWA: sivilforsvarsinfo, knappetekst og kompassvisning
- Info-knappen (ℹ) åpner nå sivilforsvarsdialog med alle 5 steg,
  med «Om»-lenke i bunnen (som Android-appen)
- Laste-overleggets knapper («Lagre kart» / «Hopp over») får
  tekst fra i18n i stedet for å være tomme
- Kompassvisningen resizes canvas når den blir synlig, fikser
  0×0-canvas når den initialiseres mens containeren er skjult

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:51:42 +01:00
012da23628 Legg shelters.json til .gitignore
Filen genereres ved bygging fra Geonorge-data og skal ikke
spores i git.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:41:19 +01:00
85c3d6953c Gjør PWA-stier relative for fleksibel utrulling
Appen kan nå serveres både på / og under en understi som
/tilfluktsrom uten endringer.

- Sett base: './' i vite.config.ts
- Endre alle absolutte stier i index.html til relative
- Oppdater manifest.webmanifest med start_url: "." og scope: "."
- navigateFallback uten ledende skråstrek

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:35:39 +01:00
8e6dbb6b24 Dokumenter utgivelsesprosess med PWA-distribusjon
Legger til Release Process-seksjon i CLAUDE.md med:
- Steg-for-steg for å lage ny utgivelse
- Bygging av Android APK-er og PWA-tarball
- fj release create og fj release asset create syntaks
- Oppdatert Distribution-seksjon med PWA-tarball

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:30:24 +01:00
4a95e0e23f Fjern unpkg CDN-avhengigheit og legg til slett-buffer-knapp
Leaflet vendora:
- Fjerna CDN <link> for Leaflet CSS (allereie bundla via npm-import)
- Kartmarkør-ikon brukar bundla bilete i staden for unpkg URL-ar
- CSP stramma: unpkg ikkje lenger naudsynt i style-src/img-src

Slett buffer:
- «Slett lagra data»-knapp i om-dialogen
- Slettar localStorage, IndexedDB og tenestararbeidar-bufferar
- Lokalisert til en/nb/nn

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:10:30 +01:00
97225d1e77 Bump versjon til v1.7.0 (versionCode 11) v1.7.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:03:19 +01:00
a829742fe6 Dokumenter bruk av emulator og Maestro for skjermbilete
Legg til Screenshots-seksjon i CLAUDE.md med:
- Emulatoroppsett (AVD, headless start, fake GPS)
- Maestro v2.3.0 for repeterbare skjermbiletesekvensar
- Fastlane-mappestiar for alle tre språk
- Liste over gjeldande skjermbilete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 15:00:44 +01:00
73937c163d Oppdater skjermbilete og README med nye funksjonar
Nye skjermbilete frå emulator (Bergen sentrum):
- Kartvisning, valt tilfluktsrom, kompass med nordindikator,
  sivilforsvarsinfo, og ny om-side med personvernerklæring

README oppdatert:
- Femte skjermbilete (om-side) lagt til
- Nordindikator og tilgjengelegheit nemnde i funksjonslista
- Datakjelde retta: DSB, distribuert via Geonorge
- Sikkerheitsavsnittet utfylt med CSP, 24t GPS-utløp, User-Agent
- Personvernavsnittet utvida

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 14:57:26 +01:00
b34408bc7b Rett datakjelde: tilfluktsromdata kjem frå DSB, ikkje Geonorge
Geonorge er distribusjonsplattforma, men dataeigar er DSB
(Direktoratet for samfunnstryggleik og beredskap). Oppdatert
om-side og personverntekst i alle tre språk (en/nb/nn) for
både Android og PWA.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 14:31:47 +01:00
c1ac68e746 Legg til om-side, personvernerklæring og sikkerheitsforbetring
Om-side (Android + PWA):
- Ny AboutDialog med personvernerklæring, datakjelder og opphavsrett
- Opphavsrett flytta frå sivilforsvardialogen til om-sida
- Tilgjengeleg via «Om denne appen»-lenke i sivilforsvarsdialogen (Android)
  og ny om-knapp i statuslinja (PWA)
- Lokalisert til en/nb/nn

Personvern og sikkerheit:
- Lagra GPS-posisjon utløper etter 24 timar (widget_prefs)
- Widget viser «Trykk for å oppdatere» når posisjon manglar eller er utløpt
- Eigendefinert User-Agent (Tilfluktsrom/1.6.1) i OkHttp
- Content Security Policy (CSP) meta-tag i PWA
- Tenararbeidar bufrar berre HTTP 200-svar (ikkje opake)
- Kartbuffer-metadata runda til ~11km presisjon i localStorage
- crossorigin="anonymous" på Leaflet CSS

i18n-opprydding:
- Unicode-escapes erstatta med UTF-8-teikn i nb.ts og nn.ts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 14:27:45 +01:00
6ba35add2f Legg til TalkBack-støtte og nordindikator på kompasset
Tilgjengelegheit (Android + PWA):
- Semantiske landemerke (header, main, aside, role=dialog)
- aria-live-regionar for statusoppdateringar og lasteoverlegg
- Fokusindikatorar (:focus-visible) og prefers-reduced-motion
- Auka trykkmål til 48dp (infoknapp, oppdater, del, widget)
- contentDescription på kart, kompass og framdriftsindikator
- aria-current og role=listitem på tilfluktsromliste
- Fokusfangst og fokusgjenoppretting i lasteoverlegg
- Ikkje-farge-indikator (▶) for valt tilfluktsrom
- Dynamisk lang-attributt basert på oppdaga språk
- Lokaliserte aria-label (en/nb/nn)

Nordindikator:
- DirectionArrowView teiknar diskret «N»-markør på omkrinsen
- Roterer uavhengig av hovudpila for kompasskalibrering
- Berre på stor kompassvisning, ikkje minipila

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 14:02:32 +01:00
f9f8ac3d60 Dokumenter byggvariantar og distribusjon i CLAUDE.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 18:30:36 +01:00
f5c064ab92 Bump versjon til v1.6.1 (versionCode 10) v1.6.1
- Fjern dependency metadata frå APK-signeringsblokka (dependenciesInfo)
  for F-Droid-kompatibilitet

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 13:15:14 +01:00
8e684f868e Flytt versjon direkte inn i build.gradle.kts for F-Droid-kompatibilitet
fdroidserver parser build.gradle.kts med regex for å finne versionCode
og versionName. Den dynamiske Properties-lastingen fra version.properties
ga "Couldn't find any version information". Erstatt med literale verdier
som fdroidserver kan lese.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:16:05 +01:00
9a00f07362 Fiks F-Droid-metadata: fjern punktum i kort beskrivelse, legg til ikon
F-Droid krever at short_description.txt ikke slutter med punktum.
Erstatt to setninger med én sammenhengende frase med tankestrek.
Legg til 512x512 icon.png generert fra appens adaptive ikon-vektorer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:48:22 +01:00
9925e7ec64 Bump versjon til v1.6.0 (versionCode 9) v1.6.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:35:33 +01:00
6903fb7e70 Flytt signeringskonfigurasjon til gitignorert keystore.properties
Passord og keystoresti var hardkodet i build.gradle.kts og synlig i
det offentlige repoet. Flyttet til keystore.properties som er
gitignorert. Bygget hopper over signering om filen mangler, slik at
F-Droid kan bygge og signere med sin egen nøkkel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:29:53 +01:00
ff4b3245f5 Legg til fdroid-byggvariant uten Google Play Services
Splitt LocationProvider, ShelterWidgetProvider og WidgetUpdateWorker i
to varianter: standard (med Play Services for bedre GPS) og fdroid
(kun AOSP LocationManager). Play Services-avhengigheten er nå begrenset
til standardImplementation.

Begge varianter bygger og har identisk funksjonalitet — fdroid-varianten
mangler bare FusedLocationProviderClient som en ekstra lokasjonskilde.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:25:47 +01:00
f1b405950e Forbedre estimater i STANDING_ON_SHOULDERS med kilder
Erstatt grove estimater med reelle bidragstall fra GitHub, OpenHub og
prosjektsider. Legg til kildelenker for ~20 prosjekter, Mermaid-diagram,
og seksjon med interessante detaljer (SQLite med ~4 utviklere, Leaflet
fra Ukraina). Legg til Forgejo/Gitea og GitHub som manglende lag.

Oppdatert totalestimat: ~119 000 mennesker.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:09:29 +01:00
4c801e86b1 Rett opp blandinga av nynorsk og bokmål i README
README-en hadde ein del nynorskformer (eit, dei, sjå, peikar, lagrast,
osv.) blanda inn i det som elles var bokmål. Retta til konsekvent
bokmål gjennom heile dokumentet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:30:17 +01:00
95e08e30e6 Oppdater README med skjermbilete og bruksrettleiing
Legg til skjermbilete frå appen i toppen av README, ei «Slik fungerer
appen»-seksjon som forklarar kart, kompass og sivilforsvarsinfo, og
lenkjer til personvernerklæring og Standing on Shoulders-dokument.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:25:46 +01:00
567af09072 Bump versjon til v1.5.0 (versionCode 8) v1.5.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:19:12 +01:00
73b583111a Legg til dokument om menneska bak applikasjonen
Estimerer at ~116 000 personar har bidrege til verktøya, biblioteka,
datakjeldene og infrastrukturen som gjer det mogleg å byggje denne appen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:17:23 +01:00
093de8487b Legg til F-Droid-skjermbilete og Maestro-automatisering
Automatiserte skjermbilete for alle tre språk (en-US, nb-NO, nn-NO)
med Maestro-flyt. Fire bilete per språk: kartvisning, valt tilfluktsrom,
kompassvisning og sivilforsvarsinfo. GPS-posisjon er sett til Bergen
sentrum (Torgallmenningen).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:17:16 +01:00
15c6797fcd Vis ventestatus i botnark når GPS ikkje er tilgjengeleg
Når tilfluktsromdata er lasta men GPS-posisjon manglar, viser
botnaka no «Ventar på GPS…» i staden for å vera tom. Posisjonsfiks
erstattar ventestatusen automatisk når han kjem.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:17:07 +01:00
12b83993c4 Bump versjon til v1.4.1 (versionCode 7) v1.4.1
Tilgjenge-, brukarvenlegheit- og metadataforbetringar sidan v1.4.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:21:22 +01:00
e9432756b0 Førebu F-Droid-metadata med fastlane-struktur (#8)
Legg til fastlane/metadata/android/ med tittel, skildringar og
endringsloggar for en-US, nb-NO og nn-NO (versionCode 3–6).
Dokumenter Play Services-avhengigheit og anti-feature-vurdering.

Skjermbilete må framleis leggjast til i images/-mappene.

Closes #8

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:07:01 +01:00
3c1da8adec Legg til haptisk tilbakemelding på knappetrykk og listeval (#11)
Android: HapticFeedbackConstants.VIRTUAL_KEY på alle knappar og
listeelement. PWA: navigator.vibrate(10ms) på same interaksjonar.

Closes #11

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 10:01:58 +01:00
c35ccb91bf Mjuk opp tonen i sivilforsvarsdialog-tittelen
Endrar «når alarmen går» til «hvis/om alarmen går» for å unngå
å implisere at ein nødsituasjon faktisk skjer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:57:58 +01:00
d4364379ab Legg til opphavsrettsmelding
Legg til copyright-notis i README og i sivilforsvarsdialogen i appen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:54:06 +01:00
7ca06948f1 Gjer widget-tidsstempel tydelegare med «Oppdatert»-prefiks
Endrar widget-tidsstempel frå berre «14:32» til «Oppdatert 14:32»
slik at det er tydeleg at dette er siste oppdateringstidspunkt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:53:43 +01:00
1a72314e30 Legg til tilgjengelegheitsetiketter i PWA
- Legg til role=img og aria-label på retningspil-canvas
- Oppdater aria-label dynamisk med avstand ved val av tilfluktsrom
- Legg til direction_arrow_description-streng i alle tre språk

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:53:17 +01:00
fa4c379176 Forbetr kontrast på statustekst for WCAG AA
Endrar status_text frå #B0BEC5 (~4.5:1) til #CFD8DC (~6.5:1) mot
#16213E-bakgrunnen, i både Android-appen og PWA-en.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:52:54 +01:00
a3728798b8 Legg til tilgjengelegheitsetiketter og skjermlesar-fiksar (Android)
- Legg til contentDescription på tilfluktsrom-listeelement for TalkBack
- Erstatt emoji-kompassåtvaring med tilgjengeleg tekstresurs
- Vis «Ventar på GPS…» i staden for «—» ved ukjend avstand
- Legg til content_desc_shelter_item og compass_accuracy_warning-strengar (en/nb/nn)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:52:39 +01:00
5fd76678d4 Legg til sentralisert datakildeoversikt (SOURCES.md)
Samlar all attribusjon og lisensinformasjon for eksterne datakjelder
(Geonorge, OpenStreetMap, DSB) i éi fil. Førebur for issue #9
(internasjonale datakjelder).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:41:48 +01:00
fca34f893b Legg til sivilforsvarsinformasjon med offisielle DSB-retningslinjer (v1.4.0) v1.4.0
Ny info-knapp (ℹ) i statuslinja opnar ein dialog med sivilforsvars-
instruksjonar: viktig melding-signal, flyalarm, søk dekning, lytt til
NRK P1 på DAB-radio, og faren over-signal. Alt innhald er verifisert
mot offisielle DSB-retningslinjer og fungerer utan nett. Støttar alle
tre språk (en, nb, nn).

Fixes #4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 09:32:55 +01:00
e61f503c81 Fiks widget som ikkje viser data utan å opne appen først
Widgeten kunne ikkje hente posisjonsdata i bakgrunnen fordi Android
avgrenser GPS-tilgang for bakgrunnsprosessar (BroadcastReceiver) frå
og med Android 8+. Både FusedLocationProviderClient og LocationManager
returnerte null umiddelbart ved aktiv førespurnad frå bakgrunnen.

Løysinga er å lagre siste GPS-posisjon til SharedPreferences kvar gong
MainActivity får ei ny posisjonsfiks. Widgeten og WidgetUpdateWorker
les denne som siste utveg etter at system-API-ar har feila.

Endringane i detalj:

Widget (ShelterWidgetProvider):
- Brukar goAsync() + bakgrunnstråd for asynkron oppdatering
- Prøver FusedLocationProvider (Play Services), så LocationManager
  (AOSP), og til slutt SharedPreferences som fallback
- Ny metode requestUpdateWithLocation() for å sende posisjon via
  intent extras (unngår separate posisjonsbuffertar)
- Viser tidsstempel (HH:mm) for å sjå når widgeten sist vart oppdatert

WidgetUpdateWorker:
- Aktivt ber om ny posisjonsfiks (getCurrentLocation) i staden for
  berre å lese passiv buffer
- Sender oppnådd posisjon direkte til widgeten via broadcast
- Fallback til SharedPreferences viss aktiv førespurnad feilar
- Ny runOnce()-metode for eingongsoppdatering

MainActivity:
- Lagrar GPS-posisjon til SharedPreferences ved kvar oppdatering
  (saveLastLocation) så widgeten kan bruke den i bakgrunnen

Relatert: #3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 23:08:32 +01:00
3c49dbdcde Legg til automatisk widgetoppdatering og de-Google-retningslinjer (v1.3.1) v1.3.1
Widget oppdaterer seg sjølv via WorkManager kvar 15. min i bakgrunnen,
og i sanntid når appen er open og mottek GPS-oppdateringar.
Oppdaterer CLAUDE.md med de-Google-kompatibilitetsprinsipp.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 22:34:33 +01:00