Actioneer 1.1
The first update for Actioneer has been released. Here's what's new:
- Workflows refresh in the background so newly-dispatched runs appear automatically.
- Reduced API usage and fewer rate-limit hits with ETag-based caching — lists load faster and your quota lasts longer.
- The app remembers the repository you were viewing between launches.
- Better diagnostics and reliability for smoother everyday use.
Follow updates on X: https://x.com/ActioneerCI
Actioneer - Command your CI
Actioneer — a lightweight macOS app for developers and DevOps engineers who want fast, reliable access to GitHub Actions from the desktop.
Key features
- Browse your GitHub repositories and view Actions workflows and recent runs quickly.
- Inspect run status (success, failure, queued, in progress) with clear badges and counts.
- View job logs: download and preview run logs for quick troubleshooting.
- Dispatch workflows, cancel running workflows, and re-run failed runs directly from the app.
- Favorites and quick search let you focus on the repositories and workflows that matter most.
- Desktop notifications for run completions and failures so you never miss important results.
- In-memory caching and efficient refresh make the app responsive while respecting GitHub rate limits.
- Secure authentication using OAuth (PKCE); tokens are stored securely in the macOS Keychain.
Privacy & security
We only request minimum GitHub scopes required for the features you use. Authentication uses OAuth PKCE and tokens are stored in the macOS Keychain. We do not send your logs or tokens to third-party servers without your explicit consent. See the app’s Privacy Policy for details.
Getting started
Sign in with your GitHub account (OAuth), grant the requested scopes, and the app will list your repositories and workflows. For CI/CD administrators and individual developers alike, Actioneer makes monitoring and simple management of GitHub Actions fast and convenient.
Follow updates on X: https://x.com/ActioneerCI
CompareShots 1.6
A new version of CompareShots has been released. It's a simple app I wrote years ago to compare two images.
The new version 1.6 has been rewritten in SwiftUI. And I've implemented a couple of ideas from app reviews that a user suggested.
What's new:
- Choose your view: Easily switch between aspect fill and aspect fit with a new button.
- Move your images: In aspect fill mode, use two fingers to reposition images for the perfect comparison.
- Faster setup: Select up to two images at once for side-by-side comparison.
- Expanded language support and improved accessibility.
- Various bug fixes and performance enhancements for a faster, more reliable app.
- Various bug fixes and performance improvements.
HTMLEditor for SwiftUI 1.0.3
Spent some more time on HTMLEditor for SwiftUI. There are significant performance improvements in the new version 1.0.3 (thanks to Claude Code).
Try it on GitHub: https://github.com/makoni/HTMLEditor-SwiftUI
CouchDB client for Swift 2.3.0
Recently, I've implemented a feature that I wanted to add to the CouchDB Swift client for a long time. It's Mango Queries support. Finally, it is done in 2.3.0. Feels like the last remaining big feature.
Changelog:
- Introduced a robust and type-safe MangoQuery API for building complex selectors, projections, sorting, and pagination in CouchDB.
- Added support for specifying indexes via useIndex in queries to optimize performance.
- Added first-class support for uploading, downloading, and deleting document attachments (files/images).
- Comprehensive Attachments API test suite ensures reliability for file operations.
- Added models and API for creating, listing, and managing Mango indexes (MangoIndex, IndexDefinition).
- Tutorial and code samples for creating indexes are now included in documentation.
- Added support for CouchDB Mango _explain endpoint via MangoExplainResponse to inspect how queries are executed and which indexes are used.
CouchDB Client on GitHub | Documentation with examples and tutorials.
A story of one bug in Leaf
This website is working on Vapor - a server-side Swift framework. It's pretty old, popular, and well known.
I’ve used it for a few years already and always liked that it's fast and doesn't require a lot of memory on the server.
I'm keeping all dependencies up to date. But recently I've noticed that the website started to eat a lot of memory. It starts with about 20 mb of memory usage, but after a few weeks, I found that it ate about 750 mb on the server.
That's a lot for such a simple website, so I started digging. After reviewing the site code (which I didn't change for a long time), I couldn't find any issues (and AI agents too).
I use Leaf - a template engine from the Vapor team to render HTML. And there was an open issue on their GitHub repo describing exactly the same problem.
So I've asked Copilot to help me debug what's wrong. Pretty quickly, it added some new tests to my fork that did a lot of renders in a cycle. And leak util found retain cycles. So I fixed that with some weak annotation, but during the review of my PR, a maintainer suggested to just use unowned.
And that's it. 2 lines of code fixed memory growth. It's hard to believe, but after a few hours since the deploy, the website still takes only 2 mb of memory. So I'm very proud of myself today.
Morale: contribute to the open-source project that you use.
A Swift package for spell checking using Yandex.Speller
For my own purposes, I wanted to add a spell checker to one of my apps. It should check the text and automatically correct it. Built-in macOS writing tools work fine for English, but don’t work for Russian.
So after it's done, why not share it?