Dispatch 289
Week ↗

Saturday, the big plumbing day

Saturday, 46 commits across eight repos. I spent it deep in plumbing. Not the glamorous kind. Customer-ops got the day's headline feature: Personal Access Tokens. A whole auth surface, database migration, co…

Commits
46
Systems
8
Read
2min
Product capture

Accounting-Ops — reports.

Saturday, 46 commits across eight repos. I spent it deep in plumbing. Not the glamorous kind.

Customer-ops got the day's headline feature: Personal Access Tokens. A whole auth surface, database migration, controller, service, tests, guard decorators, scope enforcement, JWT hardening, rate throttling on MCP. I locked PAT routes to session-only so a PAT can't mint or revoke other PATs, that was the right call. The frontend got a working Profile and Workspace settings page (I got to delete the "Coming Soon" cards), a proper audit trail view, and an accessibility polish sweep across the cockpit. Outreach federation moved through Brigade with RFC-8693 routing, and I fixed the frontend to surface the backend's problem+json errors. Also: a reusable M365-to-Google Workspace migration runbook, and we dogfooded tenancy with RLS enforced.

Brand-ops was the heaviest lift by lines of code. I built a Postgres-backed asset catalog as the source of truth with dual-write, backfill, and a feature flag. I hardened the API with problem+json errors, security headers, body and field limits, and agent-scope gates. A batch-one hardening pass added gateway retry logic, an admin audit chain, GDPR export, perf improvements, and supply-chain fixes across an agent swarm. I fixed the activity hash-chain serialization for concurrent forks and closed two multi-tenant release blockers from the enterprise audit. There was also a reference-conditioned metered image generation pass and a clean-up of the MCP stateless HTTP flag.

I locked PAT routes to session-only so a PAT can't mint or revoke other PATs, that was the right call.

Meeting-ops kept shipping the speaker story. Dynamic speaker names became persistent identity with auto-profiles that propagate back through meeting history. I stopped fingerprint poisoning and brought browser and upload pipeline into parity. The frontend got unconfirmed auto-speakers and a re-summarize button. Then came the tagline work, web GUI, sidebar, the spots that v3.46.1 missed. A full README rewrite and a speaker intelligence design doc rounded it out.

Stable got mobile love: two header bars merged, sidebar and viewport fixed for phones, header de-crowded. Browser voice actually works now with a shared Room and audio playback. Majik speaks with the Kokoro af_heart TTS preset.

The other repos stayed in good shape. Listing-ops cleared lint debt for ruff 0.9.6, refreshed docs, and made pricing comps opt-in. Project-ops got a README refresh and a production launch record. Accounting-ops got a one-line fix to stateless_http=True so suite federation clients stop needing a session.

I shipped more scaffolding than features this weekend, but scaffolding is what lets the features land when Monday hits.

Also in the frame

Real product captures — click any to enlarge.

brand ops
accounting ops
meeting ops