Skip to content

Repository files navigation

Tardy logo: a calendar page headed LATE with a ringing red alarm clock

Tardy

A macOS menu bar app that makes meetings impossible to miss. Tardy watches the calendars in the Mac Calendar app and escalates as a meeting gets closer, from a quiet dot to a flashing LATE counter, with one-click join for Zoom, Teams, Google Meet and more.

License: MIT macOS 14+ Swift 6

Table of Contents

Overview

Calendar alerts on macOS, iOS and Apple Watch all look and sound the same, and they are easy to swipe away. A meeting 15 minutes out gets the same treatment as one starting in 30 seconds.

Tardy escalates instead. The menu bar shows today's date and a dot for your next meeting, adds the time as it approaches, plays a sound and posts a notification at 15 and 5 minutes, runs a live countdown, beeps at one minute, and flashes a LATE counter once the meeting has started until you join or dismiss it.

Important

Tardy works with the native Mac Calendar app. It reads events through macOS's calendar store, so every calendar you want watched (iCloud, Google, Exchange/Microsoft 365, CalDAV, subscriptions) must be added to Calendar.app first: Calendar > Settings > Accounts. Calendars that only live in a web app or another calendar client are invisible to Tardy.

Everything runs locally. Tardy makes no network calls except checking tardy.vpetkov.net for app updates.

Quick Install

curl -fLO https://tardy.vpetkov.net/Tardy.dmg
open Tardy.dmg
# Drag Tardy to Applications, then launch it and allow Calendar access

Requires macOS 14 (Sonoma) or later. The app is signed and notarized by Apple (spctl -a -vv -t install Tardy.dmg should name team 8J9W3ZG4ZN), and every version is also on the Releases page. To build from source, see docs/DEVELOPING.md.

Features

  • Escalating alerts: a sound and a notification at 15 and 5 minutes, a live countdown from 5 minutes, beeps at 1 minute, and a flashing LATE counter that auto-clears after 5 minutes
  • Live date icon: today's weekday and date, plus a red (personal) or blue (work) dot for your next meeting
  • One-click join: a large Join button when a meeting with a link is close, or click any meeting in the list
  • Meeting list: Now / Starts in … / Later today, with each meeting's time and provider
  • Work and Personal calendars: mark each calendar Work or Personal; the dot colors follow
  • Settings window with import and export, so a setup moves between Macs in one file
  • Menu bar clock: optional, with seconds, AM/PM, 24-hour time, day and date; the dropdown always shows a live clock
  • Keyboard shortcut: ⇧⌘M opens and closes the menu from anywhere; change it in Settings > Shortcuts
  • Light on battery: wakes only when something on screen needs to change, and refreshes when your calendars change instead of polling
  • Automatic updates through Sparkle

Supported Meeting Providers

Tardy finds an https meeting link in an event's location, URL or notes (in that order) and recognizes these providers. Only those hosts get a Join button, and invites you've declined or that were canceled are left out entirely:

Provider Example link
Zoom (including ZoomGov) https://company.zoom.us/j/123456789
Microsoft Teams (work and personal) https://teams.microsoft.com/l/meetup-join/…
Google Meet https://meet.google.com/abc-defg-hij
Webex https://company.webex.com/meet/name
GoTo Meeting https://meet.goto.com/123456789
Amazon Chime https://chime.aws/1234567890
Slack Huddles https://app.slack.com/huddle/…
Whereby https://whereby.com/room
Jitsi Meet https://meet.jit.si/room
Discord https://discord.gg/invite
RingCentral Video https://v.ringcentral.com/join/…
Zoho Meeting https://meeting.zoho.com/…

Only https:// links are ever opened. A meeting without a recognized link still gets every alert; clicking it opens Calendar.

Usage

Menu bar When Sound Notification
[WED 16] ● Next meeting more than 30 min away
[WED 16] ● 2:30-3:00pm Within 30 min
[WED 16] 12m - Standup 15 min Sonar "Meeting in 15 minutes"
🔴 4:59 - Standup (until 3:00pm) 5 min, live countdown Sonar "Meeting in 5 minutes"
🔴 0:42 - Standup 1 min 3 beeps
⚠ LATE 1:23 (flashing) Started
  • Click the icon for today's meetings, Join and Dismiss, Mute Sounds and Settings… (⌘,).
  • Settings has panes for General (mute, launch at login), Calendars (watch each one, Personal or Work), Clock, Shortcuts, Updates, and Import & Export.
  • ⇧⌘M (configurable) toggles the menu. Leave it open to watch the live clock.

Settings can be exported to a file and imported on another Mac; see docs/CONFIGURATION.md.

Documentation

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md.

License

MIT © Ventz Petkov

About

A macOS menu bar app that makes meetings impossible to miss: escalating alerts, a flashing LATE counter and one-click join

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages