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.
- user bubble avatar
data-pf-avatar="image" - its
img src=/api/users/<me>/avatar?v=<the upload's id>— the versioned URL, so a later upload is a new URL - rail avatar
data-pf-avatar="image"at the same moment (one source,/api/auth/me)
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>.
- user bubble avatar
data-pf-avatar="fallback"(theInitialCirclepassed as the primitive's fallback) - no
imginside the user bubble
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.