macOS: Pet compact control bar shifts horizontally when a task notification appears
What version of the Codex App are you using (From “About Codex” dialog)?
Codex Desktop 26.803.41515 (build 6321).
What subscription do you have?
Not relevant to this local UI layout issue.
What platform is your computer?
macOS 27.0 (build 26A5388g), Apple Silicon (arm64).
What issue are you seeing?
The compact rounded control bar directly below the floating Pet shifts horizontally when a task notification appears.
With no activity notification, the collapsed bar is centered under the mascot. After a command finishes and an activity notification is present, the mascot remains in place but the bar moves about 3 CSS px to the right (approximately 6 screenshot pixels on a 2x display).
This is reproduced with a valid custom V2 Pet, but the moving element is the App-owned compact control bar, not part of the sprite atlas. Changing sprite padding or alignment can only compensate for one state and makes the other state incorrect.
Steps to reproduce
- Select and show a floating Pet.
- Dismiss existing activity notifications so the Pet is idle with no notification badge.
- Observe the compact rounded bar below the mascot; it is centered.
- Run any task or command.
- Let the task finish so an activity notification/badge is present.
- Observe that the same compact bar has moved slightly to the right while the mascot itself has not moved.
Expected behavior
The compact control bar should remain centered relative to the mascot regardless of whether an activity notification or badge is present.
Actual behavior
The bar uses a different horizontal slot when showsNotificationBadge changes, producing a visible rightward shift after task completion.
Local technical observations
These observations come from inspecting the packaged desktop App because the public repository does not appear to contain this renderer source.
The production compact-control defaults in this build are:
compactControlWidth = 17
compactControlGap = -10.5
compactOffsetX = 0
The compact row step is therefore:
max(0, compactControlWidth + compactControlGap) = 6.5
The voice-controls slot changes when a notification badge is present:
No badge: count = 3, index = 1 -> round((1 - (3 - 1) / 2) * 6.5) = 0
With badge: count = 4, index = 2 -> round((2 - (4 - 1) / 2) * 6.5) = 3
That matches the observed 3 CSS px state-dependent shift. A static compactOffsetX adjustment cannot fix both states.
Possible fix direction
For compact row layout, keep the voice-controls surface centered independently of notification count—for example, use the logical index (count - 1) / 2, or return x = compactOffsetX directly for this surface. Arc/expanded positioning can retain its current behavior.
A regression test could compare the compact voice-controls center before and after toggling showsNotificationBadge.
1 Comment
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action