Commit graph

233 commits

Author SHA1 Message Date
xmanrui
068cf57259 feat: add private chat batch input commands 2026-08-25 02:39:31 +08:00
xmanrui
f6cc1cae30 chore: release v2.2.1 2026-08-25 01:17:08 +08:00
xmanrui
2cc3a42d45 fix(whatsapp): respond to linked-account group messages 2026-08-25 01:12:55 +08:00
xmanrui
9657107a21 chore: release v2.2.0 2026-08-25 00:52:54 +08:00
xmanrui
d999cb511f fix(client): recover loopback RPC 403 via localhost 2026-08-25 00:50:27 +08:00
xmanrui
9e39333ff6 feat: add reasoning effort commands 2026-08-25 00:41:44 +08:00
xmanrui
36cbbe48e7 Merge pull request #48 from luochen211/fix/weixin-long-reply-chunking
fix: chunk long WeChat replies for iLink
2026-08-24 21:53:51 +08:00
cuidong233
5e07137c44 fix(weixin): align long-reply limits across runtime 2026-08-24 19:29:02 +08:00
xmanrui
a1427a8db6 Merge pull request #47 from luochen211/fix/telegram-proxy-diagnostics
fix: explain Telegram proxy connection failures
2026-08-24 19:02:09 +08:00
xmanrui
60d19eb45d chore: release v2.1.0 2026-08-24 18:53:59 +08:00
xmanrui
bd9c58cf9e fix(feishu): stabilize post-merge card workflows 2026-08-24 18:49:32 +08:00
xmanrui
9d1dc71794 fix(feishu): harden interactive card flows 2026-08-24 18:49:32 +08:00
xiemanR
5b33249599
Merge pull request #35 from C3H3-AI/feishu-card-system
feat(feishu): redesign interactive menu with dropdowns, settings panel, and steer input
2026-08-24 18:49:16 +08:00
C3H3-AI
1ee03254aa merge: resolve v2.0.1 lib conflict by keeping our build 2026-08-24 12:35:20 +08:00
cuidong233
868372fb04 fix(weixin): chunk long replies for iLink limits 2026-08-24 12:20:07 +08:00
cuidong233
860faad380 fix(telegram): explain proxy-related connection failures 2026-08-24 12:17:54 +08:00
xmanrui
dea9a8f2d1 chore: release v2.0.1 2026-08-24 11:46:38 +08:00
xmanrui
596848ffcb fix: isolate channel activation failures 2026-08-24 11:43:35 +08:00
xmanrui
4989491dc8 fix: wrap localized card actions 2026-08-24 11:26:12 +08:00
C3H3-AI
bcda00d7e7 chore: add menu card screenshot for PR review 2026-08-24 09:56:29 +08:00
C3H3-AI
45f55f73eb fix(feishu): streamline menu card layout and update help card
- Move preset/model/archive controls from settings card to main menu
- Arrange 4 dropdowns in 2x2 grid with external icons
- Align steer and archive side by side
- Replace #showSettingsCard with #sendMenuCard for preset/model/archive updates
- Add #sendMenuCard after 'new' button action for consistency
- Update help card to reflect current menu layout (12 items)
- Clean up duplicate sessionlist entries in menuHelpText
- Add missing English dictionary entries
2026-08-24 09:46:32 +08:00
C3H3-AI
044ab74c28 merge: integrate upstream v2.0.0 (files, images, i18n) into feishu-card-system
- Resolve conflicts in feishu-cards.mjs / bridge.mjs / control-command.mjs / lib
- Keep card-system enhancements: menuCard/settingsCard/presetCard/modelCard, /m newCard, card form submit, model select
- Adopt upstream i18n t() wrapping + file/image delivery + inbound files
- Add missing English dictionary entries for new feishu card strings
- Rebuild lib (package now 2.0.0)
2026-08-24 07:22:50 +08:00
xmanrui
e577e66a93 chore: release v2.0.0 2026-08-24 04:12:18 +08:00
xmanrui
d4b8666495 fix: harden host language switching 2026-08-24 03:55:55 +08:00
xmanrui
3741dd8fd9 Merge pull request #46 from zaakirio/feat/host-i18n-en
feat(i18n): add English support for host-side chat messages
2026-08-24 03:51:43 +08:00
xmanrui
1f2c7f1310 docs: record native channel merge validation 2026-08-24 03:49:33 +08:00
xmanrui
a5c516a61c merge: add native Telegram rich delivery
# Conflicts:
#	lib/index.js
2026-08-24 03:44:19 +08:00
xmanrui
37992b148a merge: add native Discord threads 2026-08-24 03:43:54 +08:00
xmanrui
fde088e381 fix(delivery): surface failed semantic finals 2026-08-24 03:41:53 +08:00
xmanrui
19480a26fb docs(discord): document native thread requirements 2026-08-24 03:39:05 +08:00
xmanrui
d7f4cf03ab feat(telegram): deliver native rich messages 2026-08-24 03:33:30 +08:00
xmanrui
dd66f5cbe1 feat(delivery): preserve text format intent 2026-08-24 03:32:33 +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
5b3db16097 fix(discord): close thread recovery races 2026-08-24 03:32:06 +08:00
xmanrui
2609ae20e8 fix(discord): request managed thread message content 2026-08-24 03:32:01 +08:00
xmanrui
47cf028914 feat(discord): route guild conversations into threads 2026-08-24 03:31:58 +08:00
xmanrui
73f262711b test(telegram): lock plain delivery baseline 2026-08-24 03:31:43 +08:00
xmanrui
54496f9ba4 test(discord): lock channel addressing baseline 2026-08-24 03:31:41 +08:00
xmanrui
3ff8c2a519 chore: release v1.5.0 2026-08-24 03:28:19 +08:00
xmanrui
3ec5f1eca7 feat: add native image delivery across channels 2026-08-24 03:25:38 +08:00
xmanrui
dbc0a4b730 update md 2026-08-24 02:18:43 +08:00
xmanrui
6fcb12c90f update md 2026-08-24 02:18:24 +08:00
xmanrui
1d7f6a5a0a chore: release v1.4.0 2026-08-24 01:22:11 +08:00
xiemanR
01f0f3aaef
Merge pull request #45 from xmanrui/codex/fix-pr44-qq-delivery
fix(qq): prevent turn feed message spam
2026-08-24 00:48:57 +08:00
xmanrui
ade50210f0 fix(qq): prevent turn feed message spam 2026-08-24 00:48:21 +08:00
xiemanR
6ea048b277
Merge pull request #44 from ferocknew/feat/qqbot-turn-feed
Feat/qqbot turn feed
2026-08-24 00:37:48 +08:00
jonah.fu
81b9535ed5 fix(qq): drop per-tool notices, keep errors and interim text
Real agent turns invoke tools constantly; one 'Tool call X' message
per call flooded the chat with near-zero information. Tool frames now
only flush the pending interim explanation text; successful tool
results stay silent, and failures still push the tool name with the
error detail.
2026-08-23 23:00:38 +08:00
jonah.fu
46acf5a425 Merge upstream/main: inbound files across channels + v1.3.0
Resolve qq-bridge.mjs by keeping the inbound-file support (hasFiles,
files passthrough) and dropping the upstream stream session, which
this branch replaces with the discrete turn-feed notices.
2026-08-23 22:46:44 +08:00
xmanrui
26417d3666 chore: release v1.3.0 2026-08-23 22:42:18 +08:00
jonah.fu
e1bc9dd0d0 feat(qq): stream the full turn feed as discrete messages
Show what the agent is actually doing during a turn, the way Claude
Code does: interim explanation text, every Tool call, and the error
detail when a tool fails, each as its own pushed message before the
final markdown answer.

- HarnessReplyTracker.consume now returns every frame of a polling
  batch in order (same-batch text frames collapse to the latest)
  instead of dropping all but the last event, which silently ate
  tool-call frames that shared a batch with their result
- tool frames carry callId; status frames carry the correlated
  toolName and a flattened error text parsed from the tool/result
  error payload (message, or name: code)
- the QQ bridge holds interim step text until the next tool call
  (or the end of the turn) pushes it, emits 'Tool call <name>' per
  call, emits 'Tool call <name>\nError: <reason>' for failures, and
  skips re-sending interim text that already equals the final answer

Other channels keep their existing behaviour: the status frame still
reads '正在整理结果…' and they ignore the new optional fields.
2026-08-23 22:39:29 +08:00