sync: port upstream plan fold and per-device provider settings (#5558–#5580) - #217
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
…ut an origin remote (pingdotgg#5556) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…otes (pingdotgg#5547) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…k log (pingdotgg#5559) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ic error (pingdotgg#5557) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#5493) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Theo Browne <me@t3.gg>
… bottom (pingdotgg#5566) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#5572) Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: aaditagrawal <aaditagrawal@users.noreply.github.com>
…rovider update (pingdotgg#5570) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…otgg#5573) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com> (cherry picked from commit 48aa875)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 95305c3)
…pingdotgg#5563) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> (cherry picked from commit b98a0f0)
… page (pingdotgg#4511) (cherry picked from commit 220efad)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 3ffe84f)
4be7789 to
96d0a9b
Compare
3b3c449 to
cd88dd2
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3b3c449df3
ℹ️ 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".
| } else if (!conflictsWithActiveTurn) { | ||
| if (event.type === "turn.plan.updated") { | ||
| threadPlanProgress.recordPlanProgress(thread.id, event.payload.plan); | ||
| } else if (event.type === "turn.completed" || event.type === "turn.aborted") { |
There was a problem hiding this comment.
Clear plan progress when steering starts a replacement turn
When steering causes a provider such as OpenCode to start a replacement turn without completing the superseded one—the scenario explicitly handled earlier in this function—the accepted turn.started still has conflictsWithActiveTurn === true, so this branch neither clears nor replaces the old thread-level plan progress. Until the replacement turn emits its own plan update, the shell and sidebar therefore label the new work with the superseded turn’s current step; clear progress when conflictingTurnStartIsPendingTurnStart is accepted, or associate progress with its turn ID.
AGENTS.md reference: AGENTS.md:L25-L25
Useful? React with 👍 / 👎.
| // Plans rewrite in place: compare the snapshot's identity fields so an | ||
| // unchanged plan keeps its row reference (virtualization stability). | ||
| return a.createdAt === bp.createdAt && a.turnPlan.plan === bp.turnPlan.plan; |
There was a problem hiding this comment.
Preserve plan identity across unrelated activity updates
When any new activity arrives after a thread has accumulated plan rows, deriveTurnPlans reconstructs every ActivePlanState, so a.turnPlan.plan === bp.turnPlan.plan is false even when that plan’s source activity did not change. This defeats the row-stability layer and rerenders every historical plan chip throughout a live activity stream; compare stable source activity identity or reuse the previous plan objects instead of relying on newly allocated plan-state references.
Useful? React with 👍 / 👎.
| const [expanded, setExpanded] = useState(false); | ||
| const { steps } = row.turnPlan.plan; | ||
| const completedCount = steps.filter((step) => step.status === "completed").length; |
There was a problem hiding this comment.
Render the plan explanation in the folded row
For a turn.plan.updated event with a non-null explanation, the replacement row reads and renders only steps, leaving the retained ActivePlanState.explanation inaccessible even after expansion. The removed plan sidebar displayed this provider-supplied context, so folding a plan now silently loses information such as the rationale for a Codex plan update; include the explanation in the expanded chip.
Useful? React with 👍 / 👎.
L3/7 of the 2026-08-08 upstream sync stack. Stacked on L2 (#216).
What lands
Fork deviations preserved
rateLimitThreads/RateLimitsViewafter plan-fold ChatView surgeryVerification
vp checkandvp run typecheckpass after restack onto current L2.Stacked below L4. Review bottom-up after L1–L2.