Chat channels parity

Chat Channels Parity Registry

Snapshot of Channel.Capabilities() declarations across the implemented chat channels in core/bot-server/internal/channel/.

Spec: meta/docs/stack/specs/chat-channels/capability-matrix.kmd (#009). Authority: each channel's Capabilities() method is the source of truth. This registry mirrors it for human review.

*egend*— ✅ supported · — not supported · ◑ planned (in-flight ticket)

Last audited: 20260509 (commit landing #009).

1 — Receive (inbound message kinds)

Feature Telegram WhatsApp WebChat
Text
Image
Video
Audio
Voice
Document
Location
Contact
Sticker
ReplyThread
Edit
Reaction

2 — Send (outbound rendering)

Feature Telegram WhatsApp WebChat
Text
Image
Video
Audio
Voice
Document
Location
Sticker
MarkdownFormatting
EditMessage
DeleteMessage
Typing
Thinking
RealProgress

3 — Admin

Feature Telegram WhatsApp WebChat
SetPhoto ✅ (BOTSRV-008)
SetTitle
SetDescription
AddMember
RemoveMember
Promote
Demote
ListMembers
Leave

4 — Identity

Feature Telegram WhatsApp WebChat
UserName
UserEmail
UserAvatarURL
ChatTitle
ChatType
MemberCount

5 — History

Feature Telegram WhatsApp WebChat
PassiveLogging ◑ #011 ◑ #011 n/a (single-user)
MultimodalHistory ◑ #010 ◑ #010 — (no upload UI)

*ross-rule constraint* a channel that declares Receive.Image=true MUST also declare History.MultimodalHistory=true per Capabilities.Validate(). Telegram and WhatsApp currently violate this — captured by ticket #010 (acceptance criterion 1) which lands the schema migration that lets both flip true honestly. Until then, the validator is *dvisory*in CI for those two channels.

6 — Commands

Command Telegram WhatsApp WebChat
Help
Status
Clear
Model ✅ (via tool) ✅ (via tool) ✅ (via tool)
Keyboard
SetAvatar

7 — Gate

Mode Telegram WhatsApp WebChat
InviteCode
ApprovedChatList
OwnerOnly
PublicByDefault

Pending channels (#016)

Channel Status Notes
Signal not implemented spike via signal-cli or signald
Google Chat not implemented Workspace publishing required
Koder Chat not implemented depends on Koder Chat product API stabilization

When each ships, append a column to every table above and an entry in core/bot-server/internal/channel/.

CI guard

koder-housekeep (when v0.2+ ships with channel-aware audit) will parse every channel's Capabilities() and diff against this registry. Drift triggers PR-blocking finding. Until then, the audit is manual: update this file in the same commit that changes a Capabilities() return value.

Source: ../home/koder/dev/koder/meta/docs/stack/registries/chat-channels-parity.md