Commit graph

10 commits

Author SHA1 Message Date
xmanrui
bd9c58cf9e fix(feishu): stabilize post-merge card workflows 2026-08-24 18:49:32 +08:00
Zaakir
dcd7cd64d8 feat(i18n): add English support for host-side chat messages
Wrap all user-facing chat text in src/channels with a host-side t()
translator (Chinese is the identity default, so untranslated text is
always sent verbatim in Chinese). English is selected via the host
plugin config `language: en` or the DSH_IM_LANGUAGE environment
variable, and the settings UI keeps following the DSH web locale.

- add src/channels/shared/i18n.mjs with setImHostLanguage/t() and a
  Chinese-key -> English dictionary split by area (shared + channels)
- complete the English dictionary for every t() key in src/channels,
  including the feishu channel (welcome/help, repair flow, interactive
  cards, watch flow) and the shared command/approval/stream text
- wrap previously untranslated chat-facing strings in feishu bridge,
  feishu runtime, editable-message-stream, harness-client,
  connection-test and image-prompt
- dedupe dictionary entries that existed in multiple channel files and
  canonicalize conflicting translations into the shared dictionaries
- extend the i18n unit test to decode string-literal escapes so keys
  containing \n are checked correctly
- document the language switch in README.md, README.en.md and
  CHANGELOG.md, and rebuild lib/index.js

Added English support for bot chat messages across all nine IM
channels and AI Office without changing any Chinese output.
2026-08-24 00:32:30 +05:00
xmanrui
f7d2fe7047 fix(feishu): honor proxy settings for REST and WebSocket 2026-08-22 14:45:25 +08:00
xmanrui
9950261a49 feat(feishu): add configurable group response mode 2026-08-22 01:26:29 +08:00
xmanrui
c1a3b0cf97 fix(feishu): add one-click card callback repair 2026-08-21 13:43:02 +08:00
liuwenbo00
6366404c42 feat(feishu): interactive card menus and session/workspace list cards
- /m (or /menu) opens a card menu; /sessionlist and /workspacelist render
  cards with bind/switch buttons; number replies stay usable as a fallback
  when the app does not subscribe card.action.trigger.
- card.action.trigger callbacks validate the operator's open_id against the
  allowed senders: group members outside the allowlist can never drive
  binding, workspace switches or other card actions.
- Session-list pagination uses page numbers everywhere (buttons carry
  sessions:<page>), fixing the previous double page-size scaling that
  skipped pages past 20 sessions.
- Bind/workspace failures map to safe user-facing messages instead of raw
  error details.
- Apps registered after this change subscribe card.action.trigger during
  the scan flow.
2026-08-21 10:03:23 +08:00
xmanrui
3ac70a7c65 fix: remember direct recipients for connection tests 2026-08-19 11:24:50 +08:00
xmanrui
fb61c4235f feat: send test messages during bot connection checks 2026-08-19 03:52:52 +08:00
xmanrui
3e7e1dcdd7 fix: support Harness interactions in DingTalk and Feishu 2026-08-18 13:03:15 +08:00
xmanrui
bd469f58f8 Internalize all IM channel implementations 2026-08-15 15:40:53 +08:00