
Calendar Mirror
Release notes
What changed in each release, including the fixes.
1.4.0
In reviewsubmitted 28 August 2026
Submitted to the App Store and waiting on review.
Until it clears, the App Store version is 1.3.0 — everything below is available today
if you build it from source.
New
- Choose which events get copied, without tagging them. A pair can now skip events
you declined, ones you haven’t answered, ones the organiser cancelled, all-day
events, and events marked free. It can skip anything shorter or longer than a set number
of minutes, skip or keep titles containing particular words, and limit copying to a
window of the day on chosen weekdays. This works on calendars you don’t control
— a subscribed work feed, a team calendar — where tagging individual events
was never an option.
- A rebuilt management window on Mac. Pairs are listed down the side, grouped by
the calendar they copy into, and each one opens in its own pane. Sections collapse to a
single line describing what they’re set to, so a pair with a dozen settings still
reads at a glance.
- Put a label in front of copied titles. Set a prefix like
[Work] and
every copy carries it. It applies to hidden titles too, so a busy-only pair can still say
where the block came from — [Work] Busy.
- Copy the meeting link across. A pair can carry the source event’s link into
the copy’s notes, so a mirrored meeting isn’t a dead end you can see but not
join. Off by default, and suppressed on any event marked
#private — a
meeting link says plenty about a meeting whose title you chose to hide.
- A new menu-bar icon on Mac. The bar used to show a bare checkmark, triangle or
cross — symbols that said nothing about which app they belonged to. It now shows
Calendar Mirror’s own icon, redrawn at menu-bar size, with a face that changes by state:
a smile when every copy is current, warning triangles when one has fallen behind, crossed
eyes when one is failing, a flat expression when you’ve paused it, and a plus when
no copies are set up yet. The outline stays identical in every state, so the icon never
shifts position in the bar when something changes.
- Sync as your calendars change. On the Mac version built from source, Calendar Mirror
can watch for calendar changes and sync within seconds of one, instead of waiting for the
next scheduled run. A five-minute pass still runs underneath as a backstop, and also
repairs anything deleted by hand. This is macOS-only and applies to every pair at once,
because macOS reports that something changed without saying which calendar.
Changed
- The in-calendar note is now a warning, not a heartbeat. Previously a pair could
write an all-day “last synced” note into the destination on every successful
run. It no longer does: a healthy pair writes nothing at all, and a note appears
only when a pair stops syncing. Destination calendars are usually ones you share, and a
daily “still working” marker was an artefact other people could see that told
nobody anything useful. Old notes are removed automatically on the first sync after
updating.
Fixed
- Copies were rewritten on every run when the source calendar reissued its identifier for
an event that had not otherwise changed. Nothing was lost, but the copies churned
needlessly — and on a shared destination, that churn was visible to everyone.
- Saving a pair in the Mac management window could switch realtime syncing on for every
pair, whether or not it had been turned on.
Event filters are covered thoroughly by the test suite, but they have had
comparatively little exercise against real declined and cancelled invitations in the wild.
If a filter drops something it shouldn’t, or keeps something it shouldn’t,
please open an issue.
1.3.0
27 August 2026
On the App Store
New
- Choose what each copy carries. Copy events in full, or just the title and
location, or replace every detail with a plain block reading “Busy”. Location,
notes and alarms can each be turned on or off, and any pair can force its copies to show
as busy.
- Control single events with a tag. Type
#nomirror into an event’s
notes to skip it, #private to copy it as a busy block with no details, or
#public to copy it in full even on a pair that normally hides things.
- Copy only the events you choose. Point a pair at a tag and it mirrors only the
events carrying it — or skips them. Useful when one shared calendar holds far more
than you need.
- Carry tags without the note. Notes can come across in full, not at all, or as
tags only, which puts the tags on the copy and leaves the note text behind.
- Set the background interval on iPhone and iPad. Choose 15 minutes, 30 minutes,
1 hour or 2 hours. iOS decides when background refreshes actually run, so this is the
earliest a sync may start rather than a promise — pull down on the list any time for
an immediate update.
Fixed
- Events from subscribed calendar feeds were re-copied on every sync. They could be
re-identified each time they were fetched, which caused repeated updates and duplicate
copies.
- Copies were rewritten every cycle when the source calendar reported no availability
information.
- On iPhone and iPad, the app reset its own background schedule to 30 minutes after each
run, discarding the interval that had been set.
1.0.1
9 July 2026
Fixed
- Duplicate copies could build up in the destination calendar. The cause was the app
acting on an incomplete view of a calendar that was still loading; it now waits for a
settled view before changing anything.
1.0
4 July 2026
New
- First release. Copy any calendar into any other, one direction only, on iPhone, iPad
and Mac.
Versions 1.1 and 1.2 were prepared but never released; their changes ship as
part of 1.3.0.