| Age | Commit message (Collapse) | Author |
|
TrackRepository.addPoint() now returns Boolean (true if point was
added). MainViewModel.addGpsPoint() only updates _trackPoints StateFlow
when a point is actually appended — eliminates ~3,600 no-op flow
emissions per hour when not recording.
MainActivity: loadedStyle promoted from nullable field to
MutableStateFlow<Style?>; trackPoints observer uses filterNotNull +
combine so no track points are silently dropped if the style loads
after the first GPS fix.
Smoke tests: replaced 11× ActivityScenario.launch().use{} with a
single @get:Rule ActivityScenarioRule — same isolation, less
boilerplate.
CI: removed redundant app-debug artifact upload (app-debug.apk is
already included inside the test-apks artifact).
Removed stale/placeholder comments from MainActivity.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
CI — build job now uploads both APKs as the 'test-apks' artifact.
smoke-test job downloads them and passes -x assembleDebug
-x assembleDebugAndroidTest to skip recompilation (~4 min saved).
Test results uploaded as 'smoke-test-results' artifact on every run.
Smoke tests expanded from 1 → 11 tests covering:
- MainActivity launches without crash
- All 4 bottom-nav tabs are displayed
- Safety tab: Safety Dashboard, ACTIVATE MOB, ANCHOR WATCH visible
- Log tab: voice-log mic FAB visible
- Instruments tab: bottom sheet displayed
- Map tab: returns from overlay, mapView visible
- MOB FAB: always visible, visible on Safety tab
- Record Track FAB: displayed, toggles to Stop Recording, toggles back
MainActivity: moved isRecording observer to initializeUI() so the
FAB content description updates without requiring GPS permission
(needed for emulator tests that run without location permission).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
background permission check in tests
|
|
Bug: BitmapFactory.decodeResource() returns null for vector drawables
(ic_tidal_arrow.xml). style.addImage(id, null) then NPE-crashed inside
MapLibre's native layer. The previous style URL was invalid so the
setStyle callback never fired and the bug was hidden; fixing the URL
in c7b42ab exposed it.
Fix: draw the VectorDrawable onto a Canvas to produce a real Bitmap
before handing it to MapLibre, matching the pattern already used in
MapFragment for the wind-arrow icon.
Also adds:
- MainActivitySmokeTest: Espresso test that launches MainActivity and
asserts it doesn't immediately crash — catches this class of bug.
- CI smoke-test job: runs the Espresso test on an API-30 emulator via
reactivecircus/android-emulator-runner after the build job passes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|