Epigraver 4.0.0

| Tags: dev, macos, screensaver, ai

Epigraver 4.0.0 is actually the first major release feature-wise since its initial release in 2020. The 2.0.0 and 3.0.0 releases had major version jumps because they raised the minimum macOS deployment version. 4.0.0 does this as well. The minimum supported macOS version is now 26.

But there is much more.

Back when I started developing Epigraver, I thought that I needed separate settings for when I am at the office or at a customer’s place and for when I am in my home office. I would run fortune with offensive fortunes turned on in my home office and turned off everywhere else. One way to distinguish between those settings was to look at the Wi-Fi SSID or the network location. And once you start with that, why not have different settings for different weekdays or for mornings and evenings? And one could also run different commands in all those different settings.

It was fun to develop all those settings. After using Epigraver for six years though, I realised that I don’t use them. I had only one schedule setting that just ran whenever and wherever I was. I also had just one command, and it still was fortune. I used different color settings, but there was only one font I liked. I had no need for a different font each time the screensaver starts.

All those settings I never used started to look like bloat to me.

Epigraver 4.0.0 gets rid of all of them. There is just one command, one font, several color settings and one selection of animators to use.

The settings UI now looks cleaner. It also uses less space and fits better with the newer screensaver settings in macOS 26 and 27. I took the opportunity to redo it in SwiftUI.

Back in 2018, when Epigraver was still called Fortune because it only displayed the output of the fortune program, I started adding 3D animations. Those 3D animations rotated the texts around one of the three axes. That looked nice and still does, but it wasn’t really 3D. While searching for a way to get real 3D animations done with Core Animation, I finally learned that I needed CATransformLayer for that. But I never succeeded in coding something that worked the way I wanted it to. I guess I would have needed to invest more time into it than I actually did.

After finishing the new configuration UI, I thought about real 3D animations again. Since we are in the AI era now, I asked Claude Code to create a simple horizontal flip animation that would flip a card horizontally to show the next text of the screensaver on the back of that card. After some iterations, the new horizontal flip animator was done, and with it a new kind of animator was born: the card-based animator. There are now 10 of those card-based animators. They all have “flip” in their names because at some point the card is flipped to show its back.

Epigraver is open source, and you can get it from Epigraver’s home at GitHub.