As an alternative of writing weblog posts about particular person package deal updates, I believe I’ll be altering issues up a bit. My brokers do a greater job than me in summarizing the modifications for particular person releases, so I’ll any longer group them collectively, referencing the discharge notes on GitHub.
I’m working rather a lot on a personal undertaking for a consumer at this second the place I’m making MCP for all communication. Beforehand I’d have hand-rolled REST API calls with URL periods and JSON decoding for speaking to Google Drive or Parse platform.
SwiftMCP
However for this new undertaking I figured I wished to up the sport and use MCP wherever potential. The primary benefit is that you’ve got static varieties and in addition a again channel that permits me to stream notifications and log occasions to purchasers. Additionally as I defined earlier since I’m proudly owning either side of the MCP communication, all I have to do is to seat up my @MCPServer correctly, and the consumer half will get mechanically generated for me.
Lengthy story quick, this pressured me to handle a few shortcomings in SwiftMCP. One such drawback was how the Bojour+TCP transport would resolve the server. This was solely on the lookout for _mcp._tcp and whereas I had solely a single one which was nice. However then I began having a number of MCP servers on my native machine – my consumer undertaking daemon in addition to the Publish daemon – and abruptly my mail room stopped having the ability to trash processed emails.
Then I noticed that it was connecting to the incorrect server. So I enhanced the bonjour promoting to incorporate the server identify as properly.
There was one other shortcoming of Linux. The one approach how I can know if my elements would work on Linux are the GitHub actions that compile them for this platform. SwiftMCP on Linux was lacking SSE communication for the consumer facet. That’s now been remedied. I’m on the lookout for a time when I can truly deploy my Swift code on Linux platforms.
And I wanted to broadcast log occasions to all linked MCP purchasers. So we mounted an issue the place every session wanted to be made present in order that the sending wouldn’t crash with a precondition failure. See the complete SwiftMCP 1.1.0 change log for particulars.
SwiftMail
SwiftMail appears to have sparked extra curiosity as I can see from fixes and enhancements being contributed. This part has seen lots of use on my half as properly as a result of it’s the core enabler for my Publish CLI, which my mail-room agent is utilizing to maintain abreast my emails.
We had accomplished the potential matrix for the most important e mail servers Gmail, iCloud, Change, and Dovecot. And on the software program facet NIOIMAP and SwiftMail. The options which had been in NIOIMAP and most servers, however not but in SwiftMail very apparent candidates for inclusion.
A variety of tinkering went into determining to watch mail servers over a very long time and take care of server-side disconnects and different methods how the postd may crash. Unresolved guarantees and what not. Due to different folks’s testing we discovered fairly just a few locations that wanted stabilizing.
The newest change was to make use of the first connection for IDLE and to spin up – and join – a brand new connection when a brand new e mail is available in. It seems that establishing such ephermeral connections is definitely fast and ache much less anyway. See the complete SwiftMail 1.2.0 change log for particulars.
SwiftText
One of many capabilities of SwiftText is the flexibility to generate HTML and PDFs from markdown. That is additionally uncovered through the swifttest CLI through the render subcommand. HTML will not be actually editable for people and PDFs are primarily static printouts additionally internet meant to be edited by mere mortals. Recently I’ve been warming to DOCX – vulgo “Phrase format”.
When speaking editable paperwork with the non-Apple world it is rather helpful to take action with DOCX information. Behind the scenes these are like a strict XML dialect with many parallels to HTML. Due to this I carried out conversion of DOCX to markdown some time in the past.
Within the newest model I closed the loop and now you possibly can flip markdown again into DOCX. The concepts is that if in case you have markdown output from an agent, you possibly can simply run it by means of swifttext and you’ve got a format that the “exterior world” can reuse and edit.
There stays a small space the place Linux is behind the world of Apple: the usage of WebKit. I’m utilizing WebKit to learn net pages which have some JavaScript loading or rendering, to attend till the ultimate DOM has been created after which I can pull the HTML and convert it to markdown.
One other space is that for some invoices that I get by e mail – taking a look at you Apple! – I want to save lots of the e-mail as PDF for my accountant. WebKit has a perform to “print” an internet web page into PDF. So there are some availability gates round this code in order that SwiftText nonetheless builds on Linux.
The excellent news for DTCoreText – which is caught in historical Goal-C historical past – is that my brokers had been in a position to determine methods to construct for Linux and use libxml2 for parsing HTML. With the assistance of a contributor this half is now totally Swift. It now turns into potential to lastly improve DTCoreText to full Swift as properly. SwiftText has a HTML parser utilizing libxml2 to construct a DOM which then is transformed to markdown.
DTCoreText works considerably in a different way although. It retains a stack of components, however flushes items of NSAttributedString right into a mutable attributed string. And trendy code may wish to generated SwiftUI AttributedString from HTML. So would I add this performance to SwiftText and gate it for Apple platforms? Or would I make a DTCoreText 2 department that implements these?
I’m leaning in direction of the latter. The benefit is perhaps that we are able to migrate the nice variety of unit assessments we’ve got in DTCoreText to Swift Testing after which changing all with Swift needs to be a simple train … for an agent.
See the complete SwiftText 1.1.0 change log for particulars.
Publish
As I’ve alluded to above the second large driver for updates is my refining and enhacing of Publish. For just a few days now I’m having fun with a kind of Inbox Zero with the mail-room ability I’m engaged on. This archives markdown model of all newsletters I get, marks spam emails that had been missed by my server-side spam filter and kinds out invoices for my enterprise or non-public.
The emails from GitLab or GitHub regarding sure tasks of mine get reported to Discord threads of the identical identify. So if a CI motion on GitHub fails, I see it in the primary thread about it. Identical goes for feedback to PRs and all different kinds of notifications.

The primary perform that permits that is that Publish can name a script every time a brand new mail arrives. This script will get a JSON illustration of a very powerful meta information concerning the e mail in addition to a markdown illustration…. I’ll cease myself right here from revealing an excessive amount of extra, as a result of this warrants a weblog submit of its personal when I’m able to launch the OpenClaw ability to the general public.
Again to Publish now. My accountant managed to crash Publish by sending me an e mail that had a single
libxml2 inflicting tousled german particular characters.
Brokers are in a position to create draft emails from markdown. Publish turns the markdown into good HTML for the primary physique and retains the markdown because the plain textual content model. That wanted some enhancements. There’s additionally help for replying to – and quoting – a message. That’s been there for some time nevertheless it’s maturing properly. Quickly it is possible for you to to say: “draft a reply to this new e mail from x, touch upon the person factors and connect the most recent PR as PDF”
And eventually, many of the modifications had been ease-of-use enhancements. Like for instance I wished to retailer bill with a sure format like Apple_123123123123_20260513.pdf. Beforehand I needed to obtain the file with its authentic identify to a temp folder, discover the file after which rename it. Now uniformly you should utilize the --output choice for specifying a folder or file identify. Within the former case the unique file identify is used, within the latter the desired file identify.
Learn extra within the full Publish 1.2.0 launch notes.
Conclusion
Me and my agent workforce are very busy lately, however – actually – the best reward is to get questions, bug reviews and even full pull requests from individuals who wish to construct on my OSS. It feels extremely validating to really feel some curiosity for a labor of affection.
On the OpenClaw entrance, I've nothing new to report, Peter Steinberger stubbornly ignored an X DM, a private e mail, my e mail to the OpenClaw contributor deal with, one other X DM and me publicly venting. This stage of ignoring me can now not be unintended. What have I completed incorrect to not even get any response.
Slightly pick-me-up got here – how would have ever anticipated that – through LinkedIn…

Their loss is your acquire! So on a optimistic notice, I've rather a lot to do lately in any case, and OpenClaw doesn’t need my assist, then I’ll put my power into extra rewarding areas, like those I discussed on this her article.
Associated
Classes: Updates

