Skip to content

macOS: Pet briefly falls back to the busy animation at drag start and release #36331

Description

@Carleo10032

What version of the Codex App are you using (From “About Codex” dialog)?

ChatGPT/Codex desktop 26.727.40816 (build 6067)

What subscription do you have?

ChatGPT Plus

What platform is your computer?

macOS 27.0 beta (26A5388g), Apple Silicon (arm64)

What issue are you seeing?

When the floating Pet is displaying its running/busy animation because a task is active, dragging the Pet does not transition cleanly into and out of the directional drag animations.

At both boundaries of the interaction, the Pet briefly shows the busy animation:

  • immediately after the drag starts, before running-left or running-right takes over;
  • at mouse release, before the directional drag state has fully finished.

This creates a visible animation flicker. The directional drag animation itself plays once the movement direction has been detected.

What steps can reproduce the bug?

  1. Wake/show a Pet in the Codex desktop overlay on macOS.
  2. Start a task and wait until the Pet is displaying the running/busy animation.
  3. Press and drag the Pet horizontally.
  4. Observe a brief busy-animation frame at the start before the directional running animation appears.
  5. Release the mouse button while the Pet is moving.
  6. Observe another brief busy-animation frame during the release transition.

No screenshot is required to reproduce the issue because the problem is visible only in the animation timing.

What is the expected behavior?

Once an actual drag begins, the Pet should transition directly to running-left or running-right and keep the last directional drag state through the release handoff. It should return to the task's busy animation only after the drag has fully ended.

A smooth state sequence would be:

busy -> directional drag -> drag release completes -> busy

There should be no intermediate fallback to the busy animation while drag-start or drag-end events are still being processed.

Actual behavior

The effective sequence is closer to:

busy -> busy fallback -> directional drag -> busy fallback -> drag state finishes

The two brief fallbacks make the Pet visibly flash.

Additional information

Inspection of the desktop bundle suggests this is an overlay state-transition timing issue rather than a spritesheet issue:

  • the Pet renderer uses the transient drag state when present and otherwise falls back to the underlying task state;
  • pointer-down clears the transient drag state before a direction has been established;
  • horizontal movement must cross an approximately 4 px threshold before setting running-left or running-right;
  • pointer-up clears the transient state before the drag-end message is dispatched;
  • native window-drag direction events are asynchronous, so clearing the state locally can briefly expose the underlying running state while drag events are still settling.

A possible fix would be to track drag activity separately from drag direction, preserve the last directional state through the release handoff, and clear it only when the authoritative drag-ended/window-drag direction: null event is received. For non-native dragging, the state could be cleared after the drag-end dispatch rather than before it.

I searched the existing open issues for Pet drag animation flicker and drag-state fallback behavior and did not find an exact duplicate.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingpets

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions