Skip to content

Releases: dietrichmax/colota

v1.6.1

17 Apr 19:32
d8cf30f

Choose a tag to compare

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+ NetworkCallback constructor and API 33+ RECEIVER_NOT_EXPORTED flag (#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

22 Jan 12:55
d8cf30f

Choose a tag to compare

Pre-release

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

09 Apr 19:29

Choose a tag to compare

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

01 Apr 10:22

Choose a tag to compare

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

28 Mar 21:37

Choose a tag to compare

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

17 Mar 07:34

Choose a tag to compare

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

14 Mar 14:07

Choose a tag to compare

v1.4.0-rc2 Pre-release
Pre-release
Update Node.js requirement to v22

v1.3.2

08 Mar 00:46

Choose a tag to compare

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 clean before 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

03 Mar 11:04

Choose a tag to compare

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

28 Feb 12:08
520c738

Choose a tag to compare

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.Log calls 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