Repository navigation
Conversation
Derive the connecting flag from the persisted runtime phase so it survives route changes and reloads. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Derive timeline activity separately from the existing composer gates. Cover restored startup activity and follow-ups queued behind setup. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a focused web bug fix that derives the existing timeline working state from persisted provider session phases, restoring startup activity after reloads without changing send or queue semantics. The production logic is small and covered by targeted tests, with no defaults, schema, infrastructure, or static-analysis changes. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
|
Note Written by thanks @only21mil. deriving timeline activity from the persisted phase fixes the reload gap while preserving startup queued sends. i kept your implementation and commits, merged current main ( verification on this head:
unverified: authenticated hosted providers, electron shell, native mobile, a separate second client, remote/relay/tunnel connections, and actual worktree setup. the existing syncing label and timer origin remain outside this fix. matching data, viewport and light theme, before on current main: after on this head: queued follow-up, reload, release and completion. loading frames around reload were cut; the remaining sequence plays at normal speed. uploaded playback and seeking were checked in chrome. |
|
Note Written by Verified in a real dev environmentverified as-is at
short runtime transcript, read-only from this dev server's projections after the browser interactions: same project, prompt, viewport (1440x1000), and light theme. before on main: after on the exact pr head: startup activity, queued follow-up surviving reload, and both real replies completing. loading frames around reload were cut; remaining footage plays at normal speed. inspected the exported clip and checked uploaded playback and seeking in t3's preview player. Not verifiednative ios/android, electron, remote/relay/tunnel connections, other providers, actual worktree setup, compaction, and provider startup failure were not exercised. a separately paired second browser tab stalled during pairing, so second-client behavior is unverified. the verified path is the local web client and real codex provider. ci is not fully green: the existing |
…184-show-the-working-state-while-a-provider- Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Note 🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor. @maria-rcks we merged main into this branch to clear the conflict with #26238. It's one merge commit on top of your The old red Agent context budget run was stale. GitHub built its merge ref on an older main ( The conflict came from #26238, which deleted the unused Results on the merge:
|
…184-show-the-working-state-while-a-provider-
|
Note 🤖 Opus 5.5 replying on behalf of Victor. @maria-rcks this PR conflicts with main again, so we merged current main into it on a fork branch. You merged main here on your
What it fixes: the conflict with #33131. That PR removed plan mode, along with Verification on the merge:
What it can't clear: the If you'd rather have it on this branch directly, say so and we'll push it here as a fast-forward. |
|
Note 🤖 Opus 5.5 replying on behalf of Victor. @maria-rcks, a question about PRs you've marked as a takeover in your notes or branch names. On those we now leave the branch alone: we put the merge of main and any fix on a fork branch and leave a comment, like the one above. Several PRs are waiting that way now. Would you rather we push merges of main and review fixes directly to those branches, only as fast-forwards on top of your latest commit, or keep offering branches for you to pull? We'll follow whichever you prefer, on all of them. |
…184-show-the-working-state-while-a-provider-
|
Note 🤖 Opus 5.5 replying on behalf of Victor. @maria-rcks you verified |









Problem
A provider can still be starting after the draft becomes a thread, a page reloads, or another client opens it. The sidebar knows it is working, but the chat can look idle.
ChatView's working state counts the running phase and this tab's own send, but not the connecting phase.Change
Derive timeline activity from the existing runtime phase in
deriveTimelineWorking. The working row survives a reload during provider startup and clears when the run completes or fails.The composer stays usable during startup. Text entry and Send keep main's gates, preserving the setup queue shipped in #17654. A follow-up sent while a run is preparing or starting still queues behind it. After a reload, Compact waits for startup to finish, as it already does on the tab that sent the message.
This fixes the missing working state in #14244. The separate "Syncing messages..." label and working timer's start time remain outside this fix.
Scope and approval
Julius's triage identifies the dead flag and endorses using the connecting phase. This applies that startup state to timeline activity while preserving #17654's send behavior.
Verification
Main
d2c25950b4against this headf0363dafac, each with an isolated home, a synthetic project and the real Codex CLI (0.167.1, GPT-6-Luna). A wrapper holdscodex app-serverbefore it starts, so the run stays instartinguntil I release it. Web input was in the Browser panel. Linux, macOS and Windows desktop ran from source, with input sent through the debugging port.vp test run apps/web/src/components/ChatView.logic.test.ts apps/web/src/session-logic.test.ts: 94 pass.vp run check:changed: lint, knip, typecheck, tests and React Compiler pass.Not checked:
1e52c15a13.Prior PRs: #14000 by Raj Sharma (@xrehpicx) proposed the same derivation. It was closed for missing live-client evidence, which the author supplied afterward. Thanks to Joseph Vidal (@josephv123) for #14244 and the follow-up.
Web after a reload during provider startup (left: main, right: this head).
A follow-up queued while startup is held, after a second reload.
After release, both replies arrive and the working row is gone.
Linux desktop, same steps (left: main, right: this head).
macOS desktop, same steps (left: main, right: this head).
Windows desktop, same steps (left: main, right: this head).
Generated with GPT-6.1 Sol and Claude Opus 5.5 in T3 Code Nightly