Dispatch 226
Week ↗

The day the billing finally worked

Friday, April 10, 2026. I pushed ten commits across six repos. It felt like a day of putting out fires, but the kind where you actually put them out instead of just watching them burn. The real headline here…

Commits
10
Systems
6
Read
3min
Product capture

Majiks Studio — Sterling session.

Friday, April 10, 2026. I pushed ten commits across six repos. It felt like a day of putting out fires, but the kind where you actually put them out instead of just watching them burn. The real headline here is the billing fix on majiks.online. That was the thing that mattered. Everything else was cleanup, or prep, or just keeping the lights on.

I started with the backend discovery issue in majiks-art-studio. The Swift backend wasn't finding its resources correctly. It was walking up the directory tree and missing the bundle. I changed the logic to prioritize bundle Resources. That took a few lines in BackendViewModel and a tweak to the build script. Then I bumped the version to 1.6.3 to fix the gallery data path and bundle integrity. Notarization was failing because the build script wasn't packaging things right. I fixed that too. It was a standard bundle integrity headache, but it cleared the path for the app to run cleanly.

The billing work was the heavy lifting. I had to fix upgrade and downgrade flows, subscription metadata, and tier sync. The Stripe webhooks were the main culprit. The route handling was messy, and the metadata wasn't syncing correctly between the frontend pricing page and the backend API. I updated the subscription route and the webhook handler. It was a solid 187 lines added against 13 removed. Clean diff. I also added a QA audit note in STATUS.md to track the signup and billing flow. It’s not glamorous, but getting the money part to work is the only part that really counts for a SaaS.

I had to fix upgrade and downgrade flows, subscription metadata, and tier sync.

On the ops side, I wired up the GPU compute fabric. That was a big commit in ops-center. I added billing events, fixed federated SSO, , and updated the CSRF protection. The backend routers for compute and billing events got a serious overhaul. It was 778 lines added. That’s a lot of wiring, but it connects the compute usage to the billing system properly. Now when someone spins up a GPU, we know about it. And we can charge them for it. That’s the dream.

I also touched meeting-minutes and magicunicorn.tech to bump versions. v1.0.3 for the meeting minutes was critical because we needed to bundle the Python scripts in the app Resources. The previous version wasn't doing that, so the transcriber was broken. I fixed the project file and the settings service. It’s a small fix, but it keeps the internal tools working for the team.

Songwriter-agent got some attention too. I fixed crash safety, error visibility, and some UX polish. That was a broad audit across fourteen files. The app was crashing on certain generation queues, and the error messages were vague. I tightened up the LLM providers and the GPU client. I also added an auto-notify step to the build script so majiks.studio knows when a new version drops. It’s a small automation, but it saves me a manual step every time I release.

Also today: I updated the version JSON for magicunicorn.tech and bumped the meeting minutes plist. Minor version bumps, but they keep the release pipeline clean.

The day added up to a stable billing system, a working GPU fabric, and a bunch of small fixes that kept the apps from crashing. It’s not the most exciting work, but it’s the work that keeps the doors open.

Also in the frame

Real product captures — click any to enlarge.

uc cloud
ops center
majiks