Skip to content

Releases

Axiom v27.8.1

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 08 Nov 22:23

Updated

  • App Intents APIs – app-intents-ref now documents seven more App Intents APIs, each with an example:
    • @Dependency and AppDependencyManager – Making your app’s services available to intents and queries
    • UndoableIntent – Registering an undo for what an intent did
    • SyncableEntity – Identifying an entity the same way on every device
    • IntentParameterDependency – Letting a query read another of the intent’s parameters
    • LongRunningIntent – Running past the background time limit, with progress shown in a Live Activity
    • CancellableIntent – Cleaning up when a run times out or the person cancels it
    • allowedExecutionTargets – Choosing whether an intent runs in the app or an extension
  • App Intents dependencies – Now covers how @Dependency on an entity or enum fails to build, while @AppDependency there builds and is never filled in. It also includes registering a main-actor store without a Swift 6 warning. The change covers app-intents and app-intents-ref.
  • Siri AI requests a built-in app handles – siri-ai-auditor now flags tools for requests like creating a meeting, which in testing went to the built-in app unless they named your app. /axiom:siri now tests each such request with and without your app’s name.
  • Audit priorities – /axiom:audit now ranks all 34 audit areas when it runs several at once, including siri-ai, iap, and grdb-performance.
  • Health check coverage – /axiom:health-check now runs iap-auditor in projects that use StoreKit and grdb-performance-auditor in projects that use GRDB.
  • Also updated – The foreground example in app-intents-ref now lets a cancel stop the intent, and its examples mark perform() @MainActor only when most of it is UI work, as app-intents advises.

Fixed

  • Project detection – Axiom now turns on in projects whose file names use unexpected case, such as a podfile or App.SWIFT, and stays off in sessions opened under ~/Library, where SwiftPM keeps its own files.

Full Changelog: v27.8.0...v27.8.1

Axiom v27.8.0

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 07 Nov 18:51

New

  • Support for Xcode 27.3 and the 27.3 SDKs – Guidance is updated for the Xcode 27.3 beta and includes 27.3 additions and changes:
    • storekit-ref – Multi-seat subscriptions with per-seat pricing, and the pricing model that replaces the deprecated billing properties
    • foundation-models-ref – The on-device model on Apple TV, and session state that instructions and tools share
    • live-activities – Live Activities started by a Mac app, which a sandboxed app can’t start yet on the macOS 27.3 beta
    • toolbars and uikit-modernization – Separate toolbars for navigation stacks stacked in one split-view column, in SwiftUI, UIKit, and Mac Catalyst
    • swift-testing – UI tests written with Swift Testing
    • iphone-duo – Folding and unfolding iPhone Duo from a UI test
    • touch – Turning off system touch gestures during a critical interaction, and the touch rules in Xcode’s own guide
    • transferable-ref – Drag and drop that keeps an item’s identity
    • passkeys – Asking people to set up the email address that receives their sign-in codes before you send one
    • fundamentals – Reference sex for choosing clinical ranges, and hip circumference
    • camera-capture-ref – Camera direction on tvOS and visionOS
    • callkit-livecommunicationkit – Live Caller ID server changes
    • xcode-mcp-ref – Xcode MCP tool changes, including filtered build settings and simulator-only device interaction
    • swiftui-26-ref – Data detection in native Mac apps
    • app-schemas-ref – The Video schema domain
  • Siri AI – Axiom now covers bringing an app’s own actions and content to Siri AI in the Siri AI Developer Preview:
    • siri-ai – Tool intents, generable entities, entity properties, card snippets, and App Skills, with rules from testing on devices
    • siri-evaluations-ref – Writing and running SiriEvaluations scenarios on a device, including the Mac
    • siri-ai-auditor – Scans an app for what keeps Siri from finding, choosing, or running its actions
    • /axiom:siri – Runs the source audit, build, metadata analyzer, and App Skills check in one pass
  • App Intents mistakes that compile – The new app-intents skill covers intents that build cleanly and then fail when Siri or Shortcuts runs them, from a dependency a cold launch never registers to a build that ships no App Intents metadata.

Updated

  • App Intents reference – app-intents-ref now documents which surface (Shortcuts, Spotlight, Siri AI tools, or schema intents) uses which entity lookup, and which schemas a Siri flow needs together.

Full Changelog: v27.7.3...v27.8.0

Axiom v27.7.3

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 03 Nov 18:58

Updated

  • App Intents – Now covers how an edit intent tells a field the person cleared from one they didn’t mention (valueState, iOS 18.2+), how to tag list rows and selections so Siri can act on “the third one” (appEntityIdentifier, iOS 18.4+), and the Xcode code snippets that scaffold a whole schema conformance. The change covers app-intents-ref.
  • Alerts and action sheets – Adds when to show an alert, an action sheet, or neither, how to word titles and buttons, and where Cancel and destructive buttons go, including the destructive-style rule that action sheets reverse. The change covers hig and hig-ref.
  • VoiceOver in Simulator – Now covers how turning VoiceOver on in a simulator sets the value your app reads (isVoiceOverRunning) without running the screen reader, so testing the screen reader itself needs a physical device. The change covers xcui-ref, device-control-ref, accessibility-diag, and simulator-tester.
  • Simulator taps – Includes that axe touch --down --up is a physical tap and selects an item in an open SwiftUI menu, as --tap-style physical does. The change covers xcui-ref and axe-ref.
  • Custom fonts and Dynamic Type – Now covers how Font.custom(_:size:) grows with Dynamic Type relative to body text, while a fixedSize: custom font never grows. accessibility-auditor now flags fixedSize: custom fonts and suggests relativeTo: only for text that plays another role, such as a title.
  • Sandboxed file access – Now covers how files picked with SwiftUI’s fileImporter need security-scoped access started before your app reads them, as Apple’s documentation says, and how refreshing a stale bookmark needs it too. The change covers sandbox-and-file-access.
  • Document-based apps – Better covers the iOS 27 document model, with an example that refuses a file it can’t read, so autosave never replaces it with an empty document. The change covers app-composition.
  • Rich text editing – Documents TextEditor formatting definitions and text selection as the iOS 26 SDK defines them. The change covers textkit-ref.
  • Current SwiftUI APIs – Code examples across 17 skills use current SwiftUI APIs instead of ones Apple has marked for deprecation, such as foregroundStyle, Tab, toolbarVisibility, and NavigationLink with a destination closure, so your assistant writes current code.
  • Also updated – swiftui-debugging shows how to bring a hidden view to the front of a ZStack without reordering it, and swiftui-containers-ref pairs scrollPosition(id:) with scrollTargetLayout(), as Apple’s documentation does, so the tracked position follows the item on screen.

Fixed

  • axbuild and interrupts – A build you interrupt is reported as interrupted, and a build that finishes just before the interrupt is reported with its real result.
  • MCP server lookups – Finds skills and agents by the names assistants actually use, such as a skill’s file path, axiom:build-fixer, a #section anchor, or any capitalization, and suggests the closest matches when a name isn’t found.

Full Changelog: v27.7.2...v27.7.3

Axiom v27.7.2

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 30 Oct 19:52

Updated

  • Live Activities in Mac builds – Keep Live Activity code out of Mac and Mac Catalyst builds with #if os(iOS) && !targetEnvironment(macCatalyst) until a macOS SDK includes ActivityKit. #if canImport(ActivityKit) and #available leave the code in, and the Mac build fails. The change covers live-activities.
  • Touch recognizers beside mouse code – Set delaysPrimaryMouseButtonEvents only on a custom gesture recognizer that handles the mouse, so a mouse tracking loop that shares a view with touch-only recognizers keeps responding without lag. The change covers touch.

Full Changelog: v27.7.1...v27.7.2

Axiom v27.7.1

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 30 Oct 16:41

New

  • Support for the Xcode 27.2 release – Guidance is updated for the released Xcode 27.2, whose SDKs match the release candidate, and includes 27.2 additions and changes:
    • xcode-mcp-tools – The GetCodeCoverage tool announced in the 27.2 beta and release candidate notes isn’t part of the release, so your assistant won’t try to call it
    • device-control-ref – Device Hub accepts keyboard and mouse input for simulators older than iOS 18, passes touches from a Sidecar iPad or a touch-display Mac through as touches, and needs a USB cable for CarPlay
  • Touch on the Mac – A new touch skill covers making a Mac app work on a touch-display Mac or an iPad connected over Sidecar: moving custom mouse handling to gesture recognizers, sizing touch targets, replacing hover-only actions, and avoiding the gesture recognizers that freeze an app on macOS 27.
  • Mac touch audit – The new touch-auditor agent scans Swift and Objective-C code for what breaks under touch. Run it with /axiom:audit touch, or let health-check run it on macOS projects.
  • Gesture input filtering – swiftui-gestures adds a section on inputKinds:, which limits a SwiftUI gesture to touch, Pencil, or pointer input on the 27 releases.
  • Touch in Mac games – game-input adds how a Mac game receives touch, following TN3216: the mouse events touch is translated into, why a position built from mouse deltas drifts, and handling touch directly with gesture recognizers.
  • Live Activities from Mac apps – live-activities adds Mac apps starting their own Live Activities, which Apple has announced but the macOS 27.2 SDK doesn’t include yet.

Updated

  • Overlay hit-testing – Pass events through an overlay only over the controls beneath it, so the overlay’s own gesture recognizers keep working. The change covers appkit-modernization.

Full Changelog: v27.7.0...v27.7.1

Axiom v27.7.0

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 29 Oct 14:03

New

  • Support for Xcode 27.2 and the 27.2 SDKs – Guidance is updated for the Xcode 27.2 release candidate and includes 27.2 additions and changes:

Updated

  • Now Playing framework – now-playing better covers adopting Apple’s Swift-native Now Playing framework, from content types and playback state to the session life cycle and server-driven remote playback.
  • Xcode MCP tools – xcode-mcp-ref documents where the 27.2 RC now returns a rendered preview’s image and options, which moved to new field names, so code that reads the old names gets no image. It also documents the new preview, folder, and Info.plist options.
  • Xcode Library items – swiftui-previews-ref adds LibraryContentProvider, for listing your own views and modifiers in Xcode’s Library.
  • Layout margins – uikit-adaptive-layout now includes the iOS 27.1 change that sets a plain view’s layout margins to zero by default.
  • ComputeGraph – realitykit-ref goes deeper on building a ComputeGraph pipeline once and running it for many concurrent GPU simulations.
  • App Store Server API – storekit-ref now documents authentication, production and sandbox hosts, which environment to call, and recovering missed notifications.
  • Framework requirements – Now covers requirements and limits Apple states on its framework overview pages, such as the fetch rules in contacts-ref, visionOS getting only diagnostics from metrickit-ref, and ReplayKit’s deprecation in favor of ScreenCaptureKit in screen-capture.

Fixed

  • xcprof recordings of a launched app – With Xcode 27.2, recordings no longer leave a stopped copy of the app running, and Control-C saves the trace.
  • Terminal hints in Claude Code – Build and test recovery hints now reach your assistant.
  • Skill suggestions – Words in a command’s output no longer trigger skill suggestions.
  • axbuild test results – Swift Testing failures on Xcode 27.2 are complete, listed once, and point to the right file.

Full Changelog: v27.6.2...v27.7.0

Axiom v27.6.2

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 26 Oct 19:49

New

  • CloudKit server-to-server requests – cloudkit-ref now covers signing requests to CloudKit Web Services: key setup, what each request signs, the three request headers, and how long a signed request stays valid (10 minutes). It includes a converter for signatures made with Web Crypto (Cloudflare Workers, Deno, and browsers), which CloudKit rejects until they’re converted to DER.
  • Silent pushes without an APNs server – background-processing now covers sending silent pushes through CloudKit. A query subscription in the public database pushes to each subscribed user’s devices when a record is created, so a scheduled server job can wake your app without running an APNs server or storing device tokens.

Updated

  • Background App Refresh – Now covers how turning it off stops refresh tasks, processing tasks, and background pushes alike, and makes any attempt to schedule a background task fail with an error. A new table maps which of the seven scheduling factors gate each background mode. The change covers background-processing, background-processing-diag, background-processing-ref, and push-notifications-diag.
  • Apps users stop opening – Now covers how refresh tasks, processing tasks, and background pushes all depend on recent launches, so background work stops when users stop opening an app. Apple says background pushes aren’t delivered to an app the user hasn’t launched for a while, so the guidance is to refresh when the app opens rather than push more often. The change covers background-processing, background-processing-diag, background-processing-ref, and push-notifications-diag.
  • Rescheduling refresh tasks – Now covers how scheduling a refresh task again replaces the one already waiting and restarts its delay, so an app that reschedules every time a silent push or another background task wakes it keeps postponing its own refresh. The guidance is to schedule from those wakes only when no refresh is already waiting. The change covers background-processing and background-processing-diag.
  • Processing tasks and file protection – Now covers how processing tasks never start before the user first unlocks the device after a restart, and usually run while it’s locked. Files a processing task reads can use no stricter protection than .completeUntilFirstUserAuthentication (the default), because a database protected with .complete can’t be opened while the device is locked. The change covers background-processing and background-processing-diag.
  • Background task scheduling errors – background-processing-ref now matches each scheduling error to its cause. .unavailable means Background App Refresh is off or the app is running in Simulator, and .notPermitted means the app’s Info.plist is missing a background mode or the task’s identifier, or the user has denied the app background launches.
  • Also updated – The example in background-processing-diag that checks for an already-waiting task now compiles without warnings under Swift 6.

Full Changelog: v27.6.1...v27.6.2

Axiom v27.6.1

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 20 Oct 02:01

Fixed

  • Terminal hints – Axiom’s hints after a shell command now skip documentation and source your assistant is only reading, such as a cat or grep of a file that mentions build errors, while still flagging real build and test failures. The change covers Claude Code, Codex, Cursor, and Pi.
  • Agent warnings in Claude Code and Codex – Six agents now warn before they change state:
  • Projects with unreadable folders – When a permission error stops Axiom from reading part of a project, it now keeps its guidance on for the session instead of treating the project as non-Apple. The change covers Claude Code, Codex, Cursor, and Pi.
  • Simulator UI in Cursor – UI workflows now find xcui in an Axiom repository checkout and add --tap-style physical to AXe taps, which SwiftUI controls otherwise ignore while AXe reports success. The Cursor guide now lists which Axiom tools are available there and how to set up xcui.

Full Changelog: v27.6.0...v27.6.1

Axiom v27.6.0

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 18 Oct 23:04

New

  • Siri in audio apps – The axiom-integration skill suite now covers how Siri plays, likes, and adds to playlists in your audio app, through Siri with Apple Intelligence and classic Siri alike:
    • siri-audio – Which Siri paths to build (the iOS 27 Audio schema domain, SiriKit media, and Now Playing commands), in what order, and how to test each
    • siri-audio-ref – Every type, parameter, case, and build error those paths involve
    • siri-audio-diag – Why Siri says “I can’t play that”, can’t find items by name, or works only while the app is open
  • Siri in notes, list, and to-do apps – siri-notes-reminders guides the move from SiriKit’s Lists and Notes intents, which iOS 27 deprecates, to the Notes and Reminders schemas. It covers what to keep for Apple Watch, iOS 26, and classic Siri, how each old intent maps to a schema, and what has no counterpart.
  • App Intents schemas – app-schemas-ref lists what the build requires for each of the 304 App Intents schemas: parameters, properties, enum cases, return types, and file content types. It’s generated from the iOS 27.1 SDK, so your assistant can adopt a schema without a round of build errors.

Updated

  • Siri and Now Playing – now-playing explains which Siri requests (“pause”, “next”, “what song is this?”) run through your remote commands and now-playing metadata. It also shows how to annotate what’s playing with your app’s entities in iOS 27, so “add this to my playlist” resolves against your catalog.
  • App Shortcuts by voice – Traces a phrase that falls through to a web or Maps result, while tapping the shortcut works, to a declined per-app consent prompt (“Turn on [App] shortcuts with Siri?”). The change covers app-shortcuts-ref.
  • Field crash reports in auditors – concurrency-auditor, energy-auditor, and memory-auditor ask for symbolicated crash output in their results, since they can’t run xcsym themselves.

Fixed

  • Crash, console, and profiling steps in MCP clients and Cursor – Each step that runs xclog, xcsym, or xcprof now names the MCP tool and its exact inputs, so an assistant without a shell can follow it. This covers agents such as crash-analyzer and performance-profiler, and the commands that run these tools.

Full Changelog: v27.5.1...v27.6.0

Axiom v27.5.1

Choose a tag to compare

@CharlesWiltgen CharlesWiltgen released this 16 Oct 16:44

New

  • Crash, console, and profiling agents in MCP clients and Pi – In MCP clients, Pi, and skills-only installs, your assistant now follows Axiom’s crash, console, and profiling agents. Over MCP, it runs xcsym, xclog, and xcprof as MCP tools.
  • Project inspection in MCP clients – In MCP clients with a shell, Cursor included, your assistant can now read your Xcode project’s targets, configurations, and build settings with xcproject, without changing the project.

Updated

  • Simulator targeting – When several simulators are booted, screenshots, push notifications, and deep links now go to the simulator you meant, not whichever one booted picks, which can be an Apple TV. Verification screenshots from xcode-debugging show your new build because it installs before launching, and deep-link-debugging pre-approves the URL scheme so an alert doesn’t swallow the first link. The change covers /axiom:screenshot, simulator-tester, and push-notifications-diag.
  • Writing Tools result options – Setting .table in allowedWritingToolsResultOptions on a UITextView throws an exception, so textkit-ref reserves it for NSTextView and textkit-auditor flags it.
  • Temporary allocation – swift-performance adopts withTemporaryAllocation with no #available check or fallback: it needs the Xcode 27 toolchain, not an OS 27 runtime, and works back to iOS 12.2.
  • App Tracking Transparency – app-store-ref lists what Apple doesn’t count as tracking (first-party analytics, linkage that stays on device, fraud prevention and security, credit reporting), so you can tell whether your app needs the ATT prompt.
  • Vision in the Simulator – media-intelligence lists the Vision requests that fail in the iOS 27.2 Simulator and the error each returns, so a Simulator-only failure isn’t mistaken for a bug in your code.
  • iPhone Duo captures – iphone-duo covers screenshots and recordings that come back black for a few minutes after the device boots, a known issue in the Xcode 27.2 beta release notes, so you wait and retry instead of debugging your app.
  • SwiftUI view identity – Reads @identity in Self._printChanges() output as a state reset only for a view already on screen, since every view’s first logged line includes it, so a first appearance doesn’t send you chasing an identity bug. The change covers swiftui-debugging and swiftui-debugging-diag.
  • Test crashes – test-failure-analyzer diagnoses a test crash from its .ips report even when it can’t symbolicate it, and asks for symbolicated output when it needs more.

Fixed

  • MetricKit and Organizer crashes – xcsym now symbolicates MetricKit crash reports, so field crashes from MetricKit show function names instead of offsets. When a crash you exported from Xcode Organizer won’t fully symbolicate, your assistant can now tell you which debug symbols are missing.
  • Hang and CPU-warning reports over MCP – Handing one to xcsym over MCP now leads your assistant to hang or performance analysis instead of a retry.
  • Interrupted console captures – xclog now fails with log stream exited early when the log stream it starts dies mid-capture, so a capture that’s missing lines no longer looks complete. Over MCP, the lines captured before it stopped come back with the error.
  • Stray arguments – When your assistant passes an argument that xcui, xcsym, xcprof, or xclog doesn’t take, the tool now stops with an error that names it, instead of ignoring every flag after it and running with defaults, such as listing the wrong simulator’s apps.
  • Skills over MCP – Your assistant now gets complete code examples and accurate section lists when it reads a skill over MCP, because comments inside code blocks are no longer taken for headings. Search results also describe each skill by what it covers.
  • Sessions in a deleted directory – Starting a session in a directory that no longer exists, such as a removed git worktree, now loads Axiom normally instead of failing its session hook.
  • Cursor agents – In Cursor, the crash-analyzer, triage-analyzer, and performance-profiler agents now give instructions Cursor’s MCP tools can carry out, and delegation hands off to the right agent.

Full Changelog: v27.5.0...v27.5.1