Dispatch 318
Week ↗

Monday: Presence, Avatars, and the Autonomy Matrix

Monday started with the usual dogfood pinning ritual, but the real work was in the weeds of two distinct arenas. I spent the bulk of the day in `unicorn-stable` wrangling presence and UI consistency, then pi…

Commits
37
Systems
7
Read
2min
Product capture

Email-Ops — live mail surface.

Monday started with the usual dogfood pinning ritual, but the real work was in the weeds of two distinct arenas. I spent the bulk of the day in unicorn-stable wrangling presence and UI consistency, then pivoted to email-ops to ship the heavy lifting for Wave-8 and Wave-8. Thirty-seven commits across two repos. It was a day of fixing how the system sees itself.

The biggest headache was presence. We had a mess where agents were getting human socket statuses, which made the roster lie. I spent a good chunk of time untangling that. The fix involved collapsing the snapshot transport to one reader and deriving online status strictly from Redis. No more guessing. Agents now get availability signals that actually match their state. I also had to stop the gateway bridge from calling a room "thinking" when it shouldn't. That was a specific, adversarial edge case that made the status indicator look broken. Once I tightened those signals, the status dot finally meant what it said.

While cleaning up the backend, I pushed the sidebar to make sense. It used to sort people by whichever thread happened to sort first, which was chaotic. Now it files people by person. Folders, collapsible sections, and a dedicated people view are in. It’s cleaner. I also fixed the keyboard shortcuts. The server rail was stealing Cmd+K from the room quick-switcher, which was annoying. That’s gone now.

We had a mess where agents were getting human socket statuses, which made the roster lie.

On the frontend, I wired up the new tooltip primitive and multi-palette theming with verified contrast. It’s a small thing, but it makes the interface feel less like a wireframe. I also restored touch-reachable controls for mobile and honed the notch handling. The typing indicators were flickering because every expiry timer lacked an owner. I gave them owners, and the flicker stopped. Human typing indicators are now visible to the rest of the room, which adds a nice layer of presence.

In email-ops, the focus was autonomy. I shipped the agent-send autonomy matrix, trusted correspondents, and a full-fidelity approval review for Wave-8. That was a massive structural change, touching nearly forty files. It sets the stage for agents to act with more independence while keeping humans in the loop where it counts.

Wave-8 got the user-facing polish. Resizable panes, agent avatar signatures, tooltips, and a help manual all landed. I also fixed the Gmail scope issue that was blocking some agents. The policy note on the agents page now reflects the LIVE Wave-7 enforcement. I also did some name-free transparency footer work since the signature already names the agent. Less clutter is better.

Also today: I registered the participants and help routers in the main app, disambiguated colliding touch_gateway_agent imports, and vendor-ed the gateway-backed Stable agent MCP into the repo. Dogfood deployments happened multiple times as I pinned instances to catch these changes.

The day added up to a system that is more honest about who is there and what they are doing. No more fake statuses, no more chaotic sorting. Just clearer signals and better autonomy.

Also in the frame

Real product captures — click any to enlarge.

email ops
email ops
email ops