Dispatch 180
Week ↗

Friday: model downloads that worked, and a few that didn't

Friday started with the kind of bug hunt that eats hours: ACE-Step model downloads were broken in nine different ways. I traced through the Python backend, the RPC server, and the Swift UI to fix them all. T…

Commits
15
Systems
2
Read
2min
Product capture

Majiks Studio — library.

Friday started with the kind of bug hunt that eats hours: ACE-Step model downloads were broken in nine different ways. I traced through the Python backend, the RPC server, and the Swift UI to fix them all. The research doc had notes on what the model file structure actually looks like, which saved me from guessing wrong again.

The bigger picture was seamless onboarding. I wanted people to land in the setup wizard, pick a model, and start chatting without leaving the app. That meant building an in-app downloader from scratch. Backend first: ace_generator.py and rpc_server.py got the download plumbing. Then the UI: LLMSettingsView.swift and SetupWizard.swift got the controls. By the end of it, the whole flow was wired.

But downloads are where things get real. MLX models were timing out, so I bumped the timeout and added first-chat warnings so users know what's happening. The DMG rebuild loop is almost a meme at this point: fix something in code, rebuild the DMG, fix something else, rebuild again. Five DMG rebuilds in one day. I lost count.

I wanted people to land in the setup wizard, pick a model, and start chatting without leaving the app.

Then came the critical UX fixes. A memory leak in model downloads was eating RAM, and there were several UI issues that made the experience feel rough. I went through the backend providers, the RPC server, the download manager, the settings view, the main window, the setup wizard, and the studio view. Three hundred twenty-three lines added, one hundred fifty-six removed. That's the shape of fixing something properly.

I also removed the Qwen models from the mix and set gpt-oss-20b as the default. Cleaner default path for new users.

On the ace-step-1.5 side, two small commits: one fixing a missed alert in lora_utils.py, another addressing security alerts across the ruleset and the same file. The kind of maintenance that keeps things running.

Fifteen commits across two repos. The ACE-Step download system went from broken to built-in, the onboarding flow actually works now, and the app doesn't leak memory during downloads anymore. Not bad for a Friday.

Also in the frame

Real product captures — click any to enlarge.

majiks
majiks
majiks