What changed in each release, and why. Written for anyone who wants to know what was actually wrong, not only that something was fixed.
Most of this release is one theme: two parts of the app describing the same weather differently, or a value that was written but never read.
It asked the system for an exact alarm and the system wrote down an inexact one — armed ten minutes out it came back with a seven-minute window, so the reminder could land any time inside it, or not at all in Doze. It now uses the same alarm-clock tier the adhan uses.
The notification shown while the adhan plays sat on a channel whose own sound was the adhan. On phones that honour that — Samsung does — you heard it twice, a fraction of a second apart. That notification is silent now; the sounding channel remains only for when playback is impossible.
Weather code 1 was grouped with "partly cloudy" in the icon map, so the words said one thing and the picture another.
Near sunrise and sunset the background ignored the weather entirely. A clear sky should not lose those two moments — a thunderstorm should not lose to them either.
Image loading kept the first picture it ever drew, so the icon only changed after the screen was rebuilt — which is what switching tabs and coming back does.
The app had a function for handing the widget its icon, temperature and sky. It
was never called. The widget also only accepted a background whose name ended in
.png, and every sky in the app is a .webp.
"in" and "remaining" were written into the layout in English and never replaced, so an Arabic widget still read them in English.
A card with no forecast yet fell back to weather code 0 — clear sky — so a list opened as a row of suns and corrected itself one by one. Forecasts also load together now instead of one after another.
Choosing Toronto could leave the previous city's sunny reading on screen under Toronto's name until the new one arrived.
The prayer page recalculated on each read; the home card read a stored value that nothing refreshed. The same app disagreed with itself about when Asr was.
In the two-column grid the high and low temperatures wrapped across three lines and stretched the card. They are one line now.
Store metadata, and the build settings Play's optimization report asks for.
Sound names are written with hyphens and the files on disk use underscores, so the test button built a path that could never resolve — and reported no error.
The setting asked for a link to an mp3; it now opens the system file picker, and keeps read access so the alarm can still open the file weeks later.
Through the vibrator rather than touch feedback, so it works with the phone's touch-vibration setting switched off.
R8 was running with optimization disabled by the default configuration file. Enabling it, along with repackaging and precise resource shrinking, cut the app and sped up a cold start.