Commit Graph
196 Commits
Author SHA1 Message Date
chenhg5andClaude c4eade463c fix(feishu): validate URLs before creating hyperlinks
Add URL validation for Feishu post hyperlinks to prevent rejection of non-HTTP(S) URLs. Skip invalid links during markdown parsing.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-09 15:21:35 +08:00
cg33 7425bfbf67 Merge pull request #37 from kevinWangSheng/fix/permission-idle-timer
fix(engine): stop idle timer during permission wait
2026-03-09 09:24:01 +08:00
cg33 b93579ef3f Merge pull request #38 from kevinWangSheng/fix/feishu-nil-openid
fix(feishu): add nil checks for SenderId.OpenId and msg.Content
2026-03-09 09:23:16 +08:00
cg33 8816cdc7b3 Merge pull request #39 from kevinWangSheng/fix/cron-unmarshal-error
fix(cron): log json.Unmarshal error instead of ignoring it
2026-03-09 09:22:50 +08:00
kevinWangSheng b3ddd1a0f5 fix(cron): log json.Unmarshal error instead of ignoring it
When the cron jobs file is corrupted, json.Unmarshal fails silently
and all scheduled tasks are lost without any log output. Add error
logging so the issue is visible in logs.
2026-03-08 17:30:14 -07:00
kevinWangSheng 0158f44eb1 fix(feishu): add nil checks for SenderId.OpenId and msg.Content
Prevent nil pointer panics when Feishu sends messages where
sender.SenderId.OpenId or msg.Content is nil.
2026-03-08 17:29:46 -07:00
kevinWangSheng 4f74588429 fix(engine): stop idle timer during permission wait
The idle timer in processInteractiveEvents kept running while
the event loop was blocked waiting for a user permission response.
If the user took longer than eventIdleTimeout to respond, the timer
would fire and kill the session on the next loop iteration.

Stop the idle timer before waiting on pending.Resolved and restart
it after the permission is resolved.
2026-03-08 17:29:09 -07:00
chenhg5andClaude f87e1563e1 docs(readme): update Telegram screenshot extension to JPG
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 23:13:23 +08:00
chenhg5andClaude 358a9c851d docs: update screenshots and descriptions for messaging platforms
Updated README files to showcase Lark, Telegram, and Wechat screenshots consistently across languages. Replaced Discord screenshot with Telegram and improved image layout descriptions.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 23:10:01 +08:00
chenhg5andClaude 8a817911d6 docs: update README content and add contributors section
Update project description to focus on general AI agents rather than just coding assistants. Added contributors section with dynamic contributor image. Removed planned Crush agent (now merged with OpenCode) and made minor text improvements.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 23:01:31 +08:00
chenhg5andClaude Opus 4.6 35cd718369 build: release v1.2.0 — stable release with QQ Bot, iFlow agent, and more
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 22:44:45 +08:00
chenhg5andClaude c9127ae652 feat(dingtalk): preprocess markdown content for reply messages
Add preprocessDingTalkMarkdown function to handle DingTalk-specific markdown rendering quirks:
- Convert leading spaces to non-breaking spaces
- Ensure proper line breaks between non-empty lines
- Preserve code blocks formatting

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 22:26:25 +08:00
chenhg5andClaude 0b308fef3a feat(relay): add persistence and improve binding messages
Add data persistence to RelayManager with JSON storage.
Remove unused MsgRelayBindOK message.
Improve relay binding success messages.
Update RelayManager constructor to accept data directory path.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 21:51:04 +08:00
chenhg5andClaude 7d722d65a6 refactor(cmdCompress): improve compression command handling
Move compression logic to async goroutine with proper state handling.
Add event processing with timeout and cleanup.
Add i18n support for compression done message.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 21:34:53 +08:00
chenhg5andClaude 754c65af32 feat(i18n): add new message keys and improve command formatting
Add new i18n message keys for various command responses (switch, timeout, relay bindings).
Improve formatting of command list output with better descriptions and shell command display.
Adjust Feishu platform message type detection threshold for posts.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 21:17:25 +08:00
cg33 821bcdc8bf feat(platform): add official QQ Bot Platform integration (#29)
feat(platform): add official QQ Bot Platform integration
2026-03-08 19:36:16 +08:00
xiaoheicat b89aadb9c2 Merge upstream/main and resolve conflicts
Merge upstream changes (iFlow agent, multi-bot relay, QQ Beta tag)
with our QQ Bot Official Platform additions. Resolved conflicts in
README.md, README.zh-CN.md, and cmd/cc-connect/main.go by combining
both sets of changes.
2026-03-08 13:25:30 +08:00
xiaoheicat 53043e84fd fix(qqbot): address code review feedback and add image/doc support
Code review fixes:
1. Fix msgSeqMap memory leak: replace unbounded sync.Map with TTL-based
   map that evicts entries older than 5 minutes
2. Fix @mention not stripped: add stripAtMention() to parse and remove
   the <@!botid> prefix from group message content
3. Filter empty messages: skip handler call when content is empty after
   stripping (e.g. bare @bot with no text)
4. Fix reconnect race condition: add atomic.Bool guard to prevent
   concurrent reconnectLoop goroutines
5. Add shard field to Identify payload per QQ official docs
6. Cap reconnect attempts at 30 to avoid infinite retry on config errors

New features:
7. Support receiving image attachments from group and C2C messages,
   downloaded into core.ImageAttachment for agent consumption
8. Add docs/qqbot.md setup guide (bilingual EN/ZH)
9. Update README.md and README.zh-CN.md with QQ Bot platform entries
   in support matrix, setup guide table, config examples, and project
   structure
2026-03-08 13:09:48 +08:00
chenhg5andClaude Opus 4.6 10b89a97ed docs: add Multi-Bot Relay feature and beta labels to README
- Add "Multi-Bot Relay" to core highlights in both EN/CN README
- Mark QQ platform as Beta in support matrix
- Add Multi-Bot Relay feature to support matrix
- Add dedicated "Multi-Bot Relay" section with usage examples:
  - Group chat binding via /bind command
  - Bot-to-bot communication via cc-connect relay
  - Cross-platform collaboration workflows

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 10:40:19 +08:00
chenhg5andClaude c70d3eed7e feat(iflow): update CLI flags and preserve quiet state
Updated iFlow CLI integration flags from `-p` to `-i` for interactive mode.
Modified quiet mode handling to preserve state across session stops.
Added shell command support in i18n messages.
Fixed empty tool ID handling in iFlow session.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 09:30:28 +08:00
chenhg5andClaude b14d34d7b2 feat(engine): add shell command execution capability
Add new `/shell` command (with aliases `/sh`, `/exec`, `/run`) to execute shell commands and return output. Includes timeout handling, working directory detection, output trimming, and error handling. Also adds command documentation in all supported languages.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 09:09:23 +08:00
cg33 f265e9e6cd Merge pull request #30 from marxoffice/main
feat(telegram): add bot command menu registration
2026-03-08 08:49:12 +08:00
cg33 7ceb4a7dbf Merge pull request #26 from xinyuan0801/codex/add-iflow-cli-agent-support
feat: add iFlow CLI agent support
2026-03-08 08:40:03 +08:00
Rayquaza 686ee0463c update(i18n): arg help info for /quiet 2026-03-08 01:27:12 +08:00
Rayquaza d4469bfafd Merge branch 'chenhg5:main' into main 2026-03-08 01:19:50 +08:00
Rayquaza 4e5d760bd2 feat(telegram): add bot command menu registration
- add BotCommandInfo and CommandRegistrar interface for platform abstraction
- implement GetAllCommands to collect builtin/custom commands and skills
- add i18n descriptions for all 30 builtin commands (en/zh/zh-TW/ja/es)
- implement RegisterCommands for Telegram setMyCommands API integration
2026-03-08 01:12:57 +08:00
cg33 82abdc0990 Merge pull request #19 from kevinWangSheng/fix/quiet-global-scope
fix: /quiet 改为全局作用域
2026-03-07 23:12:19 +08:00
xiaoheicat f567b90dd1 feat(platform): add official QQ Bot Platform integration
Add new `qqbot` platform type using the official QQ Bot API v2
(bot.q.qq.com), coexisting with the existing `qq` (OneBot v11) platform.

- OAuth2 token management with auto-refresh
- WebSocket gateway with heartbeat, reconnection, and resume
- GROUP_AT_MESSAGE_CREATE and C2C_MESSAGE_CREATE event handling
- REST API v2 message sending with msg_seq tracking
- No new dependencies (reuses gorilla/websocket)
2026-03-07 21:13:24 +08:00
chenhg5andClaude Opus 4.6 1e61269629 build: release v1.2.0-beta.7
- Multi-bot relay binding support
- System-level systemd daemon mode
- Interactive command buttons
- Exec commands support
- Configurable idle timeout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 21:07:22 +08:00
chenhg5andClaude Opus 4.6 952a0e5d24 feat(relay): support multi-bot binding in group chats
- Add AddToBind() method to incrementally add projects to binding
- Add RemoveFromBind() method to remove specific project from binding
- Update /bind command to support multiple projects:
  - /bind <project> - add project to binding
  - /bind -<project> - remove specific project
  - /bind remove - clear all bindings
- Add debug logging for telegram group message filtering

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:49:23 +08:00
chenhg5andClaude Opus 4.6 34c1b7a0cc feat(daemon): support system-level systemd and improve error handling
- Add support for system-level systemd (/etc/systemd/system/) when running as root
- Add requireInstalled check before start/stop/restart operations
- Improve systemd detection and error messages for WSL2, containers, SSH
- Add isWSL2() helper for better platform detection
- Update daemon help text to clarify Linux root vs non-root behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:48:23 +08:00
xinyuan0801 e623b0ebe8 build: restore go directive to 1.24.2 2026-03-07 14:19:07 +08:00
xinyuan0801 64df463e3b iflow: stabilize interactive tool-call turns 2026-03-07 14:16:33 +08:00
chenhg5andClaude 4837dec436 feat(cli): add config-example command and embed config template
Add new 'config-example' command that prints annotated config template.
Embed config.example.toml file using go:embed directive.
Improve CLI usage output formatting and documentation.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 13:49:19 +08:00
xinyuan0801 74b88bc352 feat: add iFlow CLI agent support 2026-03-07 10:26:44 +08:00
chenhg5andClaude f8e5e7b828 fix(streaming): clean stale previews when degraded
Add logic to delete stale preview messages when stream preview is degraded.
Implement PreviewCleaner interface for Telegram platform and add test coverage.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 09:02:19 +08:00
chenhg5andClaude fe3306f385 feat(codex): patch session source to make CLI visible
Add patchSessionSource function to rewrite session_meta lines in Codex JSONL transcripts, changing source from "exec" to "cli" and originator to "codex_cli_rs" for CLI visibility. Includes tests for patching behavior and idempotency.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 08:46:25 +08:00
chenhg5andClaude 0179d098ce feat(commands): add interactive buttons for lang/model/mode commands
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 08:36:30 +08:00
chenhg5andClaude 8f630a0538 feat(commands): add support for exec commands with shell execution
Add ability to define custom slash commands that execute shell commands directly:
- Extend CommandConfig with Exec and WorkDir fields
- Add cmdCommandsAddExec handler for exec commands
- Implement executeShellCommand with timeout and output handling
- Add work_dir support for exec commands
- Update documentation and i18n messages
- Add tests and error handling

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 07:55:24 +08:00
chenhg5andClaude 796526df50 feat(engine): add configurable agent idle timeout
Add support for configuring agent idle timeout duration via config file
(idle_timeout_mins). Defaults to 2 hours (changed from previous fixed 30 mins).
Timeout can be disabled by setting to 0.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 00:21:40 +08:00
chenhg5andClaude 7c36fd1d49 chore: remove unused micro.tar.gz file
generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 00:08:18 +08:00
chenhg5andClaude 0c119d8682 refactor(engine): increase event idle timeout to 30 minutes
Adjust eventIdleTimeout constant from 5 to 30 minutes to better handle agent response scenarios. Also includes minor code formatting cleanup in Engine struct.

generated by llmgit

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 00:08:00 +08:00
kevinWangShengandClaude Opus 4.6 f97bf3dcc1 fix: /quiet 支持 per-session 和 global 两种模式
- /quiet:切换当前会话的静默模式,/new 后重置
- /quiet global:切换全局静默模式,跨会话生效,/new 不影响
- 事件处理时 global || session 任一为 true 即静默

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 06:36:51 -08:00
kevinWangShengandClaude Opus 4.6 c7d985edd9 fix: /quiet 改为全局作用域,不再跟随 session 重置
之前 quiet 绑定在 interactiveState 上,/new 或 /switch 会清掉 state 导致
quiet 被重置。用户开了静默模式换个 session 又要重新开一次,体验不好。

改为挂在 Engine 上,全局生效,/new /switch 不影响。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 06:35:59 -08:00
chenhg5 b8c0eed437 build: release v1.2.0-beta.6 — bot relay, session search, streaming preview control, voice qwen 2026-03-06 22:18:28 +08:00
chenhg5 ddff00577b Merge branch 'main_bak' 2026-03-06 21:32:27 +08:00
cg33 d47ff47987 Merge pull request #24 from koperjian/feature/speechsupportqwen
Feature/speechsupportqwen
2026-03-06 21:27:31 +08:00
chenhg5andClaude Opus 4.6 896d8db6ab feat(feishu): add three-tier rendering strategy for markdown messages
- Code blocks/tables → card (schema 2.0 markdown)
- Many \n\n paragraphs (≥4, e.g. help, status) → post rich-text (preserves blank lines)
- Other markdown → post md tag (best native rendering)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:40:16 +08:00
chenhg5andClaude Opus 4.6 54ea246f60 feat(i18n): add translation for session switch success message
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:34:13 +08:00
chenhg5andClaude Opus 4.6 16b028b098 feat(ui): improve status display and fix Feishu message formatting
- Add quiet mode status to /status command with i18n support
- Fix Feishu help command line breaks (use buildPostJSON instead of md tag)
- Improve tool message formatting (code block for long content)
- Strip XML tags from session summary display

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:31:37 +08:00