App-server TUI does not fully reflect external live turns on shared thread
Summary
In 0.116.0, codex_tui_app_server does not fully reflect external live turn state when multiple app-server TUI clients are attached to the same thread.id.
The shared conversation context is correct, but an active TUI can fail to visibly refresh user/assistant live progress for turns that originated from another client.
Repro
- Start one app-server-backed TUI client.
- Start a second app-server-backed TUI client and resume the same
thread.id. - Send a turn from client A.
- Observe client B while the turn is running and after completion.
Expected
Client B should visibly reflect the same live turn state:
- external user turn appears immediately
- assistant streaming / plan updates appear live
- completion state is reflected without waiting for a local interaction
Actual
Conversation continuity is shared, but the active TUI may not fully redraw or refresh external turn state in real time.
In practice, the missing content can still show up later in the thread context, but the live UI state is incomplete.
Notes
I validated this locally on 0.116.0 and prepared a minimal reference patch in my fork:
That patch only touches codex-rs/tui_app_server and focuses on live refresh behavior for external turns.
I understand code contributions are invitation-only now, so I’m filing this as a bug report with analysis and a reference patch rather than assuming an unsolicited PR would be accepted.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗