Skip to content

fix: plan panel squeezing layout + storm breaker deadlock#2346

Open
dengmik-commits wants to merge 1 commit into
esengine:v1from
dengmik-commits:dev
Open

fix: plan panel squeezing layout + storm breaker deadlock#2346
dengmik-commits wants to merge 1 commit into
esengine:v1from
dengmik-commits:dev

Conversation

@dengmik-commits
Copy link
Copy Markdown

Summary

Two bug fixes:

1. Plan panel squeezing the conversation area (fixes #2338)

After accepting a plan, the right-side panel stayed open during execution, keeping the conversation area at 35% width. This was caused by the planPanelOpen condition including (planStepsRef.current && planStepsRef.current.length > 0 && !planMode), which kept the panel open for the entire execution phase.

Fix: Removed that condition. The panel now only opens for interactive states (pendingPlan, stagedInput, checkpoint, revision, reviseEditor). During execution, plan progress is shown inline via the existing PlanLiveRow component.

2. Storm breaker deadlock (fixes #2345)

When the model kept calling the same tool with identical arguments, the storm breaker correctly suppressed the calls. However, after the self-correction attempt failed and the "stuck retry loop" warning was emitted, if _steerQueue had any messages, the code would continue the loop without resetting the storm breaker state—causing an infinite loop where every subsequent attempt was immediately suppressed again.

Fix: Moved the allSuppressed check above the steerQueue check. When all tool calls are suppressed and self-correction has failed, the turn now always terminates via forceSummaryAfterIterLimit, regardless of steer queue contents.

Changes

  • src/cli/ui/App.tsx: Remove execution-phase condition from planPanelOpen
  • src/loop.ts: Reorder allSuppressed/steerQueue checks in repair path

…lock (esengine#2345)

- Remove execution-phase condition from planPanelOpen so the conversation
  area returns to full width after accepting a plan.
- Reorder allSuppressed check above steerQueue in repair path to prevent
  infinite loop when storm breaker suppresses all tool calls.
@esengine esengine added the v1 Legacy TypeScript line (0.x) — v1 branch, maintenance only label May 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v1 Legacy TypeScript line (0.x) — v1 branch, maintenance only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Storm 死循环卡住了。 窗口被挤压了。

2 participants