Skip to content
sec · changelog

Changelog

Every release of Cupertino, newest first. These are the notes the app shows before it updates itself; the builds are on GitHub.

  1. 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 →
  2. 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 →
  3. 1.24.1 ·

    • apple_safari_read_page reads the tab as it is now, not as it looked while loading.
    • apple_safari_page_elements can read a form.
    • apple_safari_fill works on React forms.
    Read the 1.24.1 notes →
  4. 1.24.0 ·

    • The Simulator surface works on Xcode 27, through DeviceHub.
    • The on-screen notice can be placed, resized and given a sound.
    Read the 1.24.0 notes →
  5. 1.23.0 ·

    • apple_mail_update_draft now 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.
    All 5 changes in 1.23.0 →
  6. 1.22.1 ·

    • Full Disk Access read as denied on every Mac running macOS 27, whether it was granted or not.
    Read the 1.22.1 notes →
  7. 1.22.0 ·

    • apple_desktop_set_window_frame, so the rect the 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_run takes a whole interaction in one call.
    All 12 changes in 1.22.0 →
  8. 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.
    Read the 1.21.1 notes →
  9. 1.21.0 ·

    • apple_desktop_click, apple_desktop_type and apple_desktop_key can 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.
    Read the 1.21.0 notes →
  10. 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.
    Read the 1.20.1 notes →
  11. 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.
    Read the 1.20.0 notes →
  12. 1.19.1 ·

    • apple_safari_read_page returned a single-page app's pre-boot shell, forever.
    Read the 1.19.1 notes →
  13. 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_activate was refusing every target, and it was never a permission.
    Read the 1.19.0 notes →
  14. 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_codes says which service delivered a code, because confidence cannot.
    Read the 1.18.0 notes →
  15. 1.17.0 ·

    • A simulator surface.
    • 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.
    All 31 changes in 1.17.0 →
  16. 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.
    All 12 changes in 1.16.0 →
  17. 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.
    All 6 changes in 1.15.0 →
  18. 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.
    Read the 1.14.0 notes →
  19. 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.toml is spliced rather than re-serialised.
    • The row is called "ChatGPT & Codex" rather than "Codex CLI"
    • apple_mail_query is on every mail server now, not only the read-only ones.
    All 6 changes in 1.13.0 →
  20. 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.
    All 10 changes in 1.12.0 →
  21. 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.md named a play tool that was never built
    Read the 1.11.0 notes →
  22. 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.
    Read the 1.10.0 notes →
  23. 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.
    All 9 changes in 1.9.0 →
  24. 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.
    All 8 changes in 1.8.0 →
  25. 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.
    All 13 changes in 1.7.0 →
  26. 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.
    All 12 changes in 1.6.0 →
  27. 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.
    All 13 changes in 1.5.0 →
  28. 1.4.0 ·

    • Maps can write, and does it without an Apple Event.
    • apple_maps_list_unfiled_places reaches 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.
    All 7 changes in 1.4.0 →
  29. 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.
    • looksLikeDateColumn never matched a single Core Data column.
    • Wire a single project folder, instead of every session on the Mac.
    All 9 changes in 1.3.1 →
  30. 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.
    All 12 changes in 1.3.0 →
  31. 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.
    Read the 1.2.2 notes →
  32. 1.2.1 ·

    • The bundled servers start.
    • scripts/verify-servers.sh.
    Read the 1.2.1 notes →
  33. 1.2.0 ·

    • Safari.
    • Messages.
    • Allow… on a surface whose app is closed.
    Read the 1.2.0 notes →
  34. 1.1.0 ·

    • Updates.
    • The network claim.
    Read the 1.1.0 notes →
  35. 1.0.0 ·

    Read the 1.0.0 notes →