feat(slack): render native charts from portable presentations#102635
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 9, 2026, 10:46 AM ET / 14:46 UTC. Summary Reproducibility: yes. for the review finding: source inspection shows Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review findings
Review detailsBest possible solution: Preserve Telegram native quote metadata when presentation sends take the core delivery route, then require inspectable Slack native-chart proof or an explicit maintainer proof waiver before merge. Do we have a high-confidence way to reproduce the issue? Yes for the review finding: source inspection shows Is this the best way to solve the issue? No until the Telegram quoteText regression is fixed. The chart architecture is otherwise the right owner boundary: shared presentation owns portable fallback while Slack owns native data_visualization validation and rendering. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 428c68a3c71f. Label changesLabel changes:
Label justifications:
Evidence reviewedAcceptance criteria:
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
Review history (5 earlier review cycles)
|
Mantis Telegram Desktop ProofSummary: Mantis captured native Telegram Desktop before/after GIFs showing chart fallback text in Telegram.
Motion-trimmed clips: |
e96d49a to
361e1f8
Compare
|
Evidence for exact head
Maintainer API decision for this PR: accept @clawsweeper re-review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f92d51287
ℹ️ 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".
|
Final exact-head update for
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
4f92d51 to
d900510
Compare
|
Land-ready evidence for rewritten head
@clawsweeper re-review |
|
🦞👀 Command router queued. I will update this comment with the next step. |
|
Merged via squash.
|


Related: #12602
What Problem This Solves
Slack users asking an OpenClaw agent to visualize structured data currently receive prose or must rely on Slack-specific raw Block Kit payloads. The portable presentation contract has no chart primitive, so agents cannot request native Slack charts while retaining accessible and cross-channel delivery.
Why This Change Was Made
Adds one portable chart block for line, bar, area, and pie data. Slack maps valid charts to its public
data_visualizationBlock Kit block; unsupported channels and rejected Slack blocks receive the same deterministic text representation.Slack-specific validation owns the platform limits, including Slack's live maximum of two data-visualization blocks per message. This adds no config, environment variable, OAuth scope, dependency, file upload, or image renderer. Gateway-routed channel actions retain gateway ownership; local adapters retain core presentation rendering. Explicit plugin payload-preparation declines also remain on their provider-native action path.
User Impact
Agents and CLI/plugin producers can send structured chart data once and get native inline charts in Slack. Discord, Telegram, Feishu, Matrix, and other channels without native chart support retain the chart title, axes, categories, series, and values as readable text.
Existing presentation payloads remain unchanged.
Evidence
steipeteclawDM (identifiers redacted): Slack accepted and read back native pie, bar, line, and area blocks; accepted two charts in one message; rejected a third with the documented runtime limit. Computer Use visually confirmed native chart geometry, axes, legends, and Slack's table/download controls. No screenshot was uploaded.run_db317988f724)run_06db2d8cca89)run_ba4c1f1e6bf4)run_07581fe7b883)run_0f114930648d)git diff --check: passedMaintainer API direction: accept
chartas a portable presentation primitive. Release-note context stays in this PR body because the landing gate reservesCHANGELOG.mdfor release work.AI-assisted implementation; Slack API, source, sibling channels, tests, and runtime ownership paths were reviewed. Private Slack identifiers and credentials were not disclosed.