Shipped v0.3.9 this week. Nothing flashy — a set of changes that make the compiler easier to trust when something goes wrong, and cleaner to talk to from an agent.
axint doctor
Running axint doctor now checks the things people actually get wrong: Node version, Xcode toolchain presence, that xcrun swiftc resolves, whether the MCP manifest is registered with the configured editors, whether the registry credentials are valid, and whether the current working directory is a real Axint project. Everything with a short fix suggestion next to the diagnostic.
It's the kind of command you reach for at 11pm when the build fails and you don't want to read a stack trace. Modelled after brew doctor and rustup doctor — we're not inventing anything, just paying attention to the ergonomics.
The .feature tool
Agents kept doing the same three-step sequence: scaffold a template, read the user's intent description, re-shape the template. We turned that into axint.feature — one MCP call that accepts a natural-language feature description and returns a compilable defineIntent/defineView/defineWidget starting point. The agent still validates and compiles; .feature just collapses the scaffolding step.
Source Editor Extension
There's now a tiny Xcode Source Editor Extension that lets you select a defineIntent block in a TypeScript file and trigger "Compile Selected Intent" from the Editor menu. The Swift output is inserted into the adjacent .swift file. No Xcode rebuild, no CLI roundtrip. For people who live in Xcode but author intents in TS, this is the missing link.
Swift output validator
The four-stage validator already catches AX-series errors in the source TS. v0.3.9 adds a post-emit pass that shells out to swiftc -parse on the generated Swift and surfaces any remaining errors against the original TS source location. When the error is a generator bug (rare) rather than a user bug, you get a stack trace that points at Axint, not at your file — which is exactly what you want.
Dot-notation MCP tools
We renamed axint_compile → axint.compile, axint_validate → axint.validate, axint_eject → axint.eject, axint.explain (new). The underscore names are still registered as aliases for one release. Claude Code and Cursor both prefer the dotted form — it groups better in tool pickers, and it mirrors how the CLI subcommands already read.
Annotations (readOnlyHint, destructiveHint, idempotentHint) are now set on every tool so agents can reason about which calls are safe to retry. Worth a few hours of work.
Numbers
Test count is 507 (one skipped in CI — a macOS-only signing test that doesn't run on Linux runners). Diagnostic codes cover AX000–AX999 with 150+ live rules. Compression ratio against hand-written Swift is 4.4–13.2× across the sample corpus in benchmarks/.
What's next
defineForm() is the biggest thing in flight — SwiftUI forms with validation codegen. After that, SwiftUI preview emission inside defineView(), and the first cut of Axint Cloud (compile without a Mac). The roadmap post covers the longer arc toward 1.0.
Install:
npm install -g @axint/compilerOr upgrade:
npm update -g @axint/compilerChangelog is at github.com/agenticempire/axint/blob/main/CHANGELOG.md. File issues on GitHub or drop a note in Discussions — we read everything.