v2 pet look-direction rows (9-10) never activate — pet does not look toward cursor (feature-gated?)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- electron
- Domain
- desktop
Research direction
Start with the bundled hatch-pet contract at references/codex-pet-contract.md, then inspect the avatar overlay's cursor-tracking and spriteVersionNumber paths, including Electron's screen.getCursorScreenPoint() entry point. Compare the look-direction behavior with the feature-gating context in #20706. Done means identifying whether a gate or another runtime requirement prevents rows 9–10 from being sampled and documenting the required conditions.
Written by the indexing model from the issue text.
Description
Summary
Valid spriteVersionNumber: 2 pets (8×11 atlas with the 16 look-direction cells in rows 9–10) render and animate correctly for all 9 standard states, but the look-direction behavior never activates — the pet never turns its head toward the cursor. Rows 9–10 appear to be completely unused at runtime.
Possibly related to #20706 (pet/avatar overlay feature gate blocked) — this looks like it could be the same server-side gating, but for the look-direction runtime specifically rather than the overlay itself.
Environment
- Desktop app: ChatGPT.app for macOS, build
26.715.31925(prod flavor) - Codex CLI:
0.145.0-alpha.18(originator: Codex Desktop / vscode source) - OS: macOS 15 (Darwin 24.6.0), Apple Silicon
- Plan: ChatGPT account login (
auth_mode = chatgpt) - Pets: custom pets installed under
~/.codex/pets/<id>/per the v2 pet contract
Steps to reproduce
- Install a valid v2 pet under
~/.codex/pets/<id>/with:pet.jsoncontaining"spriteVersionNumber": 2spritesheet.webp, 1536×2288 RGBA, 8 columns × 11 rows (192×208 cells)- rows 0–8 = standard states, rows 9–10 = the 16 clockwise look directions (000° = up)
- Select the pet, summon it via pet mode.
- Fully quit and relaunch the app (⌘Q) to rule out stale caching.
- Move the cursor slowly around / near the pet.
Expected
Per the v2 contract shipped with the bundled hatch-pet skill (references/codex-pet-contract.md): rows 9–10 provide a 16-direction look loop; neutral/front is the pointer deadzone falling back to idle. The pet should glance toward the cursor.
Actual
- All row 0–8 animations play normally (idle, running, waving, jumping, failed, waiting, review).
- The pet never enters any look-direction pose. Rows 9–10 are never sampled, regardless of cursor position or proximity.
- No errors in the desktop logs; the avatar overlay window is created and visible (
rendererWindowAppearance=avatarOverlay,rendererWindowVisible=true).
What I verified before filing
- Atlas validity: 1536×2288, 8×11 grid,
mode=RGBA, transparent background, zero RGB residue under fully transparent pixels; passes the bundledhatch-petdeterministic validation. - Manifest:
pet.jsondeclaresspriteVersionNumber: 2and the correctspritesheetPath; the 2288-px sheet is accepted (a v1-declared sheet of this height is rejected, so the version field is definitely being read). - Reproduces with multiple pets: two independent, fully valid v2 pets (one upgraded from v1 via the
hatch-petskill, one installed vianpx codex-pets add) show identical behavior — standard rows fine, look rows never used. - Not a permissions issue: the overlay reads the cursor via Electron's
screen.getCursorScreenPoint()(no Accessibility permission required), and the app bundle does contain the cursor-tracking andspriteVersionNumberhandling code paths.
Questions
- Is the look-direction runtime currently behind a server-side feature gate (Statsig), similar to what was reported in #20706?
- If so, is there a rollout timeline, a minimum app build, or any user-visible way to tell whether the feature is enabled for an account/build?
- If it is not gated, what else does the runtime require beyond
spriteVersionNumber: 2and a valid 8×11 atlas?
Happy to provide the full validation JSON, sample atlas, or logs if useful. Thanks — the pets feature is genuinely delightful, looking forward to the head-turning part
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·