The avatar
A person’s picture; when it cannot show, the initial it becomes instead of a broken image.
The specimen
The part is in review for the next Shared release; the specimen is here so the design can be seen.
One capture listener and one sweep replace every <img data-ov-initial> that fails with its initial, in the footer's faces and the account picture. It is CSP-safe: no inline handler, no request to another origin. A picture that loads keeps its reserved width and height, so nothing shifts while it arrives.
What shipped
4.199.0 gave avatars their reserved box (width, height and async decode) so a page no longer shifts. The fallback to the initial is in review for the next release: a capture listener and a sweep replace any <img data-ov-initial> that fails, CSP-safe, in the footer’s faces and the account picture.
“A picture that cannot show becomes its initial (footer faces and account picture).” — the change, after a broken avatar in Locker’s footer
The rules it carries out
2 An icon name is checked against the set that draws it.20 Status is a word, never colour alone.46 Everything you can press is at least 44 px.
Build it
// openvibe-shared/footer.js (and the account picture)
<img src="/avatar/ana" alt="" width="32" height="32"
loading="lazy" decoding="async" data-ov-initial="A">
// a failed load becomes <i class="ov-initial">A</i>; no inline handler, no extra request