Changelog
Every release of Cupertino, newest first. These are the notes the app shows before it updates itself; the builds are on GitHub.
-
1.26.0 ·
Review your open Mail draft, and drive the menu bar.
Mail reads the compose windows you have open, Desktop reads and presses menu bar items without taking the focus, and a driving session can be stopped from its card.
Read the 1.26.0 notes → -
1.25.0 ·
Desktop driving can no longer type into the wrong app.
Keystrokes and clicks are checked against the apps you allowed, removing a Maps place asks for confirmation, Safari clicks land in the tab they were meant for, and the audit log survives a full disk.
Read the 1.25.0 notes → -
1.24.1 ·
apple_safari_read_pagereads the tab as it is now, not as it looked while loading.apple_safari_page_elementscan read a form.apple_safari_fillworks on React forms.
-
1.24.0 ·
- The Simulator surface works on Xcode 27, through DeviceHub.
- The on-screen notice can be placed, resized and given a sound.
-
1.23.0 ·
apple_mail_update_draftnow edits a reply draft instead of refusing it.- Opening or resizing a window could abort the app.
- Every accent, em dash and curly quote in a composed mail was corrupted.
- A mailbox holding fewer messages than the limit could not be listed at all.
-
1.22.1 ·
- Full Disk Access read as denied on every Mac running macOS 27, whether it was granted or not.
-
1.22.0 ·
apple_desktop_set_window_frame, so therectthe surface reports can also be written.- Agents now warn you before they take the keyboard and mouse.
- Driving is now a session that ends, and ending it gives you your app back.
apple_desktop_runtakes a whole interaction in one call.
-
1.21.1 ·
- A reply that went in fine came back as "SOMETHING DID land in it that could not be read back", and the same mix-up could have sent the wrong draft.
- Driven sequences blamed "someone using this Mac" for Cupertino's own keystrokes.
-
1.21.0 ·
apple_desktop_click,apple_desktop_typeandapple_desktop_keycan name the application they are meant for.- Mail, Safari, Notes and the other Node surfaces now say when they change the screen.
- A reply that was sent came back as a reply that failed, and the note argued against the wrong retry.
- Listing Safari's tabs opened Safari.
-
1.20.1 ·
- Cupertino crashed while driving the keyboard, taking every connected client down with it.
- A mail body stopped at its first run, so anything below an inline image was missing.
-
1.20.0 ·
- A Chat pane, so the tools can be tried without wiring an editor first.
- A client that already fetches tool schemas on its own is never fronted.
- A listing too small to be worth searching is served whole, whatever the switch says.
-
1.19.1 ·
apple_safari_read_pagereturned a single-page app's pre-boot shell, forever.
-
1.19.0 ·
apple_desktop_hover, because a click is not a pointer.- The simulator surface introduces itself on connect.
- The role-filter guidance was drawn from Catalyst apps alone.
apple_desktop_activatewas refusing every target, and it was never a permission.
-
1.18.0 ·
- What changed, readable after you have already updated.
- The Simulator's tab bar was there all along; the walker could not see it.
- Turning on "Reach any application" could remove Screen's capture tool rather than widen it.
find_codessays which service delivered a code, becauseconfidencecannot.
-
1.17.0 ·
- A
simulatorsurface. - A depth-capped walk silently dropped every sibling after the first branch that hit the cap.
- A message addressed to a group could be delivered privately to one person.
- Every Maps favourite carried a wrong Apple place id, and synced it.
- A
-
1.16.0 ·
- Mail's composer runs on Cupertino's own Accessibility driver now, behind one grant instead of two.
- Maps can reach the objects its SQL lane cannot.
- Four more Desktop verbs, three of them the kind whose absence makes a write land somewhere else.
- The Mac says when it is being driven, and notices when somebody else is using it.
-
1.15.0 ·
- Cupertino can drive any app on the Mac now, not only the seven it brokers.
- A tool list can be traded for a searchable index now.
- Every tool listing is 4.6% smaller, on every server and without opting in to anything.
- The Maps notes no longer describe a favourite that never got written.
-
1.14.0 ·
- Screen and Sound arrive switched off.
- Visual Studio Code is actually wired now.
- The website's buttons no longer flash blue before the page finishes loading.
-
1.13.0 ·
- Visual Studio Code is configured with one click, not a pasted command.
- ChatGPT & Codex is configured with one click too, and
~/.codex/config.tomlis spliced rather than re-serialised. - The row is called "ChatGPT & Codex" rather than "Codex CLI"
apple_mail_queryis on every mail server now, not only the read-only ones.
-
1.12.0 ·
- A pane per MCP client, in the main window.
- Remove Cupertino's entries.
- Remove… on a server Cupertino did not write.
- Unwiring a project folder.
-
1.11.0 ·
apple_messages_count_messages— counting, grouped, on the Messages surface.- The footer's "More apps" column lists three siblings rather than one.
- The Sound pane advertised the Screen surface's tools.
docs/sound.mdnamed aplaytool that was never built
-
1.10.0 ·
apple_mail_query, projection and aggregation over the Mail index.- The site credits Magenta Creations with the mark
- The Microphone permission could not be granted at all.
-
1.9.0 ·
- A tenth surface,
sound, and the second the app serves in-process. - Report an Issue, Send Feedback and Cupertino Support in the Help menu
- The site cross-links Bastion as a sibling app
- One status verdict per surface, instead of an automation-only glyph.
- A tenth surface,
-
1.8.0 ·
- A fifth surface,
screen, brokering ScreenCaptureKit rather than an Apple app. - Settings separates apps from capabilities, and each has a real icon.
- Claude Code is a drop-in client instead of a copy-a-command one.
- The in-process server is gated by something.
- A fifth surface,
-
1.7.0 ·
- Messages can send a photo, not only text.
- Safari can click, type and scroll on a page — through the extension, with no Apple Event and no TCC grant at all.
- Notes can attach a file to a note, and reading attachment bytes back actually works.
- Every server publishes to the MCP Registry.
-
1.6.0 ·
- The Activity log can be kept, not just watched.
- The log can be exported, and signed if you want it.
- The Activity log has a search.
- Logs and Settings are one click from the menu bar.
-
1.5.0 ·
- Safari can read what a page actually says.
- The Activity log records what a call was made with, not just its name.
- Messages can read one-time codes
- Safari tells the frontmost tab from the merely active one.
-
1.4.0 ·
- Maps can write, and does it without an Apple Event.
apple_maps_list_unfiled_placesreaches the saved places that are in no Guide.- Maps can list the places in a Guide.
- Captured fixtures no longer carry Core Data's triggers.
-
1.3.1 ·
- Maps is the eighth surface, and the first that cannot send an Apple Event.
pnpm probe:maps, and two spikes recording how this surface was nearly lost.looksLikeDateColumnnever matched a single Core Data column.- Wire a single project folder, instead of every session on the Mac.
-
1.3.0 ·
- Calendar answers "when am I free".
- Messages can save an attachment.
- Every server now exposes prompts and resources, not just tools.
- Thirteen workflow prompts, one to three per surface.
-
1.2.2 ·
- The menu bar stops responding.
- A bridge could abort while reporting a broken pipe.
- Two copies of Cupertino no longer fight over the socket.
-
1.2.1 ·
- The bundled servers start.
scripts/verify-servers.sh.
-
1.2.0 ·
- Safari.
- Messages.
- Allow… on a surface whose app is closed.
-
1.1.0 ·
- Updates.
- The network claim.
-
1.0.0 ·