picoclaw/pkg
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
..
agent fix: address PR #662 review comments (bus drain, context timeouts, onebot leak) 2026-02-23 21:34:37 +08:00
auth enable misspell 2026-02-25 21:14:19 +11:00
bus fix: resolve wastedassign lint warnings in channel subpackages 2026-02-26 23:36:06 +08:00
channels feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
config feat(channels): auto-orchestrate Placeholder/Typing/Reaction via capability interfaces 2026-02-27 03:33:21 +08:00
constants refactor: replace bool map with set-style map for internal channels (#472) 2026-02-19 11:48:17 +01:00
cron feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
devices fix: address PR #662 review comments (bus drain, context timeouts, onebot leak) 2026-02-23 21:34:37 +08:00
health refactor(channels): consolidate HTTP servers into shared server managed by Manager 2026-02-23 02:39:09 +08:00
heartbeat fix: address PR #662 review comments (bus drain, context timeouts, onebot leak) 2026-02-23 21:34:37 +08:00
identity feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
logger enable prealloc 2026-02-25 21:31:07 +11:00
media fix(media): separate import groups for gci linter 2026-02-26 22:45:59 +09:00
migrate Merge pull request #677 from yinwm/refactor/model-to-model-name 2026-02-24 19:05:40 +08:00
providers fix(providers): support per-model request_timeout in model_list (#733) 2026-02-26 19:08:19 +11:00
routing feat(identity): add unified user identity with canonical platform:id format 2026-02-23 06:56:48 +08:00
session feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
skills Perf/precompile regex (#687) 2026-02-26 20:44:03 +11:00
state feat(fmt): Run formatters 2026-02-18 21:48:23 +02:00
tools fix: address PR #662 review comments (bus drain, context timeouts, onebot leak) 2026-02-23 21:34:37 +08:00
utils refactor(channels): move SplitMessage from pkg/utils to pkg/channels 2026-02-23 05:46:34 +08:00
voice feat(linter): Fix govet linter 2026-02-20 22:35:16 +02:00