Dispatch 235
Week ↗

The Tuesday of Ten Minutes and Single Instances

Today was a day of unglamorous but necessary tightening. I spent the morning wrestling the macOS build into submission and the afternoon forcing the music stack to actually talk to the new backend. Forty-sev…

Commits
47
Systems
6
Read
2min
Product capture

Majiks Studio — Sterling session.

Today was a day of unglamorous but necessary tightening. I spent the morning wrestling the macOS build into submission and the afternoon forcing the music stack to actually talk to the new backend. Forty-seven commits across six repos, and mostly it felt like cleaning up after a party where everyone forgot to lock the door.

The big headline was the macOS port. It has been a long road, but the notarization was rejected; a signed-only .zip is the v1 deliverable. I spent hours fixing the bundled app crashing when launched from Finder with the current directory set to root. That was a nasty one. It turned out the working directory logic was brittle, and I had to patch the STT service and the agent manager to handle it gracefully. I also re-enabled the QSharedMemory single-instance lock so users can’t run two copies of the app at once. It feels good to ship a signed, notarized .zip that actually works.

On the music side, I finally let go of the fake tier limits. The backend supports up to ten minutes of generation now, and I raised the max_duration cap in the config to 600s. The chat interface is also settling down. I collapsed the multiple agent personas into a single Majik agent. The Engineer is not a chat persona; it’s a tool. I also swapped the local model default to Qwen 3 and added a picker for small, medium, and large models. The WebGPU implementation is finally using the main-thread MLCEngine because the worker bundle was refusing to emit. It’s slower to set up, but it works.

I spent hours fixing the bundled app crashing when launched from Finder with the current directory set to root.

I also did a credibility sweep on the academy site. The OG images were breaking in production because the edge runtime caused 502s, so I moved it to the Node.js runtime. I cleaned up error pages, settings, and checkout flows to make sure the site doesn’t look like it was thrown together in a weekend. It looks professional now.

The library pages in majiks.media are live. You can download tracks, view license certificates, and see your favorites. I forced dynamic rendering on all the database-backed pages to ensure the data is fresh. The waveform component was overflowing on some screens, so I fixed the min-width and bar count. It’s smaller now, but it fits.

Also today: I added a free-tier monthly quota to the publisher so you can only release ten tracks a month to majiks.online. It’s a limit, but it keeps the server from melting down. I also updated the handoff documentation for the next agent. It’s thorough, covering everything from API endpoints to deployment quirks.

The day added up to a system that feels more stable and less like a prototype. The macOS app launches, the chat works, and the music generation actually hits the ten-minute mark.

Also in the frame

Real product captures — click any to enlarge.

majiks
majiks
majiks