[2 of 2] Start fresh TUI thread in background#23176
Conversation
21eb3e6 to
c5f1e4d
Compare
bbf5260 to
afadf1c
Compare
c5f1e4d to
bf13a59
Compare
afadf1c to
e93336b
Compare
## Why Codex TUI startup still feels slower than 0.117.0 after the app-server move in 0.118.0. A visible chunk of launch-to-input latency comes from serial terminal startup probes: cursor position, keyboard enhancement support, and default foreground/background color queries can each wait on terminal responses before the first usable frame. Refs #16335. ## What This PR batches the terminal startup probes into one bounded probe. It also reuses the probed cursor position and default colors during TUI setup, fast-paths the primary-device-attributes fallback as keyboard enhancement unsupported, and keeps lightweight startup timing logs for future tuning. The startup telemetry is intentionally left in production: it records phase timings for terminal probes and initial-frame scheduling so future startup regressions can be diagnosed from normal logs rather than re-adding one-off debug instrumentation. ## Benchmark In the local pty startup benchmark, the pre-optimization `main` baseline was about 250.5ms median from launch to accepted chat input. This probe-only branch measured about 152ms median, for an approximate savings of 95-100ms. ## Stack 1. [#23175: [1 of 2] Optimize TUI startup terminal probes](#23175) — this PR 2. [#23176: [2 of 2] Start fresh TUI thread in background](#23176) — layered on this PR ## Verification - `cargo test -p codex-tui`
e93336b to
e7300a2
Compare
e7300a2 to
ac0cdf8
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ac0cdf81a2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Yes, good catch. The intended behavior is for startup-pending submissions to queue as individual messages rather than remain as separate draft lines. When I asked codex to do another round of code reviews, it reported that problem as well. I guess it just missed it the first few times I asked it for a review. The latest branch should fix the behavior you saw during your smoke test. I also fixed a couple of smaller holes that codex identified along the way. |
fcoury-oai
left a comment
There was a problem hiding this comment.
It now correctly enqueue items as expected. Looks good.

Why
After the terminal-probe work in #23175, fresh-session startup still waits for
thread/startbefore the chat input can become usable. The chat widget already has the machinery to hold early submissions until a session is configured, so freshthread/startdoes not need to stay on the input-ready hot path.Refs #16335.
What
This PR starts fresh app-server threads in a background task, reports completion through a startup app event, and attaches the primary session once
thread/startreturns. Resume and fork startup paths remain synchronous.Benchmark
In the local pty startup benchmark, this PR's pre-optimization base branch, #23175, measured about 152ms median from launch to accepted chat input. The stacked result measured about 66ms median, for an approximate additional savings of 85-95ms. For broader context, the original
mainbaseline before either startup optimization was about 250.5ms median. We also measured Codex 0.117.0 on the same machine at about 64.6ms median, so the stacked branch is back in the old-startup-time range.Stack
Verification
cargo test -p codex-tui