Release v2026.08.2
· Android
Highlights
- Codes stopped being rejected the day after a clock repair. The in-app time repair wrote a drift offset that code *generation* used but the validity *check* did not, so once the stored offset aged past its freshness window the app went on producing codes while reporting its clock as "Ok". To the user this looked like the repair working and then silently coming undone about a day later.
- The "clock is off" warning can be dismissed again. Its close button did nothing.
- Complimentary Premium while Play billing is unavailable. Play's payments profile is unapproved, so the Premium purchase was a dead end; a 90-day grant is offered instead, driven by a remote policy so it can be ended or extended without shipping a build.
- The Premium screens are localised into all ten supported languages, and a Premium button that was nearly invisible in dark mode was fixed.
Fixes
- Codes rejected as invalid/expired for about a day after repairing the device clock (Android).
TotpGenerator.check()did not apply the stored drift offset's staleness rule that code generation applied, so a stale offset produced codes the server rejected while the app still displayed its time as correct. Turning on automatic date and time in the phone's settings always worked around it, and still remains the durable fix; 2.1.2 removes the case where the in-app repair itself stopped holding. - The "clock is off" banner's close button did nothing, so the warning could not be dismissed once shown.
- A button on the Premium screen was almost invisible in dark mode.
- An expired complimentary grant kept advertising itself as available, and a grant whose policy window had already closed could still be offered.
Features
- Complimentary 90-day Premium grant while Google Play billing is unavailable, controlled by a remote policy document rather than a shipped constant.
- Premium screens localised into every language the app supports.