Skip to content

Nightbell 3.0.2 — the cutout on every surface, and a cold start that rings

Choose a tag to compare

@riveerxd riveerxd released this 10 Aug 12:42
· 7 commits to master since this release

The icon is finally the same icon everywhere, and a cold start now rings.

Fixed: two surfaces had no heartbeat

The widget header and the status-bar glyph had shipped as solid bells since 3.0.0, while every other surface carried the trace knocked out of it. That is exactly why they looked wrong on a home screen: they disagreed with the launcher icon sitting next to them.

The reason I had given for it was wrong rather than merely cautious. The claim was that at 18dp the slot is "under two pixels" — that was the dp figure read as pixels:

1x 2x 3x 4x
widget header (18dp) 1.0 px 2.0 px 3.0 px 4.0 px
status bar (24dp) 1.3 px 2.7 px 4.0 px 5.4 px

All six drawables carry the trace now. The two 24dp canvases widen it by a third so the hole survives a 1x density and the antialiasing of a very small render.

docs/brand/verify-mark.png is the check, and it is the artefact that would have caught this a release earlier: thirteen surfaces in one image, where two solid bells among eleven carved ones are obvious at a glance.

Added: the cold-start animation

The bell arrives, rings, and the word wipes in beside it, over 2.8 s, on cold start only. It draws the same Compose mark the dashboard header uses, so it cannot drift from the icon it is introducing.

Three details worth knowing, because all three only showed up on a screen recording rather than in the code:

  • Android draws its own splash first from API 31, and the default puts the launcher icon on a white circle. The splash window is now themed with the app's void and its own mark, no plate, so the platform's screen is the first frame of ours instead of a competing one.
  • The bell used to jump left at the handoff, because the system centres the icon and the animation centres bell and word. It now starts where the platform left it and drifts into place as the word arrives.
  • The last 0.7 s is the finished lockup sitting still. That hold is the point, not padding: an opening that dissolves the instant it resolves reads as a glitch.

Skipped entirely when the system says animations are off, and it does not replay when you rotate the device.

Updating

Same signing key as 3.0.1, so 3.0.1 updates in place. Coming from 3.0.0 still needs an uninstall first, because 3.0.1 changed the key; coming from Pulse 2.x still needs export/import, because 3.0.0 moved the package. See docs/MIGRATION_3.0.0.md.

Verified

359 JVM tests and 103 on-device tests green. minSdk 26 (Android 8.0), targetSdk 36.

Nightbell-3.0.2-release.apk · 2,160,440 bytes
sha256 6a5a2a858ac3e245657b7c6a284596626a78f58eddf749f3af550f099be11115

SHA-256 20:d8:ab:da:a8:41:6a:9a:75:1e:3e:a1:44:ef:15:23:d7:dd:ba:ae:ee:9e:c6:be:01:d6:3a:65:57:4a:70:de