Skip to content

v0.1.11 — a loop closing around a tick

Choose a tag to compare

@jorgejiro jorgejiro released this 08 Sep 10:39
· 116 commits to main since this release
831f19a

A new icon, and a crash nobody on a modern phone could have hit.

Install

Open this page on the phone, tap constanza-0.1.11.apk, install over the previous version. No database change.

The icon

The old one was a spiral drawn in the ocre accent. Two releases ago that accent was deleted from the whole app, which left the icon as the last place it survived — the shape was fine, it had simply been orphaned. That is why it read as wrong without it being obvious why.

The new mark is a clockwise arrow closing a loop around a tick: the task, and the habit of doing it again.

The tick is the same green the Today screen already uses to mark a habit done, so the icon shows the app's own glyph rather than a colour chosen to look nice. The ring stays white because colour, everywhere else in this app, belongs to your habits — and the launcher is the one place the app is allowed an identity of its own without competing with them.

It is a real vector, drawn on Android's adaptive-icon canvas, with a monochrome layer so it also works as a themed icon on Android 13 and above. It was checked in an actual app drawer at 108, 72 and 48dp before shipping.

Choosing a language no longer crashes the app — on phones you do not own

Picking any language other than the system one killed the app on launch, and kept killing it until its data was cleared.

This never affected your phone. The mechanism only runs below Android 13; from 13 onwards the platform applies the language override itself and the app's own code stands aside. Every device this app is developed and tested on is Android 13 or newer, which is exactly why it shipped unseen — the supported devices that do run that code are ones nobody looks at.

The cause was a context handed to the UI that had been detached from the Activity behind it, so anything that needed to find that Activity could no longer get there. It is now wrapped rather than replaced, which keeps both the Activity reachable and the translated strings working — the first attempt at the fix kept one and lost the other, and the test suite caught it.

Settings sections look like sections

The three headings on the Settings screen were plain text in the same style as the options beneath them, so nothing read as a heading. They now use the same treatment the Today screen already had.

Export and Import also stop being quieter than the heading that introduces them — an inversion the accent removal had caused, and one that disappeared on its own once the heading stopped competing with them.

What this release does NOT verify

The icon was seen in an emulator's launcher, not on your home screen among your own apps and wallpaper. That is where it finally has to hold up.

A green matrix also says nothing about One UI throttling, background-kill or real doze.

Verification

App unit tests 304/304, domain 57/57, detekt clean on main sources.

Instrumented: the full matrix — API 31 (197 tests) and API 37 (197 tests), zero failures on either, and zero dead test classes.

The locale fix carries a regression test that was checked in both directions: it passes with the fix and fails with the old code restored. A regression test that does not fail on the bug protects nothing.

APK signed with the release key and verified with apksigner (CN=Constanza, OU=jjrapps), aapt2 confirming versionCode 12, versionName 0.1.11, and Auto Backup still off.

Delivered by #114, #115, #116 and #117.