SYSTEM NOTICE

Auto translation by AI. Be sure, accuracy, nuances and authorial intent may not be fully reflected.
見出し画像

[Mac App] I ported my self-made web tool 'Shoko' to a native app using Claude Fable 5

I previously wrote about how I created a WXR reader called 'Shoko' to look back on my 1,000 note articles and how I use it in my browser. This is the sequel to that. That said, it's not about adding features, but a much bigger move. I ported Shoko, which was made in HTML, entirely to a native Mac app. I left the work to Claude's latest model, Fable 5. I didn't write a single line of Swift code.

It looks like this. The operation is snappy.

🔗GitHub - tanuu5/WXRReaderMac ← Download

——By the way, as of this writing (July 20, 22:30 JST), I can still use Fable 5 within my subscription. What is going on...

By the way, the following article was written using Fable 5 after I finished all the work.


1. The 'one last step' that remained in the browser version

Shoko is a tool that reads note backups (WXR format XML) and allows you to search, view, and convert past articles to Markdown. As a partner for solving 'where was that article?' while writing, I liked the convenience of it running as a single HTML file.

However, there were some frictions remaining due to the browser foundation. Every time I opened it in Chrome, it would ask, 'Do you want to allow access to the folder?', and Safari couldn't even remember the folder or display images. Because it read the huge XML in small chunks to fit the browser's memory constraints, it was built to re-read the file every time I opened an article. It worked, but there was no longer any real necessity for the tool's container to be a browser. That's what I felt.

2. I just handed over the HTML and asked, 'Can you make a Mac native version?'

The request for the port was surprisingly easy. I just handed the HTML file to the desktop version of Claude (Cowork) and asked, 'Can you make a Mac native version of this?' It presented me with options for the method (a simple version wrapped in WebView or rewriting the UI entirely), so I chose a full rewrite in SwiftUI.

The result was 22 files and about 2,400 lines of Swift code. Features from the HTML version like search, statistical heatmaps, and bulk Markdown export were all ported, and even the Japanese paper-like color scheme was reproduced exactly. Building it only required running the included script once, and the initial compilation passed on the first try. When I pointed out that it didn't have an app icon, it even designed and incorporated a bookshelf-themed icon. It didn't feel like it took half a day (about an hour).

The Claude Fable 5 in charge is the latest model released by Anthropic in June 2026. It is described as a 'Mythos-class' capability, higher than the previous top-tier Opus, made available to the public with added safety measures. In software development, an official announcement even includes a case study where a user company reported that 'months of engineering were compressed into a few days.' My experience this time felt like that claim was no lie.

3. Friction that disappeared with the native conversion

The first thing I felt after porting was that all the small hitches had disappeared. Just by launching it and pressing 'Open this folder,' it reconnects to the previous backup, and the permission dialog no longer appears. Images are always displayed. Since I can now load all articles into memory, there is no waiting time for full-text search or article display. Strictly speaking, there was a slight wait when opening an article immediately after porting, but when I communicated the cause (related article calculation processing), it was resolved with asynchronous processing and caching. This loop of 'use, point out, and fix' running in minutes is the pleasure of developing with AI (even if it is vibe coding).

4. The highlight is Spotlight integration

Since I went to the trouble of making it native, I added a feature that is theoretically impossible in a browser. Spotlight integration.

Even if Shoko is not running, if you type part of an article's title or body with ⌘Space, your past articles will appear in the Spotlight search results. If you click one, the app launches and the corresponding article opens directly. It feels like my 1,000 past articles have become searchable targets for the Mac computer itself. The index is closed locally, and there is no transmission to the outside.

To be honest, this didn't work on the first try either. At first, even if I pressed the search result, the app would just launch and not jump to the article. When I reported that, it identified it as a known issue where macOS notifications sometimes don't reach the SwiftUI entry point, and it was fixed to receive them via a different path. The human's job is just to run the build command and report 'it worked' or 'it didn't work'.

By the way, it's a bug or a specification, but since I didn't set status == "publish", everything appears in Spotlight. It might be good to revise this later. In addition, as a minor detail, the Readme that Fable 5 made for me says, 'There is no network transmission at all,' but it doesn't block external http/https sub-resources, so if there are any external resources, it will communicate.

5. I have published it on GitHub

The finished Mac version of Shoko has been released on GitHub along with its source code. It is under the MIT license. A full installation of Xcode is not required; if you have the command-line tools, the app can be built with a single included script. Since it is an unsigned app, the basic premise is that you build it yourself rather than distributing it. By the way, I even had Claude handle the initial push to the repository by passing it a temporary access token.

You can do this not only with Claude Code, but also via Claude Cowork.
The point is, as long as you can manipulate the terminal, it works.

🔗GitHub - tanuu5/WXRReaderMac

Summary

A single-page HTML web tool became a native Mac app in one day (effectively one hour). I wrote zero lines of Swift; all I did was keep stating my requests and feedback in Japanese. Yet, features like folder reconnection and Spotlight integration, which are 'deeply rooted in the OS,' were things I could never have had in the browser era.

The ideal for Shoko was to 'take a backup and visualize it instantly.' With this port, 'being able to call up your past self from anywhere on your Mac' has been added to that. If the barrier to creating tools has dropped this much, I think it would be interesting for everyone to try moving their own tools—the ones that are 'just one step away' from being finished—over to native.

いいなと思ったら応援しよう!