openclaw - ✅(Solved) Fix [GPT 5.4 v3 Phase 3.B] First-class plan rendering across CLI, Control UI, and messaging channels [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#67519Fetched 2026-04-17 08:30:23
View on GitHub
Comments
0
Participants
1
Timeline
5
Reactions
0
Participants
Timeline (top)
cross-referenced ×4referenced ×1

Fix Action

Fixed

PR fix notes

PR #67534: feat(agents): plan checklist renderer — 4 formats, all statuses, activeForm [Phase 3.B]

Description (problem / solution / changelog)

TL;DR

Core plan rendering utility that formats plan checklists for HTML (Telegram), Markdown (GitHub), plaintext (SMS), and Slack mrkdwn. Supports all 4 statuses (pending, in_progress, completed, cancelled) with `activeForm` live progress text.

Tracking

  • Umbrella: #66345
  • Issue: #67519

What this PR does

`renderPlanChecklist()` + `renderPlanWithHeader()` utilities that take a plan's step array and produce formatted output for any channel:

FormatChannelExample output
HTMLTelegram`<b></b> Deploy to staging`
MarkdownGitHub, CLI`- [x] Deploy to staging`
PlaintextSMS, logs`[✓] Deploy to staging`
Slack mrkdwnSlack`Deploy to staging` (cancelled)

`activeForm` renders live progress: shows "Building artifacts" instead of "Build artifacts" during `in_progress`.

Files changed

FileChangeTests
`src/agents/plan-render.ts`New — renderer utilities23 tests
`src/agents/plan-render.test.ts`New — all formats × statuses × edge casesSelf

23 unit tests

  • All 4 formats × all 4 statuses
  • activeForm rendering
  • HTML escaping for injection prevention
  • Empty plan edge case
  • Header formatting

Dependencies

  • #67514 for `cancelled` status + `activeForm` field

What follows

  • Channel adapters wire `renderPlanChecklist()` when handling plan events

Changed files

  • src/agents/plan-render.test.ts (added, +274/-0)
  • src/agents/plan-render.ts (added, +196/-0)
RAW_BUFFERClick to expand / collapse

GPT 5.4 Enhancement v3 — Phase 3.B

Tracking: #66345 Priority: P0 — Highest user-visible impact per §7.4 ranking Depends on: #67514 (task-system parity — cancelled status + activeForm field)

Problem

Today update_plan emits structured AgentPlanEventData events, but most channel plugins show the raw tool-call result instead of a checklist. Users on Telegram, Discord, Slack, CLI, and even Control UI cannot see what step the agent is on. This is the #1 "I can't tell what the agent is doing" complaint.

Scope

Render the agent's plan as a native checklist across every delivery surface:

SurfaceRender format
CLIInline checklist with status emoji (✅ ⏳ ❌ ⬚)
Control UIDedicated plan panel consuming AgentPlanEventData
TelegramHTML list with status markers
DiscordEmbed with fields per step
SlackBlock kit with checkboxes
iMessage / BlueBubblesPlain-text checklist
FeishuCard with step list (see #48384 streaming-card pattern)
MatrixBlock-formatted checklist (see #59266 streaming-modes pattern)

Each surface renders:

  • cancelled steps as strikethrough / text
  • in_progress steps with activeForm text when available
  • completed steps with ✅
  • pending steps with ⬚

Files to modify

  • src/cli/program/build-program.ts + new src/cli/render/plan-checklist.ts
  • src/gateway/server-runtime-subscriptions.ts
  • src/gateway/openresponses-http.ts
  • Control UI plan panel components
  • extensions/telegram/*, extensions/discord/*, extensions/slack/*, extensions/imessage/*, extensions/bluebubbles/*, extensions/feishu/*, extensions/matrix/* — per-channel render helpers

Estimated size: ~700 LoC across ~15 files

Verification

  • After a multi-step GPT-5.4 task, scrape the channel transcript and assert it contains a checklist with the expected steps in expected order
  • Extend qa-lab parity harness (#64441) with "user perceives plan" check

extent analysis

TL;DR

Modify the rendering logic for each delivery surface to consume AgentPlanEventData and display a native checklist, updating the specified files to achieve this functionality.

Guidance

  • Review the AgentPlanEventData structure to understand the available data for rendering the checklist on each surface.
  • Update the rendering logic for each surface (e.g., CLI, Control UI, Telegram, Discord, Slack, etc.) to consume AgentPlanEventData and display the checklist with the required status markers (e.g., ✅, ⏳, ❌, ⬚).
  • Ensure that the checklist rendering handles different step statuses (cancelled, in_progress, completed, pending) correctly, using strikethrough for cancelled steps and activeForm text when available for in_progress steps.

Example

No specific code example can be provided without more context, but the updates should involve modifying the rendering functions in files like src/cli/render/plan-checklist.ts and extensions/telegram/* to use the AgentPlanEventData and display the checklist accordingly.

Notes

The solution requires updating multiple files across different surfaces, and the estimated size of the changes is approximately 700 lines of code across 15 files. Verification of the changes involves scraping the channel transcript and asserting the presence of the expected checklist.

Recommendation

Apply the workaround by modifying the rendering logic for each delivery surface to consume AgentPlanEventData and display a native checklist, as this is the most direct approach to addressing the user-visible issue.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING