Real hardware testing (Pixel 10a) showed NetworkCapabilities.getTransportInfo()
consistently returns a redacted WifiInfo (SSID "<unknown ssid>", masked BSSID)
even for the app's own self-requested WifiNetworkSpecifier network, disproving
this codebase's prior assumption of a self-request exemption from
ACCESS_FINE_LOCATION for that API path (confirmed via native diagnostic
logging cross-checked against `adb shell dumpsys wifi`, which does show and
correctly attribute the true SSID at the OS level). Rather than add a location
permission with a runtime prompt purely for this cosmetic display, the
settings pill now just shows "Connected". Documented as decision 4.24.
flutter_launcher_icons war zwar in pubspec.yaml konfiguriert (image_path,
adaptive_icon_background, adaptive_icon_foreground zeigen bereits korrekt
auf assets/icon/), wurde aber nie mit den adaptiven Icon-Assets ausgefuehrt:
es existierte kein mipmap-anydpi-v26/ic_launcher.xml, nur das alte flache
Icon in mipmap-*/ic_launcher.png. Ohne adaptive Icon-Ressourcen wrapped
Android das flache quadratische Icon selbst in einen synthetischen
adaptiven Icon-Platzhalter mit weissem Rand.
`dart run flutter_launcher_icons` ausgefuehrt - erzeugt jetzt
mipmap-anydpi-v26/ic_launcher.xml plus die drawable-*/ic_launcher_
background.png/ic_launcher_foreground.png pro Dichte aus den bereits
vorhandenen assets/icon/ic_background.png/ic_foreground.png. Auf dem
Pixel_10a-Emulator verifiziert: kein weisser Rand mehr, sauberer pinker
Kreis mit Chevron und "DC"-Logo.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Lock orientation to landscape (sensorLandscape in the manifest,
SystemChrome.setPreferredOrientations in main.dart) and enable immersive
fullscreen, matching the prototype's full-bleed map UI (doc 7.7).
- Add MissionMap widget: flutter_map + standard OSM raster tiles, same
default center/zoom as the HTML prototype (Amsterdam, zoom 16), OSM
attribution bottom-left. PlanScreen now renders it full-screen instead of
the placeholder text.
- Add the release-manifest INTERNET permission (previously only present in
the debug manifest, which would have silently broken tile loading and any
future network calls in release builds).
- Update the smoke test to check for the FlutterMap widget instead of the
removed placeholder text.
Verified with flutter analyze, flutter test, and a real run on the
Pixel_10a emulator (fullscreen landscape confirmed, tiles loading).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Disable Kotlin incremental compilation (kotlin.incremental=false): the
project lives on D: while Gradle's Kotlin daemon caches default to C:,
which crashes with "this and base files have different roots" when
closing incremental caches.
- Drop flutter_map_tile_caching for now: it pins objectbox_flutter_libs
^4.1.0, which fails checkReleaseAarMetadata against newer AndroidX
transitive deps (needs compileSdk 34+, itself built against android-31).
Not used in code yet, so deferred rather than forcing an unverified
dependency_override.
- Add web/ platform for fast local UI iteration without an emulator.
- Ignore .claude/ (Claude Code session state, not project content).
Verified: flutter analyze, flutter test, and a real release build running
on a newly created Pixel_10a-profile Android emulator (API 36).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>