Repository navigation
Releases: tilakp/formzeit-screensaver
Release list
Formzeit v1.1.1 — fixes Strata/Filament never showing the time
Strata's digital readout and Filament's hour numerals never actually appeared on screen: both were drawn with NSAttributedString.draw(at:), which silently no-ops with no current NSGraphicsContext — true of the live per-frame hands-layer pass. Both now draw the same way Classic/Eclipse always have, via CTLineDraw against the real context. This is what was behind both reported problems — Strata going unreadable at night and Filament being hard to read at all.
Once visible, a few more things needed fixing to actually be usable:
- Strata's readout now has a legibility floor, so night dimming and burn-in idling can't crush it back toward invisible.
- Filament's
showNumeralsfactory default wasfalse, contradicting its own doc comment; nowtrue. - Filament's numeral placement could clip 12 and 6 off the top/bottom edge on every display; now clamped by the font's own cap-height.
- Filament's second-comet used to flash brighter than its hour/minute hands, pulling the eye to the one indicator that carries no time information; rebalanced so hour/minute clearly lead, gave them a shared pivot radius so they read as two hands from one hub, and floored their alpha for night.
- Filament's comet decay is smooth again — it was being throttled by a redraw-skip check tuned for a different setting (
movement) that Filament never actually reads. - Filament now respects Reduce Motion.
Also fixed along the way: the v1→v2 accent migration silently never ran for anyone with a saved v1 accent (it checked for a saved value after factory defaults had already made every key look "present"); a stale settings-sheet caption; and Filament's now-unused Movement control is hidden from the settings sheet rather than sitting there doing nothing.
This round came from an independent adversarial code review plus a preview.sh --at HH:MM addition that made it possible to actually look at night rendering instead of guessing at it — audit.sh now has hard regression checks for both faces so this class of bug gets caught automatically next time. Same install steps as v1.1.0 — see the README.
Formzeit v1.1.0 — night lume plates, hub accent, layer split
Three changes since v1.0.2, all on the default Bauhaus face:
- Night plates. "Follow the day" now swaps to one of six night plates between 22:00 and 07:00 — plain Slate, or five lume plates (Green, Blue, Amber, Red, Lavender) where the depth model inverts: marks glow instead of catching an external light, and the hands drop their cast shadow, which is invisible on a near-black plate anyway.
- Accent now colours the second hand and the hub's boss ring, not just the light-based faces. Picked by rendering three candidate hub layers side by side — the boss is the only one with area to spare without flattening the hub's dark/pale contrast.
- The cached face and the live hands are now two CALayers, not two draws into one CGContext per frame. Removes a full-screen CoreGraphics blit every frame; measured ~1.3ms/frame saved at 5K.
Also: the minute hand is a touch thinner. Same install steps as v1.0.2 — see the README.
Formzeit v1.0.2 — fixes a periodic multi-second freeze on Retina displays
v1.0.1's CPU fix regenerated the cached dial face synchronously on the main thread. Measured on realistic Retina resolutions (not the smaller test canvas used to validate v1.0.1): ~1.4s freeze on a 5K display, ~1.9s on a Pro Display XDR, every 5 seconds. Now rendered on a background queue and swapped in — the main thread never blocks on it. Also fixes a real edge case: cache staleness and burn-in dimming used to measure elapsed time via wall-clock Date, which can step backward (NTP sync, sleep/wake) and briefly undo burn-in protection; both now use a monotonic clock. See the commit for full detail — this round came from an independent adversarial code review, not just more manual testing.
Formzeit v1.0.1 — CPU fix
Fixes the screensaver pegging a CPU core. The full scene was being redrawn from scratch on every animation frame; it's now split into a cached face pass (regenerated every 5s) and a lightweight hands-only pass drawn live. Also reduced the night-glow shadow blur radius, which was disproportionately expensive and made the screensaver most costly exactly when left running unattended overnight. See the commit for full measurements. Same install steps as v1.0.0 — see README.
Formzeit v1.0.0
Prebuilt, ad-hoc-signed .saver bundle. Not notarized — after unzipping, macOS Gatekeeper will block it from loading until you remove the quarantine flag. See the README's "Download a prebuilt release" section for the exact (tested) fix. Building from source avoids this entirely.