picoclaw/pkg/channels
Hoshina 29ed650107 feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces
Define PlaceholderCapable, TypingCapable, and ReactionCapable interfaces
and have BaseChannel.HandleMessage auto-detect and trigger all three as
independent pipelines on inbound messages. This replaces the scattered
manual orchestration code in each channel's handleMessage with a single
unified dispatch in the framework layer.

Changes:
- Add PlaceholderCapable interface to interfaces.go
- Add ReactionCapable + RecordReactionUndo to interfaces.go
- BaseChannel.HandleMessage auto-triggers Typing → Reaction → Placeholder
- Manager gains reactionUndos sync.Map with TTL janitor cleanup
- Telegram: extract SendPlaceholder from manual code, add StartTyping
- Discord: add SendPlaceholder + StartTyping
- Pico: add SendPlaceholder (uses Pico Protocol message.create)
- Slack: extract ReactToMessage from manual code
- OneBot: extract ReactToMessage, remove leaked pendingEmojiMsg sync.Map
- LINE: move group-chat guard into StartTyping, remove manual orchestration
- Config: add Placeholder to PicoConfig; remove from Slack/LINE/OneBot
  (no MessageEditor, so placeholder config was dead code)
2026-02-27 03:33:21 +08:00
..
dingtalk feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
discord feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
feishu feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
line feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
maixcam feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
onebot feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
pico feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
qq chore: apply PR #697 comment translations to refactored channel subpackages 2026-02-24 12:17:11 +08:00
slack feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
telegram feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
wecom fix: resolve wastedassign lint warnings in channel subpackages 2026-02-26 23:36:06 +08:00
whatsapp fix: port main branch changes to channel subpackages after rebase 2026-02-26 23:24:35 +08:00
base.go feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
base_test.go feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
errors.go refactor(channels): add per-channel rate limiting and send retry with error classification 2026-02-22 23:51:55 +08:00
errors_test.go refactor(channels): add per-channel rate limiting and send retry with error classification 2026-02-22 23:51:55 +08:00
errutil.go refactor(channels): standardize Send error classification with sentinel types 2026-02-23 01:45:48 +08:00
errutil_test.go refactor(channels): standardize Send error classification with sentinel types 2026-02-23 01:45:48 +08:00
interfaces.go feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
manager.go feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
manager_test.go fix: resolve wastedassign lint warnings in channel subpackages 2026-02-26 23:36:06 +08:00
media.go feat(channels): add MediaSender optional interface for outbound media 2026-02-23 03:10:57 +08:00
registry.go refactor(channels): add factory registry and export SetRunning on BaseChannel 2026-02-20 23:18:46 +08:00
split.go fix(channels): fix memory hazards in channel abstraction layer 2026-02-24 22:30:22 +08:00
split_test.go fix(channels): address PR #734 review comments 2026-02-25 11:51:21 +08:00
webhook.go refactor(channels): consolidate HTTP servers into shared server managed by Manager 2026-02-23 02:39:09 +08:00