TUI: make "Worked for" cumulative since last user prompt (not per separator/status lifecycle)
What feature would you like to see?
Add an explicit cumulative elapsed timer for the current turn: time since the last user prompt.
Today, Worked for appears to be based on delta timing between separators/status lifecycle events, which can reset during normal UI transitions (e.g. agent switches, status hide/restore, background task transitions).
Problem
For long-running tasks, users interpret Worked for as total elapsed work time for the turn. In practice it can show a much smaller value (example: expecting ~1h but seeing ~13m), which is confusing and undermines trust in progress reporting.
Current behavior (as implemented)
- Separator timing uses delta from previous separator, not total turn elapsed.
- Status timer can reset when status widget is dropped/recreated.
- Streaming intentionally hides/restores status row, which can trigger recreate/reset paths.
- Existing tests encode this reset behavior as expected.
Proposed behavior
Worked forshould show cumulative elapsed since the most recent user message in that thread/turn.- It should not reset on:
- agent switch
- status hide/show
- background/foreground transitions
- separator insertion / chunk boundaries
Optional UX refinement
If maintainers still want per-step/per-chunk timing, keep both:
Worked for= cumulative (primary)- optional secondary per-step duration in detailed views
Why this matters
This gives users a reliable answer to: “How long has Codex been working on my current request?”
Acceptance criteria
Worked foris monotonic within a turn and anchored to last user prompt timestamp.- Switching agents does not reduce/reset displayed elapsed time.
- Background task transitions do not reduce/reset displayed elapsed time.
- Streaming/status row hide+restore does not reduce/reset displayed elapsed time.
- Tests cover these scenarios.
Additional information
This request is about display semantics and user trust in progress timing, not model/runtime throughput itself.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗