[Codex App][Windows][Rendering] CJK mixed output leaves stale fragments and desynchronizes transcript/footer redraw
Summary
This is a Codex App / Codex Desktop rendering issue on Windows, not just a Codex CLI issue.
During long streamed output that mixes Chinese, English, Markdown, file paths, tables, and status lines, the visible transcript can become corrupted. The underlying task continues normally and the model output appears semantically correct, but the Codex App UI leaves stale visual fragments and can desynchronize the transcript area from the footer/status/prompt area.
I am intentionally not attaching screenshots in this report, so the textual symptoms below are explicit and diagnostic.
Environment
- Product: Codex App / Codex Desktop for Windows
- AppX package name: OpenAI.Codex
- AppX package version: 26.623.11225.0
- Package full name: OpenAI.Codex_26.623.11225.0_x64__2p2nqsd0c76g0
- Install location: C:\Program Files\WindowsApps\OpenAI.Codex_26.623.11225.0_x64__2p2nqsd0c76g0
- Codex.exe file/product version: 149.0.7827.197
- Windows edition: Microsoft Windows 11 Pro
- Windows version/build: 10.0.26200, Build 26200
ver: Microsoft Windows [Version 10.0.26200.8655]- System type: x64-based PC
- Shell: pwsh / PowerShell Core 7.6.0
- Active code page: 65001
- Culture / UI culture: en-US / en-US
- Display scaling: user should fill manually
- Codex App zoom level: user should fill manually
Symptoms
- The underlying Codex task continues normally.
- The visible output surface keeps stale characters from previous frames.
- Stale fragments often appear at the left edge of a line, such as isolated
m,e,n,in, oran. - Mixed Chinese/English/Markdown/file-path output seems more likely to trigger it.
- Markdown tables or long lines can wrap incorrectly, leaving stale right-side borders, duplicated fragments, or previous wrapped-line pieces.
- The bottom footer/status/prompt area can visually overlap with, squeeze, or desynchronize from the transcript body.
- The issue seems easier to reproduce during long streaming output, background agent status updates, CJK output, Markdown tables, long Windows paths, and window redraw/reflow events.
Expected behavior
The transcript renderer should fully clear or invalidate previous visual frames before drawing updated streamed content. Wrapped lines, CJK text, Markdown tables, long paths, and footer/status rows should remain visually stable after streaming updates and window reflow.
Actual behavior
The transcript visually accumulates stale glyph fragments or stale line pieces even though the underlying task continues normally. The visible UI can look corrupted while the actual assistant/shell work is still proceeding.
Reproduction steps
- Use Codex App / Codex Desktop on Windows.
- Start a task that streams a long response.
- Include mixed Chinese and English text, Markdown headings/lists/tables, code/file paths, and status-like lines.
- Let the output stream for a while, or trigger window redraw/reflow by resizing, switching focus, or letting background agent status rows update.
- Observe whether stale left-edge fragments, broken table wrapping, duplicated line pieces, or footer/prompt overlap appear.
Why this seems like a Codex App rendering issue
The corruption is visual. The model output and task execution remain normal. The fragments look like stale cells/glyphs from an earlier rendered frame, not like text intentionally emitted by the model, shell, or project code.
This should be treated as a Codex App transcript renderer / redraw / layout bug, not as model output corruption.
Possible technical hypothesis
This is only a hypothesis, not a confirmed root cause:
- The transcript renderer may be performing incremental streaming updates without fully invalidating or clearing the previous frame.
- If a newly rendered line is shorter than the previous rendered line, old glyph cells may remain visible, causing stale leading or trailing fragments.
- CJK width handling may be involved. Chinese characters may be measured with unstable width assumptions, or
wcwidth-style logical width may diverge from Chromium/font fallback actual glyph metrics. - Mixed CJK/Latin/Markdown/code/file-path content may produce unstable wrapping boundaries.
- Markdown tables and long paths may create layout cases where stale borders or previous wrapped segments are not cleared.
- The footer/status/prompt area may be rendered in a separate layer from the transcript. During streaming output or background status updates, compositing/layout boundaries may desynchronize.
- Windows display scaling, Codex App zoom level, GPU acceleration, and CJK font fallback could amplify measurement or repaint artifacts.
- Background agent status rows or auto-update/status banners may trigger additional repaint cycles that expose the footer/body overlap.
Extra notes / fields for user to fill
- Exact Codex version from About Codex, if different from the AppX package version above:
- Codex App zoom level:
- Windows display scaling percentage:
- Monitor setup, DPI, and whether an external monitor is used:
- GPU acceleration setting:
- Whether the issue reproduces after app restart:
- Whether the issue reproduces with GPU acceleration disabled:
- Whether the issue reproduces at 100% Windows scaling and 100% app zoom:
- Screenshots/video: intentionally not attached in this report