This release expands Slack Code support with channel views, context bars, and canvas collaboration, and fixes permission diagnostics, slash-command decoding, and workflow-button validation.
Important
Please read all the notes below, not just the breaking changes. Some changes deserve paying close attention to, like new fields in SlackResponse, and all the new *AgentConversation* methods.
Breaking changes
- Update interfaces, mocks, and function values that use the old canvas creation
signatures.CreateCanvasandCreateCanvasContextnow accept
options ...CreateCanvasOption. Existing direct calls still compile, but these
methods no longer satisfy interfaces with the old fixed signatures. Add the
variadic parameter to interface and mock declarations; adapt stored function
values or wrap the call in a function with the old signature. - Use field names when initializing
Properties,SlackResponse,
KickUserFromConversationSlackResponse, orSlackErrorResponse. New fields
make positional literals fail to compile. Existing keyed literals still work.
Added
- Show code diffs, HTML reports, Block Kit interfaces, and canvases in Slack Code
channels. UseSetAgentConversationViewto publish or update a view,
ListAgentConversationViewsto discover attached views, and
RemoveAgentConversationViewto remove them. All haveContextvariants.
Slack documents pull-request views too, but live requests have returned
invalid_view_type; publish a unified diff withAgentViewTypeDiffif that
happens. - Give a code channel useful context. Set context-bar links, action items,
a summary message, and external resource details with
SetAgentConversationPropertiesor itsContextvariant. Read session status,
title, assigned agents, origin message, context-bar ownership, summary, and
managed views throughProperties.AgentSessionandProperties.CodeChannel
in conversation responses. - Read and revise canvases attached to code channels.
GetAgentConversationCanvasretrieves markdown and comment threads, including
replies and optional resolved threads.SetAgentConversationCanvasContent
replaces the markdown while preserving section IDs and comment anchors on
unchanged sections. Both haveContextvariants. - Create a canvas directly in a channel, including in free workspaces that
require a channel. PassCreateCanvasOptionChannelID(channelID)to
CreateCanvasorCreateCanvasContext(#1623). - Try the new
examples/slack_codeCLI for channel
setup, context bars, views, canvases, commands, metadata inspection, and archival.
It includes sample HTML, Block Kit, markdown, and unified-diff files.
Fixed
- See which scopes are missing when an API call fails. Slack's
neededand
providedvalues are now preserved in responses andSlackErrorResponse, even
for methods that return only an error. Useerrors.Asto inspectNeededand
Provided; the error text is unchanged. - Discover code-channel views even when Slack returns an empty legacy
views
array.ListAgentConversationViewsalso preservessession_views, including
view types, names, and owner IDs. - Receive slash commands when Slack omits
is_enterprise_install. JSON
decoding now accepts absent or null values, including observed Slack Code
context-bar action deliveries over Socket Mode. - Send workflow buttons without an action ID. An empty
WorkflowButtonBlockElement.ActionIDis omitted from JSON so the button passes
Slack's block validation. Populated IDs are preserved.
Documentation and testing
- Clarify that Slack documents
raw_numbertable cells for publishing. If a
workspace rejects them withinvalid_blocks, send the number as a
TableRawTextCell. Null cells remain a received-only representation. - Add regression coverage for code-channel lifecycle events, Block Kit view
interactions, and agent slash commands through the existing HTTP and Socket
Mode parsers and handlers.
Full Changelog: v0.31.0...v0.32.0