New Features
- Location history - Browse recorded locations by date with a calendar view, see daily stats (distance, trip count, point count), and inspect individual data points (#169)
- Trip detection and visualization - Automatically groups locations into trips, view each trip on a map with colored tracks, distance, and duration (#169)
- Location summary screen - Daily summary view showing aggregated stats like total distance traveled and number of trips (#169)
- Debug log export - Export merged JS and native (Logcat) logs as a text file from the About screen for easier troubleshooting (#170)
Bug Fixes
- Dashboard map crash on tracking stop - Fixed MapLibre/Fabric unmount race condition (IndexOutOfBoundsException) when stopping tracking by keeping map layers mounted but hidden (#175)
- Location table order - Newest locations now appear at the top instead of oldest-first (#175)
- Data loss on sync failure - Location data is no longer deleted when a sync batch fails; fresh items are now prioritized in the queue (#174)
- Android 14+ foreground service crash - Fixed SecurityException on API 34+ by passing the required foreground service type to ServiceCompat.startForeground (#171)
- LocationTable re-render - Fixed unnecessary re-renders in the location table component (#170)
Improvements
- Centralized AppLogger - Replaced all direct
android.util.Logcalls across the native codebase with a centralized AppLogger that supports runtime debug mode toggle (#170) - Consistent log tags - All native log tags are now prefixed with "Colota" and native log export filters to app-relevant entries only (#170)
- KML trip export - Added KML export format with colored trip tracks (#169)
Maintenance
- Removed dead API level checks and unreachable boot receiver actions (minSdk is 26) (#172)
- Cleaned up Kotlin imports, constants, and redundant annotations (#173)
- Expanded unit test coverage for screens and components (#176)
- Updated screenshots and documentation (#169, #170)
Full Changelog: v1.2.1...v1.3.0