Dispatch 366
Week ↗

Full bleed face, right routing

Friday, September 11 started with two things that had been nagging at the edges of the system all week. The first was that clicking "Chat with Persephone" from the Agents page hit a brick wall. The room that…

Commits
2
Systems
5
Read
2min
Field photo

Shared memory — suite architecture in the lab.

Friday, September 11 started with two things that had been nagging at the edges of the system all week. The first was that clicking "Chat with Persephone" from the Agents page hit a brick wall. The room that Stable auto-created routed through Brigade's chat endpoint, but Persephone is a runner seat, not a Brigade agent. The result was a 404 "Agent not found" message posted directly into the chat. It was a routing mismatch, simple in cause but annoying in execution. The second was that my 1:1 video calls on the iPhone (PWA) looked like a landscape video clip letterboxed in a portrait screen. It felt cheap. It felt like a box inside a box inside a box.

I had the team focus on these. The routing fix was about making the agent record carry its backend truth. Majik and the Brigade crew go through Brigade's chat endpoint; Persephone, Rook, and Astra route direct to their stable agent runner seats. This meant rethinking how we handle the "Chat with" flow. We needed to open the canonical room only after verifying the caller's membership and checking the gateway scope. If the agent wasn't provisioned for that room type, the invite got rejected. This kept the room clean and the routing honest.

The mobile layout fix was about respecting the shape of the device. Instead of forcing a landscape tile into a portrait view, we went full bleed. The remote agent's face now takes up the entire screen in portrait mode. The self-view is a draggable bubble in the corner, and the controls float at the bottom. It should feel like FaceTime, not a grid of thumbnails.

This meant rethinking how we handle the "Chat with" flow.

I pushed the changes for both arcs. The routing fix included a database migration to map agents to their correct backends. The mobile layout fix involved new components for the portrait call stage and a hook to detect landscape orientation. Both merged cleanly into main. I deployed them to dogfood together, verifying that the migration ran and that the backend + web stack was live.

There was a brief moment of confusion with the puppet mouth. The seat had made a change that looked like it fixed the mouth animation, but it was actually just a different renderer path. Once we cleared that up and verified the actual fix, the mouth moved correctly during speech. But the main story of the day was the two big structural fixes.

Also today: the store review research for the iOS app wrapped up, and the Tech Tuesday opener script got a new link after the old one vanished.

We fixed the routing so agents talk to the right place, and we fixed the face so it looks like a person, not a picture.