feat(slack): render progress as native progress task cards#82258
feat(slack): render progress as native progress task cards#82258simonvanlaak wants to merge 10 commits into
Conversation
|
Codex review: needs maintainer review before merge. Reviewed May 28, 2026, 8:01 AM ET / 12:01 UTC. Summary PR surface: Source +499, Tests +1141, Docs +20, Generated 0. Total +1660 across 19 files. Reproducibility: not applicable. this is a feature PR rather than a bug report. The PR provides a real Slack recording and redacted stream proof for the new opt-in behavior. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the default-off Slack native progress path only after maintainers accept the new config surface, the native-stream delivery behavior, and the documented follow-up limitations. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a feature PR rather than a bug report. The PR provides a real Slack recording and redacted stream proof for the new opt-in behavior. Is this the best way to solve the issue? Yes, if maintainers accept the scope: the default-off Slack-only flag preserves current behavior while adding the native task-card path with focused tests and docs. The safer alternative is to pause until upstream tool identity and failed-command status contracts are also solved. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against da551463e3e9. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +499, Tests +1141, Docs +20, Generated 0. Total +1660 across 19 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
fd25fc9 to
036f7df
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 036f7dfac1
ℹ️ 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".
|
Product decisions locked from e2e UX review:
Next implementation shape:
|
12e07b2 to
bcbac45
Compare
|
ClawSweeper PR egg: ✨ hatched 🥚 common Neon Patch Peep. Rarity: 🥚 common. Trait: keeps receipts. DetailsShare on X: post this hatch
About:
|
|
Current state for maintainer review:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d2bec46549
ℹ️ 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".
|
this would be very useful. thank you! |
|
Thanks @simonvanlaak. I landed this via replacement maintainer PR #87748 because pushing fixups back to the fork branch was denied even though the PR metadata reported maintainer edits were enabled. Landed commit: 7c4601e For future PRs, please double-check that GitHub's "Allow edits by maintainers" setting is enabled and that the fork branch permissions allow maintainer pushes. |
Summary
This adds an explicit Slack-only opt-in for native progress task cards:
channels.slack.streaming.mode="progress"channels.slack.streaming.progress.nativeTaskCards=trueDefault behavior is unchanged. If
nativeTaskCardsis unset, Slack progress mode continues to use the existing portable draft-preview path.What changed
plan_update/task_updatestream chunks when the opt-in is enabled.nativeTaskCardsis scoped to Slack config/schema/docs and generated channel metadata.SlackChannelStreamingConfigexport remains available through the channel streaming surface.Maintainer notes
The intended review focus is the Slack opt-in gate, native stream lifecycle, task chunk rendering, final-thread delivery, and the default-off upgrade behavior.
Known follow-ups intentionally left out of this PR:
Verification
Current head:
2dda167d9569bb424ffd26d1c51dbb095cbb63cfnode --import tsx scripts/generate-bundled-channel-config-metadata.ts --checkcheck-prod-types,check-test-types,check-lint,check-guards,build-artifacts,check-docs, andReal behavior proof.git diff origin/main -- extensions/openrouter/provider-routing.ts src/commands/status.summary.redaction.test.tsis empty, so the prior unrelated cleanup is no longer in this PR.Visual proof
Screencast.From.2026-05-20.11-38-07.webm
Shows a native Slack progress task card appearing during work, updating while tools run, completing, and then the final answer landing in the same Slack thread.
Real behavior proof
Behavior addressed: Slack native progress task cards are opt-in through Slack-only
channels.slack.streaming.progress.nativeTaskCards=true; existing Slack progress mode remains on the portable draft-preview path unless that flag is set. The opted-in native path sends Slack stream chunks (plan_update/task_update) instead of replacing full Block Kit messages.Real environment tested: local source-run OpenClaw gateway from this PR branch using OpenClaw test app credentials in Slack workspace
4ok, channelC0ASNARACMT, withstreaming.mode="progress"andstreaming.progress.nativeTaskCards=true. The current head includes the post-review type/export fix, the scope cleanup that removed unrelated OpenRouter changes, and the final-only native-progress delivery fix.Exact steps or command run after this patch: started the local source-run gateway with OpenClaw test app credentials and a redacted HTTP-level Slack stream recorder, verified
/healthzreturned{"ok":true,"status":"live"}and logs showedslack socket mode connected; then sent a Slack prompt that produced native progress task-card updates and a final marker reply.Evidence after fix: Slack thread
https://4okworkspace.slack.com/archives/C0ASNARACMT/p1779268109549229; pass flags werefinal_text_seen=trueandstream_chunk_proof=true. The redacted stream evidence showedchat.startStreamwithtask_display_mode=planandplan_update+task_updatechunks, followed bychat.appendStreamchunk updates andchat.stopStream.Observed result after fix: OpenClaw consumed the Slack prompt, delivered native progress through Slack stream chunks while the command was still running, updated tasks to complete, and posted the final marker reply in the same thread.
What was not tested: maintainer-owned Slack desktop smoke proof on current head. Repeated same-name tool calls without upstream stable ids may still collapse, and a failed command followed by a normal final assistant reply may finalize the native task as complete rather than error; both are intentionally left as follow-ups to keep this PR scoped to the opt-in Slack-native progress feature.