Thursday, May 14. Five commits across four repos. A quiet day, but two threads actually mattered.
On the auth side, I started the lazy uc_uid generation for direct-registration users in ops-center. This is Stage 12b. Previously the system would have tried to assign IDs eagerly, which is brittle when the downstream identity provider isn't ready. So I wrote backend/lazy_uc_uid.py and wired it into the server. 302 new lines, zero deleted. The idea is simple: register the user, defer the UID until something actually needs it. The runbook in unicorn-ecosystem (PEERTUBE_RUNBOOK.md) already reflects the multi-provider plugin and auto-ucuid flow, so I just bumped the doc to match reality. 21 added, 10 removed. Not glamorous, but it unblocks a bunch of edge cases that used to blow up silently.
The other real thread was analytics. Majiks.io got a one-liner commit that wired the Umami tracker to the canonical analytics host, using the UMAMI_URL environment variable. Straightforward plumbing, but the interesting work was on majiks.studio. The analytics endpoint had been returning ok: true even when the upstream call failed. Silent success. Classic. I fixed both the send route and the script route to propagate upstream errors instead of faking a win. 40 lines added, 5 removed. Also documented what UMAMI_URL actually is in .env.example, because next time someone touches this, they should know where the traffic goes.
On the auth side, I started the lazy `uc_uid` generation for direct-registration users in ops-center.
The rest of the day was cleanup and alignment. Updating the Peertube runbook was more about keeping the docs in sync than shipping code. The env example doc is the kind of thing that saves an hour of debugging three months from now.
Two things shipped that didn't before: auth doesn't hard-fail when a UID is unavailable, and analytics doesn't lie about success. Both small, both the kind of thing that only matters when it's broken.
Real product captures — click any to enlarge.