Plugin fullscreen remains blank until window resize or conversation navigation
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.901.22334
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.6.0 arm64 arm
What issue are you seeing?
When a plugin switches from inline mode to fullscreen, the plugin fullscreen area becomes blank.
The fullscreen request is accepted and the reported display mode changes to fullscreen, but the plugin document remains hidden and receives zero fullscreen constraints.
Runtime state while the fullscreen view is blank:
{
"displayMode": "fullscreen",
"visibilityState": "hidden",
"maxWidth": 0,
"maxHeight": 0,
"viewportWidth": 736,
"viewportHeight": 485,
"contentExists": true,
"contentHasNonZeroLayoutBounds": true
}
The plugin content exists, has completed layout, and is not hidden by its own CSS. However, the Codex host still reports the document as hidden and does not provide valid fullscreen bounds.
The blank view can be recovered by either:
- Changing the Codex window width or sidebar width.
- Switching to another conversation and then switching back.
After changing the window or sidebar width, the runtime state becomes:
{
"displayMode": "fullscreen",
"visibilityState": "visible",
"maxWidth": 647,
"maxHeight": 976,
"viewportWidth": 647,
"viewportHeight": 976
}
No plugin content or application-state change is required for recovery. No JavaScript exception or explicit error message is shown.
What steps can reproduce the bug?
- Open a conversation containing a plugin that supports inline and fullscreen display modes.
- Open the plugin in inline mode.
- Switch the plugin to fullscreen.
- Observe that the plugin fullscreen area is blank.
- Change the Codex window width or sidebar width.
- Observe that the plugin immediately appears.
- Alternatively, switch to another conversation and then return to the affected conversation.
- Observe that the plugin also appears after conversation navigation.
A minimal fullscreen request is:
await window.openai.requestDisplayMode({
mode: "fullscreen"
});
The request resolves successfully and reports fullscreen, even while the document remains hidden with zero fullscreen constraints.
Repeating the fullscreen request does not recover the view. Returning to inline mode and entering fullscreen again also does not reliably recover it.
This is a UI-lifecycle issue and is not associated with token usage, context-window usage, or a specific session ID.
What is the expected behavior?
After Codex accepts a plugin fullscreen request, it should:
- Attach and activate the plugin fullscreen view.
- Apply valid non-zero fullscreen bounds.
- Mark the plugin document as visible.
- Render the plugin immediately without requiring a window resize, sidebar resize, or conversation navigation.
Additional information
The following recovery attempts from inside the plugin document do not work:
- Repeating the fullscreen request.
- Performing an inline-to-fullscreen round trip.
- Dispatching a synthetic resize event.
- Triggering focus or local layout recalculation.
- Changing the plugin DOM dimensions.
- Sending an intrinsic-height notification.
- Triggering a local compositor repaint.
Only host-level layout or activation actions recover the view:
- Changing the Codex window or sidebar width.
- Navigating to another conversation and returning.
This suggests a Codex Desktop plugin-view activation or bounds-synchronization issue during the fullscreen transition. The host appears to accept fullscreen mode before the fullscreen view has been made visible and assigned valid bounds.
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.
Research direction
Start by reproducing the inline-to-fullscreen transition described in the issue and inspect the host plugin-view activation and bounds synchronization path. Compare the state before and after a window resize or conversation navigation; done means fullscreen immediately becomes visible with non-zero bounds without either recovery action.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, rust
- Domain
- desktop, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 50/100