Signing up and activating your account — now smooth end to end
The activation e-mail link is now valid for 4 days instead of 24 hours. After you create an account, the app keeps checking in the background and logs you in automatically as soon as the account is activated — even if you click the link on your computer or on another phone, where the app used to stay on its waiting spinner forever. The login screen now tells you clearly whether an account does not exist or is simply not activated yet, instead of the same «invalid credentials» for every case, and opening an activation link a second time explains that the account is already active. A short arithmetic question on the sign-up form keeps automated bot farms out, and a fresh sign-up no longer registers the same phone twice.
«Save location history» now really stops the local trail
This one matters for your privacy. Until now, the Save location history switch in Settings had no effect: it silently flipped back on and your encrypted trail kept being written on the phone whatever you chose. The switch is now honoured — when it is off, no history is stored on the device — and your choice is remembered with your device settings.
Positions are no longer lost when your session renews
When the phone woke up with an expired session, two background requests could renew it at the same moment. A side effect was that positions captured during that short window were treated as delivered to your team although they never arrived, and were therefore never sent again. Session renewal now happens once, through a single request, on both the app and the server, and those positions reach your team as they should.
Logging out always works
Logging out used to wait for the server to answer before clearing anything on the phone. On a dead or hanging network you could press Logout and stay signed in with no feedback. The app now signs you out locally at once and informs the server in the background.
No more empty map outside Europe
Some new users saw a blank grid instead of a map on first launch. The first map shipped by default only covers Europe, and outside it the tile server answered with empty images rather than an error, so nothing reported a problem. New installations now start on OpenTopoMap, which covers the whole world; you can still switch to any other layer in Settings.
Points of Interest keep their collection names
A collection created from the map's Add POI dialog could lose its name after the next synchronisation, and all nameless collections then collapsed into a single row. Collections are now sent to the server with their name, empty collection and POI names are refused, and a crash when saving a POI without any collection was fixed.
GeoFencing Manager — clearer at a glance
Following your feedback, each tab now says which direction it covers: Requests are the people you monitor, Monitor lists the people who monitor you. Every rule card shows whether it triggers on enter, exit or both, the repeated «GeoFence Rule» title is gone, and alert notifications are now titled «Geofence Enter» and «Geofence Exit».
Teams and devices behave as expected
A team you just created no longer disappears from the list when you come back to the Teams screen; the pull-to-refresh spinner no longer stays stuck after you leave the screen mid-sync; and the My Devices section in Settings now explains what it shows. Tapping the app icon while Xopoz runs in the background now simply brings it back, instead of rebuilding the main screen behind a splash.
Tracking keeps recovering after Android stops it
When Android refused to restart the location service, the watchdog that detects such kills was accidentally disarmed until you opened the app by hand — and you were never told the service had stopped. The watchdog now stays armed and keeps retrying. Several rare crashes when leaving the map while it was still loading were also eliminated.
Security hardening and a lighter app
Switching the active device within one session could keep using the previous device's encryption key, leaving the local trail unreadable and forcing a new login; the key cache is now tied to the device it belongs to. Most of the app's internal logic is now obfuscated in the release build, verification tokens are no longer written in full to logs, and an inactive root-detection routine that only gave a false sense of protection was removed — your keys remain protected by the Android Keystore as before. The build tooling was upgraded (Android Gradle Plugin 9, Kotlin 2.2), which together with stricter resource shrinking brings the download to about 5.4 MB.
Transparency note — to understand why some people install the app but never create an account, the app now sends a small app-start record when it is opened from the launcher: device manufacturer, model, Android version and the device's Android ID, plus your device identifier if you are signed in. It contains no position and no account or team data.