Skip to content

docs: sync READMEs, examples, and channel docs to match current config#916

Merged
alexhoshina merged 3 commits intosipeed:mainfrom
alexhoshina:fix/channel-config-cleanup
Mar 1, 2026
Merged

docs: sync READMEs, examples, and channel docs to match current config#916
alexhoshina merged 3 commits intosipeed:mainfrom
alexhoshina:fix/channel-config-cleanup

Conversation

@alexhoshina
Copy link
Collaborator

@alexhoshina alexhoshina commented Feb 28, 2026

📝 Description

  • Update config.example.json to remove dead webhook_host/webhook_port and unused typing/placeholder fields
  • Sync all READMEs (en/zh/ja/pt-br/fr/vi) with current channel config
  • Update Discord docs: mention_only → group_trigger
  • Update LINE, WeCom, WeComApp channel docs

Copilot AI review requested due to automatic review settings February 28, 2026 13:34
@alexhoshina alexhoshina marked this pull request as draft February 28, 2026 13:38
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR streamlines channel configuration by removing unused/dead per-channel config fields (webhook host/port, placeholder/typing where unsupported) and adds an explicit “typing enabled” gate in BaseChannel so typing indicators only auto-trigger when configured.

Changes:

  • Removed obsolete webhook_host/webhook_port fields for LINE/WeCom/WeComApp and removed unused typing/placeholder fields for channels that don’t implement the corresponding capabilities.
  • Added WithTypingEnabled(...) option and gated BaseChannel.HandleMessage typing auto-trigger accordingly; wired the option into TypingCapable channels.
  • Updated defaults/examples/docs across configs and READMEs to reflect the new schema and shared Gateway webhook server.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
pkg/config/defaults.go Enables typing by default for selected channels; removes per-channel webhook host/port defaults
pkg/config/config.go Removes dead config fields; adds/updates typing fields; marks legacy keys as deprecated
pkg/channels/base.go Adds typing enable/disable option and gates StartTyping invocation
pkg/channels/telegram/telegram.go Passes typing gate option from config into BaseChannel
pkg/channels/discord/discord.go Passes typing gate option from config into BaseChannel
pkg/channels/line/line.go Passes typing gate option from config into BaseChannel
pkg/channels/pico/pico.go Passes typing gate option from config into BaseChannel
pkg/channels/README.md Syncs channel-system dev docs with config/capabilities (some statements need correction)
pkg/channels/README.zh.md Same as above for Chinese version (some statements need correction)
docs/wecom-app-configuration.md Updates webhook callback URL guidance to shared Gateway port
docs/channels/wecom/wecom_bot/README.zh.md Removes per-channel webhook host/port; notes shared Gateway server
docs/channels/wecom/wecom_app/README.zh.md Removes per-channel webhook host/port; notes shared Gateway server
docs/channels/line/README.zh.md Removes per-channel webhook host/port and updates Gateway guidance (has a duplicate row)
docs/channels/discord/README.zh.md Updates Discord example to use group_trigger instead of mention_only
config/config.example.json Updates examples (Discord group_trigger, removes per-channel webhook host/port)
README.md Notes shared Gateway webhook server; updates Discord/LINE/WeCom examples accordingly (note needs Feishu correction)
README.zh.md Same as above for Chinese README (note needs Feishu correction)
README.vi.md Updates LINE/WeCom examples and ports to shared Gateway
README.pt-br.md Updates LINE/WeCom examples and ports to shared Gateway
README.ja.md Updates LINE/WeCom examples and ports to shared Gateway
README.fr.md Updates LINE/WeCom examples and ports to shared Gateway

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Token string `json:"token" env:"PICOCLAW_CHANNELS_DISCORD_TOKEN"`
AllowFrom FlexibleStringSlice `json:"allow_from" env:"PICOCLAW_CHANNELS_DISCORD_ALLOW_FROM"`
MentionOnly bool `json:"mention_only" env:"PICOCLAW_CHANNELS_DISCORD_MENTION_ONLY"`
MentionOnly bool `json:"mention_only" env:"PICOCLAW_CHANNELS_DISCORD_MENTION_ONLY"` // deprecated: use group_trigger.mention_only
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DiscordConfig.MentionOnly is marked deprecated in comments, but because it lacks omitempty it will still be written into newly generated config files via SaveConfig (json.MarshalIndent), which conflicts with the updated examples that use group_trigger. Consider adding omitempty (and/or moving the field behind a dedicated legacy struct) so new configs don’t include deprecated keys while unmarshalling old configs still works.

Suggested change
MentionOnly bool `json:"mention_only" env:"PICOCLAW_CHANNELS_DISCORD_MENTION_ONLY"` // deprecated: use group_trigger.mention_only
MentionOnly bool `json:"mention_only,omitempty" env:"PICOCLAW_CHANNELS_DISCORD_MENTION_ONLY"` // deprecated: use group_trigger.mention_only

Copilot uses AI. Check for mistakes.
AccessToken string `json:"access_token" env:"PICOCLAW_CHANNELS_ONEBOT_ACCESS_TOKEN"`
ReconnectInterval int `json:"reconnect_interval" env:"PICOCLAW_CHANNELS_ONEBOT_RECONNECT_INTERVAL"`
GroupTriggerPrefix []string `json:"group_trigger_prefix" env:"PICOCLAW_CHANNELS_ONEBOT_GROUP_TRIGGER_PREFIX"`
GroupTriggerPrefix []string `json:"group_trigger_prefix" env:"PICOCLAW_CHANNELS_ONEBOT_GROUP_TRIGGER_PREFIX"` // deprecated: use group_trigger.prefixes
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OneBotConfig.GroupTriggerPrefix is now documented as deprecated, but since it lacks omitempty it will still be emitted into new configs (defaults set it to an empty slice). Consider changing the JSON tag to json:"group_trigger_prefix,omitempty" so freshly written configs don’t include this legacy field while LoadConfig.migrateChannelConfigs still supports it on read.

Suggested change
GroupTriggerPrefix []string `json:"group_trigger_prefix" env:"PICOCLAW_CHANNELS_ONEBOT_GROUP_TRIGGER_PREFIX"` // deprecated: use group_trigger.prefixes
GroupTriggerPrefix []string `json:"group_trigger_prefix,omitempty" env:"PICOCLAW_CHANNELS_ONEBOT_GROUP_TRIGGER_PREFIX"` // deprecated: use group_trigger.prefixes

Copilot uses AI. Check for mistakes.
6. **DingTalk uses Stream mode**: DingTalk uses the SDK's Stream/WebSocket mode (not HTTP webhook), so it does not implement `WebhookHandler`.

3. **WeCom has two factories**: `"wecom"` (Bot mode) and `"wecom_app"` (App mode) are registered separately.
7. **PlaceholderConfig vs implementation**: `PlaceholderConfig` appears in 6 channel configs (Telegram, Discord, Slack, LINE, OneBot, Pico), but only channels that implement both `PlaceholderCapable` + `MessageEditor` (Telegram, Discord, Pico) can actually use placeholder message editing. The rest are reserved fields.
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section says PlaceholderConfig appears in 6 channel configs including Slack/LINE/OneBot, but in the current config structs those channels no longer have a placeholder field (Slack/LINE/OneBot removed it). Please update the list to match the actual config schema (and/or the channels that implement PlaceholderCapable + MessageEditor).

Suggested change
7. **PlaceholderConfig vs implementation**: `PlaceholderConfig` appears in 6 channel configs (Telegram, Discord, Slack, LINE, OneBot, Pico), but only channels that implement both `PlaceholderCapable` + `MessageEditor` (Telegram, Discord, Pico) can actually use placeholder message editing. The rest are reserved fields.
7. **PlaceholderConfig availability**: `PlaceholderConfig` is only available for channels that implement both `PlaceholderCapable` and `MessageEditor` (currently Telegram, Discord, and Pico); other channels do not expose this field in their configs.

Copilot uses AI. Check for mistakes.
Comment on lines +784 to +788
Token string `yaml:"token" json:"token"`
AllowFrom []string `yaml:"allow_from" json:"allow_from"`
GroupTrigger GroupTriggerConfig `yaml:"group_trigger" json:"group_trigger"`
Placeholder PlaceholderConfig `yaml:"placeholder" json:"placeholder"`
ReasoningChannelID string `yaml:"reasoning_channel_id" json:"reasoning_channel_id"`
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example struct shown here includes yaml:"..." tags, but PicoClaw configuration is JSON-based (config.json) and the actual Go config structs use JSON/env tags. Keeping YAML tags in the docs can mislead readers into thinking YAML is supported; consider removing the YAML tags or adding a note that YAML isn’t used.

Copilot uses AI. Check for mistakes.
6. **DingTalk 使用 Stream 模式**:DingTalk 使用 SDK 的 Stream/WebSocket 模式(非 HTTP webhook),因此不实现 `WebhookHandler`。

3. **WeCom 有两个工厂**:`"wecom"`(Bot 模式)和 `"wecom_app"`(应用模式)分别注册
7. **PlaceholderConfig 的配置与实现**:`PlaceholderConfig` 出现在 6 个 channel config 中(Telegram、Discord、Slack、LINE、OneBot、Pico),但只有实现了 `PlaceholderCapable` + `MessageEditor` 的 channel(Telegram、Discord、Pico)能真正使用占位消息编辑功能。其余 channel 的 `PlaceholderConfig` 为预留字段
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section says PlaceholderConfig appears in 6 channel configs including Slack/LINE/OneBot, but the current config structs no longer include placeholder for those channels. Please update the list to match the actual schema and implementation status.

Suggested change
7. **PlaceholderConfig 的配置与实现**`PlaceholderConfig` 出现在 6 个 channel config 中(Telegram、Discord、Slack、LINE、OneBot、Pico),但只有实现了 `PlaceholderCapable` + `MessageEditor` 的 channel(Telegram、Discord、Pico)能真正使用占位消息编辑功能。其余 channel 的 `PlaceholderConfig` 为预留字段
7. **PlaceholderConfig 的配置与实现**`PlaceholderConfig` 目前只出现在 3 个 channel config 中(Telegram、Discord、Pico),且这三个 channel 都实现了 `PlaceholderCapable` + `MessageEditor`,可以真正使用占位消息编辑功能

Copilot uses AI. Check for mistakes.
Comment on lines 283 to 290
if c.owner != nil && c.placeholderRecorder != nil {
// Typing — independent pipeline
if tc, ok := c.owner.(TypingCapable); ok {
if stop, err := tc.StartTyping(ctx, chatID); err == nil {
c.placeholderRecorder.RecordTypingStop(c.name, chatID, stop)
// Typing — independent pipeline (gated by typingEnabled; nil = default true)
if c.typingEnabled == nil || *c.typingEnabled {
if tc, ok := c.owner.(TypingCapable); ok {
if stop, err := tc.StartTyping(ctx, chatID); err == nil {
c.placeholderRecorder.RecordTypingStop(c.name, chatID, stop)
}
}
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new typing gate changes HandleMessage behavior, but there are no tests covering that typing is triggered by default and suppressed when typing is explicitly disabled (WithTypingEnabled(false)). Adding a unit test around HandleMessage with a TypingCapable mock would prevent regressions in this gating logic.

Copilot uses AI. Check for mistakes.
| webhook_port | int | 是 | Webhook 监听的端口 (默认为 18791) |
| webhook_path | string | 是 | Webhook 的路径 (默认为 /webhook/line) |
| allow_from | array | 否 | 用户ID白名单,空表示允许所有用户 |
| allow_from | array | 否 | 用户ID白名单,空表示允许所有用户 |
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The config table contains a duplicated allow_from row (it appears twice). Please remove the duplicate entry to avoid confusion.

Suggested change
| allow_from | array | 否 | 用户ID白名单,空表示允许所有用户 |

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7. **PlaceholderConfig vs implementation**: `PlaceholderConfig` appears in 6 channel configs (Telegram, Discord, Slack, LINE, OneBot, Pico), but only channels that implement both `PlaceholderCapable` + `MessageEditor` (Telegram, Discord, Pico) can actually use placeholder message editing. The rest are reserved fields.

4. **Pico Protocol**: `pkg/channels/pico/` implements a custom PicoClaw native protocol channel that receives messages via webhook. No newline at end of file
8. **ReasoningChannelID**: All 12 channel configs have a `ReasoningChannelID` field, used to route LLM reasoning/thinking output to a designated channel. `BaseChannel` exposes this via the `WithReasoningChannelID` option and `ReasoningChannelID()` method. No newline at end of file
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section claims all 12 channel configs have ReasoningChannelID, but PicoConfig currently does not include a reasoning_channel_id field. Please either add ReasoningChannelID to PicoConfig or adjust the documentation to reflect the actual schema.

Suggested change
8. **ReasoningChannelID**: All 12 channel configs have a `ReasoningChannelID` field, used to route LLM reasoning/thinking output to a designated channel. `BaseChannel` exposes this via the `WithReasoningChannelID` option and `ReasoningChannelID()` method.
8. **ReasoningChannelID**: A `ReasoningChannelID` field, where present in a channel config, is used to route LLM reasoning/thinking output to a designated channel. `BaseChannel` exposes this via the `WithReasoningChannelID` option and `ReasoningChannelID()` method.

Copilot uses AI. Check for mistakes.
Comment on lines +783 to +787
Token string `yaml:"token" json:"token"`
AllowFrom []string `yaml:"allow_from" json:"allow_from"`
GroupTrigger GroupTriggerConfig `yaml:"group_trigger" json:"group_trigger"`
Placeholder PlaceholderConfig `yaml:"placeholder" json:"placeholder"`
ReasoningChannelID string `yaml:"reasoning_channel_id" json:"reasoning_channel_id"`
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example config struct includes yaml:"..." tags, but PicoClaw uses JSON configuration (config.json) and the real config structs use JSON/env tags. Consider removing the YAML tags or adding an explicit note that YAML isn’t supported to avoid confusion.

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README.zh.md Outdated

PicoClaw 支持多种聊天平台,使您的 Agent 能够连接到任何地方。

> **注意**: 所有 Webhook 类渠道(LINE、WeCom、飞书等)均挂载在同一个 Gateway HTTP 服务器上(`gateway.host`:`gateway.port`,默认 `127.0.0.1:18790`),无需为每个渠道单独配置端口。
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里把“飞书”等也归为 webhook 类渠道并说明由 Gateway HTTP 服务器提供,但当前 Feishu channel 实现是 WebSocket 模式(非 HTTP webhook handler),不依赖 Gateway 端口。建议从示例中移除“飞书”,或明确哪些渠道实际使用 Gateway(如 LINE/WeCom)。

Suggested change
> **注意**: 所有 Webhook 类渠道(LINE、WeCom、飞书等)均挂载在同一个 Gateway HTTP 服务器上(`gateway.host`:`gateway.port`,默认 `127.0.0.1:18790`),无需为每个渠道单独配置端口。
> **注意**: 所有基于 **HTTP Webhook** 的渠道(如 LINE、WeCom)均挂载在同一个 Gateway HTTP 服务器上(`gateway.host`:`gateway.port`,默认 `127.0.0.1:18790`),无需为每个渠道单独配置端口;像飞书当前使用的是 WebSocket 模式,并不依赖该 Gateway 端口

Copilot uses AI. Check for mistakes.
- Update config.example.json to remove dead webhook_host/webhook_port
  and unused typing/placeholder fields
- Sync all READMEs (en/zh/ja/pt-br/fr/vi) with current channel config
- Update Discord docs: mention_only → group_trigger
- Update LINE, WeCom, WeComApp channel docs
@alexhoshina alexhoshina force-pushed the fix/channel-config-cleanup branch from 5ddf1b0 to c57a9c1 Compare February 28, 2026 14:26
@alexhoshina alexhoshina changed the title fix(channels): remove dead config fields and add typing gate docs: sync READMEs, examples, and channel docs to match current config Feb 28, 2026
@alexhoshina alexhoshina marked this pull request as ready for review February 28, 2026 14:27
Copilot AI review requested due to automatic review settings February 28, 2026 14:27
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +804 to +806
> m.initChannel("matrix_native", "Matrix Native")
> } else {
> m.initChannel("matrix", "Matrix")
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example for “multiple modes (like WhatsApp Bridge vs Native)” uses matrix_native/matrix, which is inconsistent with the WhatsApp example being discussed and can mislead readers. Consider switching the sample to whatsapp_native/whatsapp (or make it a generic placeholder like <channel>_native).

Suggested change
> m.initChannel("matrix_native", "Matrix Native")
> } else {
> m.initChannel("matrix", "Matrix")
> m.initChannel("whatsapp_native", "WhatsApp Native")
> } else {
> m.initChannel("whatsapp", "WhatsApp")

Copilot uses AI. Check for mistakes.
Comment on lines +803 to +805
> m.initChannel("matrix_native", "Matrix Native")
> } else {
> m.initChannel("matrix", "Matrix")
Copy link

Copilot AI Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里说“多种模式(如 WhatsApp Bridge vs Native)”,但示例却用了 matrix_native/matrix,容易让读者误以为是 Matrix 的模式切换。建议改成 whatsapp_native/whatsapp,或用 <channel>_native 这类泛化示例。

Suggested change
> m.initChannel("matrix_native", "Matrix Native")
> } else {
> m.initChannel("matrix", "Matrix")
> m.initChannel("whatsapp_native", "WhatsApp Native")
> } else {
> m.initChannel("whatsapp", "WhatsApp")

Copilot uses AI. Check for mistakes.
Copy link

@nikolasdehor nikolasdehor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: docs: sync READMEs, examples, and channel docs to match current config

Documentation sync PR. Reviewed the key changes.

Changes Summary

  1. Removed dead config fields -- webhook_host and webhook_port removed from config.example.json and all README examples. This aligns with the current architecture where all channel webhooks are served by a shared gateway server on a single port.

  2. Discord docs update -- mention_only renamed to group_trigger. Matches current config schema.

  3. LINE webhook port -- Corrected from 18791 to 18790 (shared gateway port). Docker Compose examples updated accordingly.

  4. WeCom/WeComApp docs -- Removed per-channel webhook_host/webhook_port references, added notes about shared gateway serving.

  5. Channel implementation READMEs -- pkg/channels/README.md and README.zh.md significantly updated with current channel interface, lifecycle, and config documentation.

  6. Multi-language sync -- Changes applied consistently across en, zh, ja, pt-br, fr, and vi READMEs.

Notes

  • The README.zh.md diff is the smallest (+2/-0) -- just two new lines. The other language READMEs have more substantial changes. This asymmetry might mean zh was already more up-to-date, or some changes were missed. Worth a quick cross-check.

  • Config example now has "webhook_path": "/webhook/line" without host/port, which correctly represents the current config schema.

Looks good. Documentation maintenance like this is valuable for the project.

5. 设置回调 URL 为 `http://<your-server-ip>:<port>/webhook/wecom-app`
6. 将 CorpID, Secret, AgentID 等信息填入配置文件

注意: PicoClaw 现在使用共享的 Gateway HTTP 服务器来接收所有渠道的 webhook 回调,默认监听地址为 127.0.0.1:18790。如需从公网接收回调,请把外部域名反向代理到 Gateway(默认端口 18790)。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Copy link
Collaborator

@xiaket xiaket left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with some nits for you to consider.

@xiaket xiaket added the type: documentation Improvements or additions to documentation label Mar 1, 2026
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 1, 2026 10:59
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

| channel_access_token | string | 是 | LINE Messaging API 的 Channel Access Token |
| webhook_host | string | 是 | Webhook 监听的主机地址 (通常为 0.0.0.0) |
| webhook_port | int | 是 | Webhook 监听的端口 (默认为 18791) |
| webhook_path | string | 是 | Webhook 的路径 (默认为 /webhook/line) |
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table marks webhook_path as required, but the LINE channel falls back to the default "/webhook/line" when the field is empty. Please mark webhook_path as optional (or explicitly say it defaults to /webhook/line when omitted) to match the implementation.

Suggested change
| webhook_path | string | | Webhook 的路径 (默认为 /webhook/line) |
| webhook_path | string | | Webhook 的路径 (默认为 /webhook/line) |

Copilot uses AI. Check for mistakes.
README.vi.md Outdated
}
```

> **Lưu ý:** WeCom Bot incoming webhook endpoints are served by the shared Gateway HTTP server (mặc định 127.0.0.1:18790). Nếu bạn cần truy cập từ bên ngoài, đặt reverse proxy hoặc mở port Gateway phù hợp.
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This Vietnamese README note mixes English and Vietnamese (“WeCom Bot incoming webhook endpoints are served…”). Please translate that sentence fully to Vietnamese (or keep it fully in English) so the localized README stays consistent and readable.

Suggested change
> **Lưu ý:** WeCom Bot incoming webhook endpoints are served by the shared Gateway HTTP server (mặc định 127.0.0.1:18790). Nếu bạn cần truy cập từ bên ngoài, đặt reverse proxy hoặc mở port Gateway phù hợp.
> **Lưu ý:** Các endpoint webhook nhận vào của WeCom Bot được phục vụ bởi máy chủ Gateway HTTP dùng chung (mặc định 127.0.0.1:18790). Nếu bạn cần truy cập từ bên ngoài, hãy cấu hình reverse proxy hoặc mở cổng Gateway tương ứng.

Copilot uses AI. Check for mistakes.
- Remove Feishu from webhook channel list in README.md and README.zh.md;
  add clarifying note that Feishu uses WebSocket/SDK mode instead
- Replace Chinese text in README.vi.md header with Vietnamese equivalent
- Translate mixed-language WeCom note in README.vi.md to full Vietnamese
- Mark webhook_path as optional (否) in docs/channels/line/README.zh.md
- Remove incorrect yaml struct tags from new-channel example in
  pkg/channels/README.md and README.zh.md (config uses json tags only)
- Fix multi-mode initChannel example to use whatsapp/whatsapp_native
  (matching the "WhatsApp Bridge vs Native" comment) instead of matrix
- Correct ReasoningChannelID description: list the 12 channels that
  have the field and note that PicoConfig does not expose it
@alexhoshina alexhoshina merged commit 3926585 into sipeed:main Mar 1, 2026
2 checks passed
vvr3ddy added a commit to vvr3ddy/picoclaw that referenced this pull request Mar 1, 2026
Changes from upstream:
- fix(channel): config cleanup and regex precompile (sipeed#911, sipeed#916)
- fix(github_copilot): improve error handling (sipeed#919)
- fix(wecom): context leaks and data race fixes (sipeed#914, sipeed#918)
- fix(tools): HTTP client caching and response body cleanup (sipeed#940)
- feat(tui): Add configurable Launcher and Gateway process management (sipeed#909)
- feat(migrate): Update migration system with openclaw support (sipeed#910)
- fix(skills): Use registry-backed search for skills discovery (sipeed#929)
- build: Add armv6 support to goreleaser (sipeed#905)
- docs: Sync READMEs and channel documentation
liangzhang-keepmoving pushed a commit to liangzhang-keepmoving/picoclaw that referenced this pull request Mar 2, 2026
- Remove Feishu from webhook channel list in README.md and README.zh.md;
  add clarifying note that Feishu uses WebSocket/SDK mode instead
- Replace Chinese text in README.vi.md header with Vietnamese equivalent
- Translate mixed-language WeCom note in README.vi.md to full Vietnamese
- Mark webhook_path as optional (否) in docs/channels/line/README.zh.md
- Remove incorrect yaml struct tags from new-channel example in
  pkg/channels/README.md and README.zh.md (config uses json tags only)
- Fix multi-mode initChannel example to use whatsapp/whatsapp_native
  (matching the "WhatsApp Bridge vs Native" comment) instead of matrix
- Correct ReasoningChannelID description: list the 12 channels that
  have the field and note that PicoConfig does not expose it
hyperwd pushed a commit to hyperwd/picoclaw that referenced this pull request Mar 5, 2026
- Remove Feishu from webhook channel list in README.md and README.zh.md;
  add clarifying note that Feishu uses WebSocket/SDK mode instead
- Replace Chinese text in README.vi.md header with Vietnamese equivalent
- Translate mixed-language WeCom note in README.vi.md to full Vietnamese
- Mark webhook_path as optional (否) in docs/channels/line/README.zh.md
- Remove incorrect yaml struct tags from new-channel example in
  pkg/channels/README.md and README.zh.md (config uses json tags only)
- Fix multi-mode initChannel example to use whatsapp/whatsapp_native
  (matching the "WhatsApp Bridge vs Native" comment) instead of matrix
- Correct ReasoningChannelID description: list the 12 channels that
  have the field and note that PicoConfig does not expose it
hyperwd pushed a commit to hyperwd/picoclaw that referenced this pull request Mar 5, 2026
…anup

docs: sync READMEs, examples, and channel docs to match current config
Pluckypan pushed a commit to Pluckypan/picoclaw that referenced this pull request Mar 6, 2026
- Remove Feishu from webhook channel list in README.md and README.zh.md;
  add clarifying note that Feishu uses WebSocket/SDK mode instead
- Replace Chinese text in README.vi.md header with Vietnamese equivalent
- Translate mixed-language WeCom note in README.vi.md to full Vietnamese
- Mark webhook_path as optional (否) in docs/channels/line/README.zh.md
- Remove incorrect yaml struct tags from new-channel example in
  pkg/channels/README.md and README.zh.md (config uses json tags only)
- Fix multi-mode initChannel example to use whatsapp/whatsapp_native
  (matching the "WhatsApp Bridge vs Native" comment) instead of matrix
- Correct ReasoningChannelID description: list the 12 channels that
  have the field and note that PicoConfig does not expose it
Pluckypan pushed a commit to Pluckypan/picoclaw that referenced this pull request Mar 6, 2026
…anup

docs: sync READMEs, examples, and channel docs to match current config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants