Remove the Default video avatar; Atlas is the default

Merged
DA
5d ago
+72-65

First of two PRs for the plan Remove default avatar option and make previews bigger/easier to see (https://tryluke.dev/stage/plan/cbf135d8-d4f5-4cd4-9823-a367a5d46c9a). This one removes Default. The next one enlarges the faces in the picker.

What changes

  • Settings › Experimental › Avatar now lists only Keyframe's eight stock avatars. Default is gone, and Atlas is the new default (the developer chose Atlas).
  • Old saved value: a settings file still holding default from an earlier build fails the guard, reads as no choice, and so shows Atlas.
  • What the Mac sends: every avatar.start from this build names its avatar.
  • Service: it still mints the deployment's own persona (LUKE_KEYFRAME_PERSONA_ID) for a start that names no avatar, or one it doesn't list. Builds before this one keep working against a new service, and this build works against an old one, since it only names avatars the old service lists.
  • askedAvatar in live-contract.ts now reads an unknown avatar as undefined rather than default. personaOf maps undefined to the deployment's persona.

Goldens

live-contract-avatarStartFrameSchema.json and live-contract-avatarRequestFrameSchema.json were regenerated with LUKE_UPDATE_FIXTURES=1. The only change is that default drops out of the avatar enum.

Tests

  • settings-store.test.ts: new test that a stored default reopens as no choice.
  • compose-live.test.ts: a call with no saved choice now asks for Atlas.
  • avatar.test.ts: a start naming default, or naming no avatar, still mints the deployment's persona.
  • experimental-page.test.ts: the menu lists the eight avatars, each with its photo.

pnpm check:affected passes. The first run failed in app-menu.test.ts only because the sandbox was missing the Electron binary; it passed once the binary was installed.

Made with Luke


Devin Review


Summary by cubic

Removes the "Default" avatar from Settings › Experimental › Avatar, leaving Keyframe's eight stock avatars as the only choices with Atlas as the new default.

  • A settings file still holding default from an earlier build reads as no choice, so it shows Atlas.
  • Every start from this build names its avatar; the service still mints the deployment's own persona for a start naming none or one it doesn't list, so older builds keep working against a new service and this build works against an old one.
  • askedAvatar reads an unknown avatar as undefined instead of default, and personaOf maps undefined to the deployment's persona.
  • The live-contract JSON schema fixtures were regenerated; default drops out of the avatar enum.
  • Tests cover a stored default reopening as no choice, Atlas being asked with no saved choice, and the service minting the deployment's persona for default or no avatar.