[Windows app] v2 custom pet idle animation is continuously overridden by lookFrame

Open 💬 0 comments Opened Jul 26, 2026 by HanYong201308

Summary

Custom v2 pets in the Codex desktop floating avatar overlay do not play their idle animation. A non-null lookFrame appears to continuously override the idle animation row, leaving the pet visually static.

Steps to reproduce

  1. Install a valid custom v2 pet with an 8x11 atlas and spriteVersionNumber: 2.
  2. Give the idle row several visibly different frames (for example: blink, sit, groom, return to standing).
  3. Select the custom pet and restart Codex.
  4. Leave the pet idle without running a task.

Expected behavior

After the pointer has remained stationary for a short period, the idle row should loop so the pet can blink, breathe, wag its tail, or occasionally groom.

Actual behavior

The pet remains on a static directional-looking frame. The atlas validates successfully and its idle preview animates correctly outside Codex, but the floating overlay does not play it.

Suspected cause

In the current desktop renderer, lookFrame is passed to the avatar during idle, running, and waving states. When lookFrame remains non-null, it takes precedence over the state animation. Clearing lookFrame after pointer inactivity, or allowing the idle animation to take priority after a timeout, should restore idle motion.

Environment

  • Codex desktop app on Windows
  • Windows build: 10.0.26200.0
  • Custom pet format: v2, 1536x2288 WebP atlas, spriteVersionNumber: 2
  • Reproduced with a newly installed cache-busting pet ID and after restarting Codex

Additional validation

  • The installed atlas matches the generated atlas by SHA-256.
  • The idle row contains multiple distinct non-empty frames.
  • The v2 atlas dimensions, transparency, look-direction rows, and manifest validate without errors.

View original on GitHub ↗