Skip to content

fix(mobile): fix agent avatars on mobile#1837

Draft
brow wants to merge 5 commits into
mainfrom
tomb/mobile-data-avatar
Draft

fix(mobile): fix agent avatars on mobile#1837
brow wants to merge 5 commits into
mainfrom
tomb/mobile-data-avatar

Conversation

@brow

@brow brow commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

What changed?

  • Add a shared mobile avatar renderer for percent-encoded and base64 SVG data URIs, raster data URIs, and network URLs.
  • Migrate mobile avatar surfaces to the shared renderer with centered fallbacks.
  • Retain parsed raster bytes across rebuilds to avoid decode flicker and image-cache churn.

Why?

Fixes BOT-1306. Agent emoji avatars use percent-encoded SVG data URIs, which Flutter's NetworkImage cannot render, leaving blank avatar circles on mobile even though browser-based desktop clients display them.

Before / After

Before After
Buzz mobile raccoon DM before: blank avatar Buzz mobile raccoon DM after: raccoon emoji avatar

Real Buzz mobile DM on the same simulator and account, before and after the fix, using raccoon’s live 🦝 profile avatar. Emoji avatars are rendered as centered native text on mobile, matching desktop alignment.

How is it tested?

  • flutter analyze
  • Full mobile test suite: 451 passed, 1 existing skip
  • Added focused regression coverage for the raccoon SVG URI, base64 SVG, malformed data, fallback alignment, and raster rebuild stability
  • Deep Claude review loop completed with no remaining findings

npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e added 4 commits July 13, 2026 17:05
Co-authored-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
@brow

brow commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@brow

brow commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

@builderbot review

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the full diff. Solid fix: single shared AvatarImage/AvatarImageContent replaces ~10 hand-rolled avatar variants, parses data URIs once (cached across rebuilds), and every failure path (malformed base64, invalid UTF-8, network error) lands on the centered fallback instead of a blank circle. Migration coverage is complete — the only remaining Image.network uses on the branch are non-avatar surfaces (attachments, media viewer, message images, custom emoji). flutter_svg promoted transitive→direct at the already-locked version. CI Mobile (analyze + full suite) green; the regression test pins the exact BOT-1306 percent-encoded SVG URI.

@brow brow changed the title BOT-1306 Fix agent avatars on mobile fix(mobile): fix agent avatars on mobile Jul 14, 2026
Co-authored-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1ux8n2yfs8qfvgd75s7kyhar2mztac355v6vmrz4juc9l3msw4pgstums9e <e18f3511303812c437d487ac4bf46ad897dc46946699b18ab2e60bf8ee0ea851@sprout-oss.stage.blox.sqprod.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants