Chronodget 2.0.0

| Tags: dev, app, widget, ios

Chronodget 2.0.0 has landed in the app store. The reason for the major version increase from 1.2.0 to 2.0.0 is that 2.0.0 requires iOS 16. That enabled me to remove some hacks and workarounds and make the code cleaner.

But there are also some visible changes here. The first one is a link to a usage manual on the main screen of the app. You’ll notice a question mark icon in the navigation bar when opening the app after the update. Depending on the localization used by the app this opens your browser on the English or German usage manual for Chronodget. At the start of 2022 I decided to write a step by step documentation after some relatives of mine downloaded the app and told me they had no idea how to actually use it. Having worked on it for a half year and knowing the reasons for all the design decisions that shaped the app, I had hoped that how to use it would be evident, but the feedback spoke for the opposite. I first wrote the German manual and then translated it into English. Both variants have their own localized screenshots and both sets of screenshots are available in a light and dark mode version. So when you open the manual while having dark mode switched on, the website switches to dark mode as it does for any other page and the screenshots shown are from the dark mode variant of the app. I couldn’t resist the opportunity to tweak the code of the website to add dark mode images.

This version of Chronodget also brings two bugfixes. The first one fixes color handling. It has been a known bug since the beginning that sometimes the displayed colors were somewhat different than what was chosen in the color picker. This was most annoying when trying to fake a transparent widget. One way to do it is to make a screenshot and use the right part of it as the background of the widget. A better way for backgrounds that use one color without any gradients or any other effects is to just use the color picker to pick the background color of the screen and use that as the background color of the widget. Doing that isn’t easy but manageable. You open the picker, tap and hold the eyedropper icon, close Chronodget by swiping up from the home indicator and then release the eyedropper while over the background. Back in Chronodget the background color will be selected in the color picker. But now the background of the widget would look slightly different from the background of the screen. It turned out that mixing up color spaces was the problem. The color picker uses display P3 by default and the widgets used sRGB. Now colors are always converted to display P3 and interpreted as display P3 and colors look as expected.

Another bug that existed since the first release of Chronodget was a somewhat broken font handling on some devices. While working on Chronodget I created several widgets with it. One purpose of this was to afterwards have some templates to ship with the app. The other was to test the app and to improve it based on the insights I got from creating more complex widgets with it. At the time as I worked on the binary clock that is included as a template, the app had no copy&paste feature. That widget contains 11 components that look very similar. Recreating it again and again became boring. So that’s how the app got its copy&paste features. Then after adding the text component type I started to implement a clock I had seen somewhere. You have 4 rows of digits for the hour part and 4 rows of digits for the minute part. The digits for the current time light up while the others remain visible and seem to be switched off. It worked out pretty well and I liked that widget. I had to rework it several times because the first version was too complex and would stop working or not even load on the home screen. But in the end I succeeded to create a version that worked fine. It looked good on my iPhone and my iPad. The app was ready to be put in the app store. As I started to make screenshots of the required sizes I noticed that on the simulators for some device types that last widget looked totally broken. I had not idea why. It looked just fine in the app on those simulators but on the home screens it looked horrible. I retained it as a template because it worked on at least some devices, but I had to remove it from the screenshots. With version 2.0.0 I found a fix. The way I used to set the font is affected by dynamic type adjustments. Why that affected the widget on some devices and not on others and why only on the home screen I have no idea. But finally that bug is gone.

Chronodget 2.0.0 does not have lock screen widgets and currently I have no plans to add lock screen widgets. There is literally not much space for customization there. If the standard clock could be replaced with a widget, I would add that to Chronodget.

iOS 17 will be unveiled next month. Let’s see what changes it will bring for widgets. Even without any exciting changes there, I have some ideas for Chronodget. So maybe version 3.0.0 won’t take as long as 2.0.0.