Releases: dietrichmax/colota
Releases Β· dietrichmax/colota
v1.6.1
Improvements
- Heartbeat position - Geofence heartbeat now sends the zone center as a synthetic position instead of waking GPS for a real fix, reducing battery usage (#282)
- GPS stall diagnostics - Tracking service logs time-since-last-fix every 5 minutes in exported activity logs to help diagnose silent GPS stalls
- WiFi resume - Reduced WiFi resume debounce from 15s to 2s for snappier geofence zone exit
- Map performance - Same-color track segments are merged into a single GeoJSON feature for faster map rendering
Bug Fixes
- Sync condition in heartbeat - Heartbeat and zone entry flush now respect the configured sync condition (Wi-Fi, SSID, VPN) instead of always sending over any available network
- Pause state restore - WiFi pause now correctly blocks GPS from starting on service restart; motionless countdown is also correctly resumed when the timeout had not yet elapsed
- Android 11 crash - Fixed crash caused by API 31+
NetworkCallbackconstructor and API 33+RECEIVER_NOT_EXPORTEDflag (#288) - Tab bar safe area - Fixed duplicate tab bar on Android 14 (#283)
- Back arrow on tabs - Fixed back arrow incorrectly showing on tab root screens
- Log export - Fixed activity log export missing entries after a process restart
- Today button - Improved tap reliability with a larger hit target (#274)
- Test connection - Fixed protocol validation and private host detection to use native DNS resolution
Full Changelog: v1.6.0...v1.6.1
Latest Development Build
Automated Build (Tests Passed)
Built from commit: d8cf30fa8bce32411fddec30784a9e91c34f8d08
GMS (Google Play Services)
app-gms-arm64-v8a-release.apk - Modern 64-bit devices (recommended)
app-gms-armeabi-v7a-release.apk - Older 32-bit devices
FOSS (F-Droid / no Google Play Services)
app-foss-arm64-v8a-release.apk - Modern 64-bit devices (recommended)
app-foss-armeabi-v7a-release.apk - Older 32-bit devices
v1.6.0
New Features
- Bottom tab bar - Replaced the quick access grid with a persistent bottom tab bar for faster navigation between Dashboard, History, Geofences and Settings
- Dashboard route - Today's tracked route is now shown on the dashboard map with a toggle button
- Daily distance in calendar - Calendar day cells now display the total distance tracked that day
- Stationary heartbeat - Geofence pause zones can now send periodic location updates to the server at a configurable interval to keep the device visible while paused
- Flexible sync conditions - Replaced the Wi-Fi-only toggle with granular sync options: Any, Wi-Fi, specific SSID or VPN
- URL template variables - Endpoint URLs now support date-based variables (
%DATE,%YEAR,%MONTH,%DAY) for hive-partitioned storage - Battery critical status - Dashboard and notification now show when tracking stopped due to low battery (#261)
- Android 17 support - Added ACCESS_LOCAL_NETWORK permission for local server sync on Android 17
- Unlimited retries - Failed uploads are now retried indefinitely instead of stopping after a limit
Bug Fixes
- Dark mode persistence - Fixed dark mode toggle not persisting across app restarts (#276)
- Map auto-zoom - Fixed intermittent auto-zoom failure by deferring fitBounds to the next frame (#275)
- Touch targets - Improved touch target sizes and navigation render performance (#274)
- Dashboard scroll freeze - Fixed frozen touch events on the dashboard after scrolling
- Pause reason display - Fixed WiFi/motionless pause reason not showing on dashboard map when app resumes
- Sync flush on zone entry - Fixed sync queue not flushing when entering a geofence pause zone (#269)
- API template reset - Fixed API template resetting to "custom" when editing custom field values
- Activity recreation crash - Fixed fragment restoration crash on activity recreation
Documentation
- URL template variables - Documented date-based endpoint variables for hive partitioning
- Battery critical - Documented battery critical dashboard status and notification behavior
- Home Assistant - Updated integration guide for the custom Home Assistant component
- Deep link generator - Interactive deep link generator on the setup docs page
Full Changelog: v1.5.1...v1.6.0
v1.5.1
Bug Fixes
- Stale speed profile - Fixed speed profiles staying stuck when stationary because the distance filter was discarding location updates before they reached the profile logic.
- Geofence map position - Fixed map not updating position while inside a geofence pause zone
- Anchor point ordering - Fixed phantom location jump on zone exit by backdating the anchor point timestamp to sort before the first real GPS fix.
Improvements
- Activity Log - New screen in Settings for viewing, filtering and exporting app logs. Includes level filtering, search, auto-scroll with following indicator and share/export.
- Always-on logging - Native and JS logs are now always collected in a ring buffer (2000 entries) without requiring debug mode
- Log privacy - Stripped coordinates from debug logs to protect user privacy when sharing logs
- Notification permission - Clarified that notification permission is required for the foreground service to start, including after reboot
Documentation
- Notification permission - Added notification permission requirement to quick start, troubleshooting, permissions guide and disclosure modal
- GPS settings - Removed obsolete "Pause GPS when stationary" toggle (now handled via tracking profiles and geofences)
- Geofencing - Updated anchor point documentation with timestamp behavior
- API reference - Corrected anchor point description and added timestamp details
- Troubleshooting - Added "Tracking doesn't start after reboot" section and Samsung-specific battery setting
Full Changelog: v1.5.0...v1.5.1
v1.5.0
New Features
- Traccar JSON POST - Added native JSON POST support for Traccar backends with per-backend health checks
- Per-zone WiFi pause - Pause GPS when connected to WiFi inside geofence zones, with a dedicated geofence editor screen
- Stationary tracking profile - New profile condition type that activates when the device is stationary
- Offline maps - Download and manage offline map packs with bounding box picker, size estimates and progress tracking
- Custom tile server - Configure a self-hosted tile server URL, removing the dependency on the default maps.mxd.codes instance
- Self-signed certificates - Support self-signed TLS certificates and HTTP for local/private network servers
- Home screen shortcuts - Start and stop tracking directly from Android app shortcuts
- Geofence entry delay - Keep recording for a configurable delay on zone entry for reliable arrival detection
- Monochrome adaptive icon - Added monochrome icon layer for Android themed icon support
- Interactive line charts - Replaced bar charts with interactive SVG line charts on the trip detail screen
- WiFi/motionless pause reason - Dashboard map banner now shows why tracking is paused
Bug Fixes
- Pause zone marker - Fixed marker icon staying gray after exiting a pause zone
Maintenance
- UI redesign - Redesigned status indicators and trip list cards, replaced colored left borders with cleaner status indicators
- UI consistency - Standardized UI tokens and fixed visual inconsistencies across screens
- Self-hosted tile server - Migrated from OpenFreeMap to a self-hosted tileserver-gl instance, removing an external dependency
Documentation
- Self-hosting guide - Added guide for self-hosting tileserver-gl with local styles and fonts
- Tracking profiles guide - Added priority guidance and example profiles
- Privacy policy - Updated for v1.5.0 features including WiFi pause, motionless detection and self-signed certificate support
- Alternatives page - Added alternatives comparison, integrations overview and FAQ improvements
Full Changelog: v1.4.0...v1.5.0
v1.4.0
New Features
- Offline mode - Improved the "offline UI" to only show relevant informations and settings
- Auto-export - Scheduled background export of location data via WorkManager
- Pause GPS when stationary - Automatically pauses GPS updates when the device is not moving to save battery; resumes on motion detection; on by default
- Configurable units & time format - Choose between metric/imperial and 12h/24h display in settings
- Profile editor pre-fill - Profile editor now pre-fills with current main settings values and shows defaults as hints
Bug Fixes
- ForegroundServiceStartNotAllowedException - Gracefully handle background service start restrictions on Android 12+ instead of crashing
- Condition monitors - Fixed condition monitors not restarting correctly on profile recheck
Maintenance
- Settings UI components - Extracted shared settings UI components (SettingRow, RadioDot, FormatSelector) to reduce duplication
- Reproducible builds - Pinned AGP version and fixed build IDs for reproducible builds
Full Changelog: v1.3.2...v1.4.0
v1.4.0-rc2
Update Node.js requirement to v22
v1.3.2
Bug Fixes
- Custom sync interval - Added the missing UI for the custom sync interval
- Connection test error messages - Improved error messages and added diagnostic logging for server connection tests
- Duplicate geofence anchor points - Persist pause zone state to prevent duplicate anchor points on settings change
- Condition monitor startup - Only start condition monitors (battery, Wi-Fi) when matching profiles actually exist
- Dark theme reverted - Reverted blue-tinted dark theme back to neutral grays
- Process cleanup - Fixed process cleanup in getNativeLogs and added non-null bound to TimedCache
Build & Reproducibility
- FOSS build reproducibility - Added
cleanbefore FOSS builds and pinned dev server IP to prevent GMS artifacts leaking into FOSS variant - CI uses checked-in gradle.properties - Workflows no longer recreate gradle.properties, improving build reproducibility
- Reduced APK size - Use legacy JNI packaging and enable resource shrinking
Documentation
- GeoPulse integration - Added integration template and documentation
- GrapheneOS compatibility - Added note about sandboxed Google Play compatibility
- F-Droid metadata - Moved fastlane metadata to repo root for F-Droid compatibility
Full Changelog: v1.3.1...v1.3.2
v1.3.1
New Features
- Geofence anchor points - Logs a synthetic location at the geofence center on zone enter and exit, giving trips clean start and end points instead of starting or ending mid-road (#183)
- Blue-tinted dark theme - Updated dark theme to a blue-tinted palette and softened light theme borders (#178)
Bug Fixes
- Wi-Fi only sync bypass - Config-change flush now respects the Wi-Fi only setting when switching to instant sync (#183)
- Dead support link - Fixed broken support link in the app
- Trip details map height - Changed to 480px to match dashboard and geofence map
Maintenance
- Updated dependencies and migrated ESLint to flat config (#181)
Full Changelog: v1.3.0...v1.3.1
v1.3.0
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