Skip to content

Enhance visibility and retry functionality for timed-out plan reviews - #2715

Merged
esokullu merged 3 commits into
webbrain-one:mainfrom
esokullu:main
Aug 8, 2026
Merged

Enhance visibility and retry functionality for timed-out plan reviews#2715
esokullu merged 3 commits into
webbrain-one:mainfrom
esokullu:main

Conversation

@esokullu

@esokullu esokullu commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

esokullu and others added 3 commits August 9, 2026 00:06
Show a timeout state on plan review cards instead of removing them, with
a Retry button that resubmits the original request.

Four issues in that flow, found in review:

The Retry button was disabled by the second expire pass. A journal
replay or a panel reopen runs expirePlanReviewCards again, and its
disable sweep matched every button in the card, including the one the
first pass had just added. The sweep now skips the timeout footer, and a
Retry button restored from persisted HTML is re-enabled when rebound.

Restoring a timeout skipped the tab-wide sweep, so a card left by a run
that died without a plan_resolved stayed interactive and could post a
decision the background has no pending plan for. The sweep now runs in
both branches; the card that just expired is skipped by
invalidatePlanReviewCards' own guard.

Blanking the assistant text dropped the turn from exported history,
since extractChatHistoryMessages filters out messages with no text. A
hidden marker keeps the record without showing the string twice.

The expired-card guard in invalidatePlanReviewCards also skipped
setPlanReviewAwaiting, which is not about removal. Moved above it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The marker only went in when .message-text already held the terminal
cancellation string, which is the restore path. On a live timeout
_waitForPlanReview emits plan_resolved before its caller returns that
string, so the text is still empty when the card expires and the
predicate is false. run_complete and the direct-response path then both
suppress the string because the card is expired, so the text stays empty
and extractChatHistoryMessages filters the turn out. Real timeouts still
vanished from history.

Insert the marker whenever a card expires. Text already streamed before
the plan card is kept; only the terminal string is replaced.

Reported by codex on PR #243.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Timed-out plan reviews stay visible and retryable
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

@esokullu is attempting to deploy a commit to the esokullu's projects Team on Vercel.

A member of the Team first needs to authorize it.

@esokullu
esokullu merged commit 542e0cf into webbrain-one:main Aug 8, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant