From fd940d905b9e90cd2acd5ceea60967be246c656d Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Sun, 4 Oct 2026 05:23:36 -0700 Subject: [PATCH] feat: answer a click on a Slack approval card that carries no tool call with a private note to ask again or approve in the dashboard --- internal/app/slackapp/interactivity.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/app/slackapp/interactivity.go b/internal/app/slackapp/interactivity.go index 7ad0c8027..5658c577a 100644 --- a/internal/app/slackapp/interactivity.go +++ b/internal/app/slackapp/interactivity.go @@ -180,13 +180,14 @@ func (s *Service) requireLinked(ctx context.Context, p *interaction) *actor { // member may decide, and each card is decided once. func (s *Service) handleApproval(ctx context.Context, p *interaction, value, decision string) { rowID, toolCallID, ok := parseApprovalValue(value) - if !ok { - return - } a := s.requireLinked(ctx, p) if a == nil { return } + if !ok { + s.whisper(ctx, a.token, p, "This approval card is from an earlier version and can no longer decide anything. Ask Warmbly again, or approve it in the dashboard.") + return + } row, err := s.repo.GetAgentThreadByID(ctx, a.link.OrganizationID, rowID) if err != nil { return