π§ Sturdier in the field (v0.15.2)
No new features β a reliability pass on the things that can quietly go wrong during a long walk with the phone in a pocket.
- The bird-ID engine can't silently stall anymore. v0.15.0 made sure the microphone can't go deaf unnoticed; this does the same for the model that identifies the birds. iPhones sometimes pull the graphics resources it runs on (especially after the app has been in the background), which could leave it hearing fine but identifying nothing. BirdWatch now notices within seconds, shows "Reconnectingβ¦", and restarts the engine without ending your session. If it keeps failing, it stops with a clear message instead of pretending to listen.
- Stop really stops. Tapping Stop while BirdWatch was reconnecting the mic could leave the microphone on behind a stopped screen, and a quick double-tap on Start could open the mic twice. Both fixed. The keep-awake lock is also always released now β including when a session ends on its own β so the screen goes back to sleeping normally.
- Offline for the long haul. The downloaded bird model used to "expire" from the phone's cache after 30 days, after which it could fail to load with no signal. It now stays put. BirdWatch also asks the phone to keep its storage rather than clearing it when space runs low.
- A weak signal can't hold up announcements. If the natural voice can't fetch a bird's name within a few seconds, the device voice says it instead, and the next bird isn't left waiting. A bad server response can no longer get saved as a bird's "voice" either.
- Location survives a weak GPS fix. A slow or failed location fix in the woods used to count as "location declined" and switch off the out-of-region filter for good. Now only an actual "Don't Allow" does; otherwise your last known location keeps being used.
π The natural voice actually speaks now (v0.15.1)
Turns out the natural announcement voice has likely never played for anyone: the speech service behind it (Cloudflare's MeloTTS) was failing on every request, and the app fell back to the robotic device voice so smoothly that nothing ever looked broken.
- Switched to a better voice. Bird names are now spoken by Deepgram Aura β a more natural, modern neural voice than the one that was failing β with the old service kept as an automatic backup, so one provider having a bad day can't silence the feature again.
- Everything else about the voice is unchanged: fetched once per bird, cached for offline replay, plays through the audio channel so the silent switch doesn't mute it.
π©Ή Sessions that heal themselves (v0.15.0)
The big one for leaving BirdWatch running in a pocket or vest: it can no longer silently go deaf.
- The problem: if a phone call, Siri, an alarm, or another app took over the microphone mid-session, the app kept showing a green "Listening" β while actually hearing nothing. You could walk for an hour detecting zero birds and never know.
- Now: BirdWatch notices within seconds that audio has stopped, switches the status (and the pocket lock screen) to an amber "Reconnecting micβ¦", and quietly rebuilds the microphone connection β retrying until it comes back, like after a call ends. Your session, feed, and stats carry on where they left off. Only a real permission loss stops the session, with a clear Retry message.
- Screen-sleep protection re-arms itself. A quick app switch or pocket-press of the side button used to silently cancel the keep-awake lock, so the screen could sleep minutes later and end the session. It's now re-engaged every time BirdWatch returns to the foreground.
π£οΈ Snappier, leaner voice (v0.14.3)
The natural announcement voice now speaks with no perceptible delay.
- Prefetched just in time. The moment BirdWatch starts working out which bird it's hearing, it quietly fetches that name's clip β so by the time the detection is confirmed a second or so later, the announcement plays instantly instead of after a network pause. Your watchlisted birds are pre-fetched too, so their alerts are instant the very first time (and ready offline before you head out).
- Generated once for everybody. Each bird name's clip is now cached at the source, so the voice model runs a single time per name across all users β faster for everyone and near-free to run.