Skip to content

TimeSync 0.1.0 — first notarized release

Choose a tag to compare

@vu2cpl vu2cpl released this 09 May 08:26
· 19 commits to main since this release

First public, notarized release. Signed with Developer ID Manoj Ramawarrier (CHVNJ85C9F), hardened runtime, accepted by Apple Notary.

What you get

TimeSync.app — a macOS menu-bar app (no Dock icon) that shows your system clock's drift against NTP and a USB GPS, and lets you trigger chronyc makestep from the menu bar via a privileged helper.

Install

  1. Download TimeSync-0.1.0.zip
  2. Unzip, drag TimeSync.app to /Applications/
  3. Open it — clock icon appears in menu bar
  4. Click → Settings… → Helper → Install Helper… (one-time admin auth) to enable the Step Clock button

The app shows useful info on its own. For the Step Clock button to do anything, you need chrony running (this Mac's clock has to be managed by chrony, not the default macOS timed). The companion server/ directory in the repo has an installer that sets up chrony + gpsd as LaunchDaemons; see the README.

Requirements

  • macOS 14 (Sonoma) or later, Apple Silicon
  • USB GPS receiver (NMEA 4800 or 9600 baud) — only needed for GPS-disciplined operation
  • For the Step Clock button: chrony installed and running

Architecture (in brief)

  • Pure-Swift NTP client (UDP/123, no daemon needed for this part)
  • Reads GPS from gpsd over TCP/2947 (JSON line protocol) — no direct serial port access
  • Polls chronyc tracking every 5 s for the canonical drift number (chrony's filtered Allan-deviation Kalman view across all sources is much more stable than any single sample)
  • The privileged helper exposes one XPC method (runChronyMakestep); validates the calling app's code signature

See CLAUDE.md for the development-facing architecture deep dive.

Verifying the download

shasum -a 256 TimeSync-0.1.0.zip
spctl -a -vvv TimeSync.app

spctl should report source=Notarized Developer ID, accepted. SHA-256 of the ZIP is bd2190cae91e04b66e049845ed7dfcb3783289e559be926245ad8829bc814d89.

73 de Manoj VU2CPL