Skip to content

1.3.0 — Native Mac app

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 10:25

Splitrail 1.3.0 replaces the resident Python/Qt Mac app with native Swift/AppKit. It lives in the menu bar with no Dock icon and keeps accounting and private GitHub sync in disposable workers.

  • Compact 450 × 370 dashboard: regular text, one timestamp, shortened model names, centered date selection, no graph or redundant labels/arrows/reset count. Dashboard, Limits and Settings remain.
  • Incremental log parsing, batched file notifications, no hidden unarmed quota polling, and no UI countdown loop. Settings preserve pricing, themes, import/export and private sync preferences.
  • Routine quota reads avoid launching Codex. Initial/hourly reset-date checks and fallback still use a read-only helper.
  • The Mac cutoff requests generation Stop instead of terminating an engine. It requires Accessibility and a compatible exposed Stop control. It is one-shot and does not protect hidden/background/CLI turns. Live interruption remains unverified; 35 mock-only adapter tests pass. See the included TURN_INTERRUPTION.md.

On the same Apple silicon Mac, physical footprint measured 28.2 MiB for the native idle dashboard versus 105.0 MiB for 1.2.6. After opening Settings, the app used 37.3 MiB and retained 35.3 MiB hidden. Process-tree peaks were 47.5 MiB for routine refresh, 67.4 MiB for private sync, and 159.9 MiB for the initial reset-date query. These are sampled observations, not memory guarantees or battery-life estimates. Full methods and scheduling are in MACOS.md.

Validation: 352 Python tests completed (3 skipped), native model tests, 35 mock Stop tests, bundle and external-collector checks. The installed app displayed real usage/quota and synced three devices. Built and tested locally; no GitHub Actions or Codemagic run was started.

Download the arm64 ZIP for Apple silicon Macs on macOS 14+. The app has a local ad-hoc signature and is not notarized. It does not install Xcode or Command Line Tools. The Python .pyz retains the Qt interface for other supported platforms. Windows/Linux binaries remain in their earlier releases.

Verify downloads with SHA256SUMS.txt. Existing local data and private repository settings are retained.