Skip to content

Releases: charlesbeaumont/pip-timer

Pip v1.1.0

Choose a tag to compare

@charlesbeaumont charlesbeaumont released this 22 May 07:58

First substantive update since v1.0.0. Focus: resilience and polish.

New

  • App icon — orange ring + blue dot, visible in Finder, Spotlight, About, and notification banners.
  • Sleep recovery — closing the lid no longer ends the active tracker. On wake, if you were gone longer than the idle threshold you get a prompt to stop at sleep time, continue, or stop-and-resume. Shorter sleeps silently resume.
  • Crash recovery — if Pip exits without applicationWillTerminate (kill -9, panic, force quit), the active session and a 10s heartbeat live in UserDefaults. On next launch a notification lets you stop at last-known activity, continue, or discard — no fabricated end times.
  • Add entry dialog — backfill a session you forgot to track. Calendar popover for date, segmented category, end-time picker, duration in minutes. Tab cycles all fields.
  • Cross-process state sync — multiple Pip instances with the same bundle ID stay in sync via DistributedNotificationCenter (reset in one menu bar item, the other reflects within a few ms).
  • Reset Timer log — explicit Reset Timer clicks append to a ## Resets section in the day's markdown, with the elapsed-before-reset baked into each line.

Improvements

  • Quieter menu bar — elapsed time renders as HH:mm instead of MM:SS/H:MM:SS. No more per-second digit jitter. Solo dot (not tracking) shrunk from 14pt to 9pt; ring + inner dot composition unchanged.
  • Totals submenu — Week and Month lines now read "This week (incl. today): …" so the relationship between Today and the aggregate is obvious.
  • Storage — output directory writes files directly inside the chosen folder (no Daily/TimeTracking/ subdirectory). When no folder is configured, tracking still works in-memory but nothing is written to disk.
  • Break-threshold poll — IdleWatcher polls every 5s instead of 30s, so the threshold crossing is reliably detected.
  • Standup resets on return from break, not just on entering. After a long absence (e.g. an overnight where the Mac stayed awake), the ring reads 00:00 the moment you come back — not gap-minus-threshold.
  • Standup hygiene on launch — if the persisted startTime is older than the break threshold (e.g. Pip was quit overnight), it resets on launch instead of showing 14h elapsed.
  • Idle notification — re-requests authorization when status is notDetermined (works around launch-time auth requests being silently dropped on ad-hoc-signed apps).

Fixes

  • App icon now appears on notification banners (asset catalog instead of bare .icns).
  • Bundle ID renamed from io.theydo.charles.Pip to com.charlesbeaumont.Pip for the OSS repo.
  • Universal binary (arm64 + x86_64) — releases now run on Intel Macs too.

Install / Upgrade

  1. Download Pip-v1.1.0.zip from this release.
  2. Quit any running Pip.
  3. Unzip and drag Pip.app into /Applications, replacing the existing copy.
  4. Right-click → Open the first time (ad-hoc signed). Notification permission carries over from the previous bundle ID install.

Pip v1.0.0

Choose a tag to compare

@charlesbeaumont charlesbeaumont released this 17 May 19:09

First release. A macOS menu-bar standup signal + four-mode time tracker. Lives entirely in the menu bar — no Dock icon, no notifications other than the idle prompt. macOS 13+. Ad-hoc signed: right-click → Open the first time.