PR #7351 — the photo follows you into Ask Clara

Branch avatar-everywhere, captured on the branch's own dev server against stage data with the smoke account, 1440×1000. Every claim below was asserted in the DOM before the screenshot was taken; the account was left exactly as found (no photo). PR #7351.

Why this page exists

After #7335, a person's uploaded photo showed on the account page and the rail but not on their own bubbles in Ask Clara (Gera, 2026-09-08: "it didn't update my avatar throughout like conversations like Ask Clara"). Ask Clara read the auth session's picture — the sign-in provider's, never the upload. It now reads the same /api/auth/me answer the rail does.

1 — With a photo: the operator bubble draws it

A 600×600 two-tone PNG was uploaded through the real POST /api/auth/me/avatar, then one line was sent in the docked Ask Clara panel. The operator's bubble (top right of the panel) carries the same versioned photo URL the rail carries.

Ask Clara with the operator's photo on their bubble
ask-clara-with-photo.png

2 — Photo removed: the bubble falls back to the initial chip

DELETE /api/auth/me/avatar, then a reload. The same transcript now draws the peach initial chip on the operator's bubble — the chip Ask Clara always showed — and no <img>.

Ask Clara after the photo was removed: the initial chip
ask-clara-without-photo.png

What this page cannot show

A teammate's photo on a thread bubble needs a human-authored message that carries their person id. The Conversations page has no composer; the one human-typed outbound that reaches a tenant thread is a reply sent from the connected mailbox, and #7351 stamps the sender's person id on that row when the address is a teammate's own sign-in in the property's organization. Producing one needs a real mailbox send on the webhook path, which is not something a dev-server capture can drive — the unit test src/__tests__/record-pm-reply.test.ts pins the stamp, and HumanAgentAvatar.test.tsx pins that a stamped id draws the photo.

PropFlow Docs