mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-05 17:40:11 +02:00
An agent created without an uploaded avatar was stamped with a random `emoji:<glyph>` sentinel at CreateAgent time. Replace that with the mark of the provider the agent's runtime runs, resolved at render time so it follows the agent when it is rebound to another runtime. - CreateAgent (and the template path) now store NULL for an omitted / empty / whitespace-only avatar_url; migration 234 clears the emoji rows already written. No UI or API path ever let a user pick an emoji, so every cleared row was a machine-generated placeholder. - `ActorAvatar` (packages/ui) takes a `fallback` node, drawn in place of the built-in type icon when there is no avatar image. packages/ui can't reach the workspace directories, so the identity-specific mark is resolved by the caller. - New `AgentRuntimeIcon` / `ProviderAvatarIcon` in packages/views resolve agent -> runtime -> provider off the two shared workspace queries, and land on the generic bot when the runtime is gone or its provider has no mark of its own. Wired into every agent avatar surface, plus the avatar editors in the create dialog / creation studio / detail inspector, where it previews the face the agent will get and tracks the runtime picker live. - `ProviderLogo`'s switch becomes a map so the new `hasProviderLogo` can't drift from it; the lookup is own-property, since a custom runtime profile named `toString` would otherwise resolve to an Object.prototype method. - Mobile drops the now-dead emoji branch. It ships no provider logos, so a no-avatar agent keeps its brand-tinted initials chip. Co-authored-by: multica-agent <github@multica.ai>