v1.4.9 (build 18) — Privacy, State & Locale Fixes
tl;dr: Location sharing now stays off when you turn it off — plus 19 more fixes from a full-repo review.
Turn off live-position sharing and it stays off. Sounds like table stakes — it wasn't. The background tracker armed itself before reading your saved preference, and signing in never checked it at all, so hunters who opted out were quietly broadcasting to their team for the whole hunt. That bug is dead, along with the GPS drain that rode along with it.
The same lifecycle sloppiness had a sibling: your profile survived sign-out. The next hunter on a shared device got greeted by someone else's name, and if they started an area setup, the app would persist a team named after the previous account. Identity now clears properly on sign-out. Three async races — photo upload, parcel union, live positions — got the same treatment: every write-back is stamped, and stale results get dropped instead of overwriting fresh state.
Maps got honest. A failed parcel union used to leave a property highlighted on screen while sending the older geometry to the server, so you'd save a hunting area missing land you were looking at. Dragging a boundary vertex now commits the annotation's centre rather than wherever your fingertip landed. Under the hood, snapshot rendering cancels when you move on, caps itself at three concurrent jobs, and is bounded by actual bytes instead of a count that assumed images were nine times smaller than they are. Avatars stopped re-downloading themselves once per display size.
If you hunt in Norwegian, Swedish, Danish, Finnish or German, numbers finally read like your language: 4,3 m/s, not 4.3. Six strings that were stuck in English now use translations that had been sitting in the catalog all along. Species weights stopped falling back to a flat 5 kg default because of a key-normalization slip, and invite links to private teams now show a pending request status instead of doing nothing and looking broken.
Behind the curtain, we wired up automated store-listing delivery with a locale check that fails loudly when a language code is wrong — Apple, Google and the app bundle each spell Norwegian differently, and we'd rather find out before an upload than after. You won't see it, but it's the groundwork for shipping the app in your language, listing and all.
Build 18 is on TestFlight now. Twenty fewer things to be annoyed about.