PWA-utgivelse: synleg del-ikon og deferred autoupdate. Ingen
funksjonelle endringar i Android-koden — versjonsmetadata følgjer
PWA-en for samkøyrde utgivingsmerke.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Punktutgivelse med stabile djuplenker (romnr i staden for lokalId),
PWA-deling, og fiks for hengande oppdater-knapp og gjentatt
kart-bufferspørsmål.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
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>
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>
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>
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>
- Fjern dependency metadata frå APK-signeringsblokka (dependenciesInfo)
for F-Droid-kompatibilitet
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
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>
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>
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>
Konfigurerer release-signering med keystore i ~/.android/ slik at
release-APK kan bygges og distribueres direkte.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add scripts/fetch-shelters.sh: downloads Geonorge data, converts
UTM33N→WGS84 via PWA script, copies to both Android assets and
PWA public dirs
- Bundle pre-processed shelters.json (556 shelters) in APK assets
so the app works immediately on first launch with no network
- ShelterRepository.seedFromAsset(): seeds Room DB from bundled
JSON on first launch, marks as stale so network refresh is
attempted in the background
- MainActivity.loadData(): seeds from asset before trying network,
always attempts background refresh when data is stale
- Add version.properties (1.1.0, versionCode=2) as single source
of truth for versioning
- build.gradle.kts reads version from properties file and exposes
via BuildConfig
- Bump PWA version to 1.1.0 to match
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Android app (Kotlin) that locates the nearest public shelter (tilfluktsrom)
in Norway. Designed for offline-first emergency use.
Features:
- Downloads and caches all 556 Norwegian shelter locations from Geonorge
- GPS-based nearest shelter finding with distance and bearing
- OSMDroid map with offline tile caching for surroundings
- Large directional compass arrow pointing to selected shelter
- Compass sensor integration for real-time direction updates
- Shows 3 nearest shelters with distance, capacity, and address
- Toggle between map view and compass/arrow view
- Auto-caches map tiles on first launch for offline use
- Weekly background data refresh with manual force-update
- i18n: Norwegian Bokmål, Nynorsk, and English
Technical:
- EPSG:25833 (UTM33N) → WGS84 coordinate conversion
- Haversine distance and bearing calculations
- Room database for shelter persistence
- Fused Location Provider for precise GPS
- Sensor fusion (rotation vector with accel+mag fallback) for compass
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>