Releases: owntracks/android
Releases · owntracks/android
Release list
v2.6.0-beta1
Security
This release addresses a security advisory covering several intent-handling vulnerabilities. Users are strongly encouraged to upgrade. Thanks to Noel Gomillion & Pranati Majhi at Texas A&M for working with us on this.
- External configuration loading (via
owntracks://URLs and config files) is now disabled by default and must be explicitly enabled in Settings → Advanced - A confirmation dialog is shown when enabling external configuration, warning that any config URL can fully reconfigure the app
- The
allowIntentControlintent receiver now requires a shared secret (intentAuthKey) in every intent, preventing unauthorised apps from triggering location publishes or changing monitoring mode BackgroundServiceis no longer exported; only explicit intents from within the app are acceptedEXITandSEND_EVENT_CIRCULARintent actions have been removedOngoingNotificationservice intents are now explicit- Security-related preferences (
allowConfigurationByURIAndConfigFile,allowIntentControl,intentAuthKey) cannot be changed via imported config files or URLs - Certificate fingerprint verification migrated from SHA-1 to SHA-256
New features
- New Remote Control preferences screen showing the intent auth key (with a copy-to-clipboard button) for use with automation apps such as Tasker
- Config import screen now shows a structured diff of what is changing, with human-readable preference names, highlighting new values alongside the current values — unchanged settings are summarised rather than listed in full
- Waypoints in an imported config are listed individually in the import review screen
- Preference setting (Android 16 and later only) to allow user to enable GNSS location source for Significant Monitoring mode (#2155)
Bug fixes
- DEBUG and VERBOSE log messages are no longer emitted to the system Logcat in release builds, preventing potential PII (e.g. coordinates) leakage via
TimberInMemoryLogTree(CWE-532) - HTTP mode no longer treats an unparsable or empty response body as a send failure. A
200 OKresponse is sufficient to confirm a message was delivered successfully; response body parse errors are logged as warnings and ignored (#2242) - Fix geofences silently failing to register with Google Play Services on devices with significant uptime, due to a
Long.MAX_VALUEoverflow when computing the expiration time (#2245, thanks @Cooad)
v2.5.9
Bug fixes
- Location message validation now properly enforces minimum required fields (timestamp, latitude, longitude, and tracker ID or topic). Also, hopefully we don't crash on receiving a message with null values in (!) (#2235)
v2.5.8
Bug fixes
- Don't crash when MQTT reconnect is attempted with an invalid configuration (whoops!)
- Don't crash when the MQTT client throws an unexpected exception during disconnect
v2.5.7
New features
- Belgian and Estonian translations added
Bug fixes
v2.5.6
New features
- Migrated message queue to use Room database instead of tape2 for better async performance and reliability
- Updated map min zoom levels to allow viewing most of the world (#2176)
Bug fixes
- Fix slow starts by avoiding blocking the main thread on startup with the disk-backed queue.
- Significantly reduced battery drain and improved responsiveness in MQTT mode during poor network conditions by changing reconnection retry strategy from linear to exponential backoff
- Don't show the directions toolbar on Google Maps when the user selects a region
- Fix race condition on network change events (#2201 & #2202)
- Fix MQTT reconnect task being silently ignored if another reconnect was already queued (#2203)
v2.5.5
New features
- Visible reconnection feedback on Connection preferences page (#2156)
Bug fixes
- "Request Location" button on contact now sends the command message to the right topic in MQTT mode (#2101)
- Fixed MQTT not automatically reconnecting after network loss by preventing reconnect tasks from being cancelled prematurely (#2132)
- Fixed crash when location provider returns null location on Android 16 (#2110)
- Significantly reduced memory usage in logging infrastructure by reducing in-memory log buffer from 10,000 to 500 entries and eliminating redundant SimpleDateFormat instances (~98% memory reduction)
- Improved side navigation drawer layout handling for better compatibility with system bars (#2102)
v2.5.5-beta1
New features
- Visible reconnection feedback on Connection preferences page (#2156)
Bug fixes
- "Request Location" button on contact now sends the command message to the right topic in MQTT mode (#2101)
- Fixed MQTT not automatically reconnecting after network loss by preventing reconnect tasks from being cancelled prematurely (#2132)
- Fixed crash when location provider returns null location on Android 16 (#2110)
- Significantly reduced memory usage in logging infrastructure by reducing in-memory log buffer from 10,000 to 500 entries and eliminating redundant SimpleDateFormat instances (~98% memory reduction)
- Improved side navigation drawer layout handling for better compatibility with system bars (#2102)
v2.5.4
New features
- Galician Translation (thanks to Miguel Anxo Bouzada)
- Hebrew Translation (thanks to Ahiel and Natan)
- Dutch Translation (thanks to all contributors)
- Setting a preference that doesn't actually change the value won't have any effects (such as MQTT reconnecting) (#1875)
- Status messages contain the app version and flavour
- There's now an option to send a remote command "request location" to selected contacts from the map view
- New experimental preference
discardNetworkLocationThresholdSecondsthat allows OT to discard locations from inaccurate providers (e.g. network) if there's been a recent location from an accurate provider (e.g. gps/fused). (#2053)
Bug fixes
- Try to not block the main thread when generating an Status Message, which causes an ANR
- Messages that fail to send because the endpoint isn't ready now retry every 10 seconds, not every second
- Import config screen displays JSON config LTR under RTL locales
- setting / importing configuration options that are enums are now case-insensitive
- Fix regression where setting the locatorPriority preference using a number wasn't working (#1874)
- Slightly less noisey and more useful logging at the info level
- Persistent notification updates its "when" displayed time to be that of the last update (#1954)
v2.5.3
v2.5.2
Changelog
Version 2.5.2
New features
- Added
cogfield to location messages showing current bearing (#1777) - Added
statusremote command to retrieve system configuration status (#1618) - On crash, details written to file and then printed at the top of the log next time OT starts
Bug fixes
- Fix crash where changing the theme via setting the preferences remotely causes the theme change to not happen on the main thread
- Fix crash where trying to close the MQTT connection whilst it's connecting thows an unhandled exception
- Only latest stop reason should be printed to logs on startup
- Fix bug where geofencing client wasn't initialized properly, leading to very unreliable region transition detection (#1764)
- Fix bug where some settings (
pubQos,mqttProtocolLeveletc.) couldn't be set via the config editor (#1801) - Fix crash when trying to decode an invalid face image on an info card
- Fix MQTT disconnect when receiving an encrypted message that can't be decrypted (#1831)
- Fix HTTP client certs not working properly with Nginx (#1793)
- Fix ability to handle trigger="v" and "C" locations generated from iOS (#1768)