Skip to content

feat(slack): add thinking_placeholder config option to disable "Thinking..." message#861

Open
SeHoJoo wants to merge 3 commits intonextlevelbuilder:devfrom
SeHoJoo:feat/slack-thinking-placeholder-config
Open

feat(slack): add thinking_placeholder config option to disable "Thinking..." message#861
SeHoJoo wants to merge 3 commits intonextlevelbuilder:devfrom
SeHoJoo:feat/slack-thinking-placeholder-config

Conversation

@SeHoJoo
Copy link
Copy Markdown

@SeHoJoo SeHoJoo commented Apr 13, 2026

Summary

Adds `thinking_placeholder` config option to disable the `"Thinking..."` placeholder message in Slack channels.

UX motivation: With the current placeholder approach, users receive a push notification for `"Thinking..."` but not for the actual answer (message edits don't trigger Slack push). Disabling the placeholder causes the final response to arrive as a new message, which triggers a push notification on completion.

Changes:

  • `config/config_channels.go` — adds `ThinkingPlaceholder *bool` to `SlackConfig`
  • `channels/slack/channel.go` — reads config into `disableThinking` field
  • `channels/slack/handlers.go` + `handlers_mention.go` — conditionally skips placeholder send (both DM and group @mention paths)
  • `channels/slack/stream.go` — `StreamEnabled()` returns `false` when `disableThinking` is true; streaming requires a placeholder to edit into, so it is implicitly disabled together
  • `channels/slack/factory.go` — adds `ThinkingPlaceholder` to `slackInstanceConfig` so DB-based channel instances (UI-configured) also respect the option
  • `ui/web/.../channel-schemas.ts` — adds `thinking_placeholder` field; `dm_stream` and `group_stream` get `disabledWhen: thinking_placeholder=false` so they are grayed out with a hint in the UI
  • `ui/web/.../channel-advanced-dialog.tsx` — adds `thinking_placeholder` to `STREAMING_KEYS` so it appears in Advanced Settings → Streaming section

Config (UI): Slack channel → Advanced Settings → Streaming → Thinking Placeholder toggle

Interaction with streaming options:
When `thinking_placeholder` is off, `dm_stream` / `group_stream` are also effectively disabled — streaming works by progressively editing the placeholder, so without one there is nothing to edit. `StreamEnabled()` enforces this explicitly. The UI reflects this by graying out the streaming toggles with a hint.

Default behavior (`thinking_placeholder` omitted or `true`) is fully unchanged.

Test plan

  • Default behavior unchanged: omitting `thinking_placeholder` still sends `"Thinking..."` → edits with final response
  • Toggle off in UI (Advanced Settings → Streaming) → no placeholder, final response arrives as new message
  • Slack push notification received on response completion (not on placeholder)
  • DM Streaming / Group Streaming toggles are grayed out when Thinking Placeholder is off
  • `StreamEnabled()` returns `false` when `disableThinking` is true (streaming path not entered)
  • Both DM and group @mention paths respect the config
  • `go build ./...` passes
  • `go vet ./internal/channels/slack/...` passes

🤖 Generated with Claude Code

SeHoJoo and others added 2 commits April 13, 2026 12:43
…ing..." message

When thinking_placeholder is set to false, the bot skips sending the
"Thinking..." placeholder before processing. The final response is
delivered as a new Slack message (via the existing sendChunked fallback),
which triggers a push notification on completion rather than on the
placeholder.

StreamEnabled() also returns false when disableThinking is true — streaming
works by progressively editing the placeholder, so without one there is
nothing to edit. DB-based channel instances (UI-configured) are supported
via factory.go slackInstanceConfig.

Default behavior (thinking_placeholder omitted or true) is unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ettings

Adds Thinking Placeholder toggle in Advanced Settings → Streaming section.
DM Streaming and Group Streaming are grayed out with a hint when
Thinking Placeholder is disabled, since streaming requires a placeholder
message to edit into.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@SeHoJoo SeHoJoo force-pushed the feat/slack-thinking-placeholder-config branch from 0831291 to d33c360 Compare April 13, 2026 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant