build(release): v1.4.0 stable

Closes the v1.4.0 cycle (beta.1 → beta.2 → beta.3) + 3 post-beta cherry-picks:
  - #1436 Send goroutine nil-pointer race (process crash)
  - #1321 Feishu recall-probe quota throttle
  - drainPendingMessages alignment with #1436

15 platforms, 30+ fixes, agent option parsing unified via #1297.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dev-claudecode
2026-06-28 21:11:03 +08:00
parent 87d15205ef
commit 0938982a7e
6 changed files with 317 additions and 26 deletions

View File

@@ -1,5 +1,34 @@
# Changelog
## v1.4.0 (2026-06-28)
Stable release of the v1.4.0 series. **Two new platforms join the family** (Cisco Webex, Matrix with E2EE), broader configurability across agents and platforms, Korean i18n, and a long list of fixes — including last-minute critical fixes for a `Send` goroutine race (#1436), a Feishu recall-probe quota burn (#1321), and a `run_as_user` EACCES regression (#1433).
This stable rolls up everything from v1.4.0-beta.1 → beta.2 → beta.3 plus the 3 post-beta.3 cherry-picks (#1436, #1321 and a `drainPendingMessages` follow-up alignment).
See `changelogs/v1.4.0.md` for the full themed summary with credits.
### 🚨 Critical fixes shipped late in the cycle
- **core Send-goroutine nil-pointer panic race** (#1436, @gotang; follow-up alignment of the third call site in `drainPendingMessages`): would crash the whole cc-connect process and drop every platform connection when an agent process exited just before a `Send` goroutine was scheduled. 100% reproducible in production.
- **Feishu recall-probe quota burn** (#1321, @qvictl): `MessageRecallDetector` fallback path was polling every 2s, burning ~1.3M Feishu OpenAPI calls/month per stuck session and exhausting the 1M free quota. Probe interval now 1 minute with per-message dedup + in-flight guard.
- **claudecode `run_as_user` EACCES regression** (#1433, @chenhg5; reported by @vuyiv #1429): chmod `0o644` on per-spawn system-prompt temp file so non-root child processes can read it. Fixes a regression introduced by v1.3.4 (#1376) — `run_as_user` users on beta.1/beta.2 were 100% blocked at agent startup.
### v1.4.0 cycle highlights
- **Cisco Webex** and **Matrix (with E2EE)** as new first-class platforms (#1402, #834).
- **agent option parsing refactor**: centralize cmd/env option parsing into core with unified `cmd` field across all agent adapters (#1297).
- **Slack streaming preview + aggregated turn card** (#1333).
- **Feishu after_click card replacement for `cmd:` actions** (#1299).
- **Codex custom `system_prompt` / `append_system_prompt` config** (#1345); codex `model_catalog_json` highest-priority source (#1074).
- **Zhipu GLM provider presets** for `z.ai` and `bigmodel` CN endpoint (#1412).
- **Korean (ko) i18n** for the Web admin UI (#1343), plus `nav.cron` translations for ko/ja/es.
- **`plugin_dir` for Claude Code plugins** (#1325), `cc-connect send --cwd` workdir support (#1380), `max_attachment_size_mb` (#1392), `CC_LOG_MAX_BACKUPS` env var (#1260), configurable `/history` truncation (#1291).
- 30+ fixes across feishu, slack, dingtalk, claudecode, codex, core engine, runas, web admin and i18n. Full list in `changelogs/v1.4.0.md`.
### Upgrade notes
- `cli_path` config field is deprecated in favour of unified `cmd` (#1297). Existing configs continue to work; a deprecation warning is logged. Migrate when convenient.
- `imageBatchWindow` default for Feishu changed from 150 ms → 500 ms. Override in config if you preferred the older value.
- `MessageRecallDetector` fallback probe interval changed from 2 s → 60 s. If you relied on the old aggressive polling for custom integrations, the new behaviour is deduped and gated.
## v1.4.0-beta.3 (2026-06-28)
Rolling beta with 3 additional commits on top of beta.2: one critical regression fix + two low-risk additions. Two additional critical fixes were cherry-picked on top of beta.3 ahead of the v1.4.0 stable cut.

View File

@@ -3,7 +3,7 @@ MODULE := github.com/chenhg5/cc-connect
CMD := ./cmd/cc-connect
DIST := dist
VERSION := v1.4.0-beta.3
VERSION := v1.4.0
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "none")
BUILD_TIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')

View File

@@ -161,25 +161,28 @@ MiniMax-M3 pushes the frontier of coding and agentic AI, with a 1M-token context
</p>
## 🆕 Whats New in v1.4.0-beta.1
## 🆕 What's New in v1.4.0
First beta of the v1.4.0 series — 22 PRs since v1.3.4, with **two new platforms** joining the family. Also rolls in the v1.3.4 Windows-cmdline hotfix via PR #1378.
Stable release of the v1.4.0 series — **two new platforms join the family** (Cisco Webex, Matrix with E2EE), broader configurability across agents and platforms, Korean i18n, and a long list of fixes including three critical post-beta cherry-picks for a Send-goroutine race, a Feishu recall-probe quota burn, and a `run_as_user` EACCES regression.
- **New platforms** — **Cisco Webex** first-class adapter (#1402, @bryantbarzola); **Matrix with E2EE** end-to-end-encrypted room support (#834, @rablwupei). cc-connect now ships 15 chat platforms.
- 🚨 **Critical fixes shipped late** — Send-goroutine nil-pointer race that crashed the whole cc-connect process (#1436, @gotang); Feishu `MessageRecallDetector` burning ~1.3M OpenAPI calls/month per stuck session (#1321, @qvictl); `run_as_user` EACCES regression introduced by v1.3.4 (#1433, @chenhg5; reported by @vuyiv #1429).
- **New platforms** — **Cisco Webex** first-class adapter (#1402, @bryantbarzola); **Matrix with E2EE** end-to-end-encrypted room support (#834). cc-connect now ships 15 chat platforms.
- **Agent option parsing refactor** — unified `cmd` field across all agent adapters; `cli_path` is deprecated (still works with a warning) (#1297, @happyTonakai).
- **Slack streaming + aggregated turn card** — live streaming preview while the agent is thinking, collapses into a single turn card on completion (#1333).
- **Feishu rich card upgrades** — `after_click` card replacement for `cmd:` action handlers (#1299); batch images dispatched as one multi-image message so the first image of N is no longer dropped (#1408 carrying #1395).
- **Codex per-config prompts** — `system_prompt` / `append_system_prompt` now honoured for the codex agent, matching claudecode (#1345).
- **Korean (ko) i18n** — Web admin UI now ships Korean alongside zh / en / ja (#1343).
- **Feishu rich card upgrades** — `after_click` card replacement for `cmd:` action handlers (#1299); batch images dispatched as one multi-image message (default coalesce window now 500 ms) so the first image of N is no longer dropped (#1408 carrying #1395).
- **Codex per-config prompts + `model_catalog_json`** — `system_prompt` / `append_system_prompt` now honoured for the codex agent (#1345); Codex's own `model_catalog_json` is preferred as highest-priority model source (#1074, @happyTonakai).
- **Zhipu GLM provider presets** — `z.ai` and `bigmodel` (CN) endpoint entries added (#1412, @clingnet).
- **Korean (ko) i18n** — Web admin UI now ships Korean alongside zh / en / ja (#1343); `nav.cron` also localised for ko/ja/es.
- **Claude Code plugins via `plugin_dir`** — load Claude Code plugins by pointing at a directory (#1325).
- **Operational knobs** — `max_attachment_size_mb` for `cc-connect send` outbound size cap (#1392); `CC_LOG_MAX_BACKUPS` env var for daemon log rotation (#1260).
- **Operational knobs** — `cc-connect send --cwd` workdir support (#1380, @MMMarcinho); `max_attachment_size_mb` for `cc-connect send` outbound size cap (#1392, @rablwupei); `CC_LOG_MAX_BACKUPS` env var for daemon log rotation (#1260); configurable `/history` truncation (#1291, @AaronZ345).
- **acp graceful `/stop`** — new `AgentSessionCanceller` interface lets ACP agents stop cleanly (#1275).
- **Reliability fixes** — workspace model persistence (#1372); core queued messages drain strictly FIFO so older queued items are no longer dropped as stale (#1286); workspace binding + run_as_user fixes (#1315, #1316); claudecode mid-turn compaction keeps the turn alive (#1272); cron permission lookup with composite keys (#1067).
- **Reliability fixes** — workspace model persistence (#1372); core queued messages drain strictly FIFO (#1286); workspace binding + run_as_user fixes (#1315, #1316, #1433); claudecode mid-turn compaction keeps the turn alive (#1272); claudecode tool output reaches progress card via `EventToolResult` (#1407, @coolrockin); DingTalk stream loop panic recovery (#1390, reported by @gd0094); `/restart` notification queued and dispatched on platform ready (#1388 closing #1383); cron permission lookup with composite keys (#1067).
- **Skill discovery hardened** — only depth-1 `SKILL.md` is registered; nested SKILL.md files are treated as assets, fixing 101 phantom slash-commands from `frontend-design` skill (#1317 carrying #1304).
- **Windows cmdline hotfix on main** — v1.3.4's `--append-system-prompt-file` fix is now on main via #1378. Windows + claudecode users are unblocked here without needing the v1.3.4 hotfix branch.
⚠️ **Behavior changes**: None. All new config options are optional with safe defaults. Existing v1.3.4 configs upgrade as-is.
⚠️ **Upgrade notes**: `cli_path` is deprecated in favour of `cmd` (existing configs keep working). Feishu `imageBatchWindow` default changed from 150 ms → 500 ms. Feishu `MessageRecallDetector` fallback probe interval changed from 2 s → 60 s. Override in config if you preferred the old values.
Full themed summary with credits: `changelogs/v1.4.0-beta.1.md`. The v1.3.4 Windows hotfix is documented in `changelogs/v1.3.4.md`.
Full themed summary with credits: `changelogs/v1.4.0.md`. Per-beta detail: `changelogs/v1.4.0-beta.1.md`, `v1.4.0-beta.2.md`, `v1.4.0-beta.3.md`. The v1.3.4 Windows hotfix is documented in `changelogs/v1.3.4.md`.
## 🧩 Platform feature snapshot

View File

@@ -160,25 +160,28 @@ MiniMax M3 突破 Coding 与 Agentic AI 前沿,基于 MiniMax Sparse Attention
</p>
## 🆕 v1.4.0-beta.1 更新了什么
## 🆕 v1.4.0 更新了什么
v1.4.0 系列首个 beta —— 自 v1.3.4 起 22 个 PR**两个新平台**加入家族。同时把 v1.3.4 的 Windows 命令行修复通过 PR #1378 回流到 main
v1.4.0 正式版 —— **两个新平台**加入家族Cisco Webex、含 E2EE 的 Matrixagent 与平台层配置选项全面拓宽,韩语 i18n加上一连串修复其中包含三个 beta 收尾期紧急 cherry-pick 的关键修复
- **新增平台** — **Cisco Webex** 一等公民适配器 (#1402, @bryantbarzola)**Matrix含 E2EE** 端到端加密房间支持 (#834, @rablwupei)。cc-connect 内置平台数达到 15 个
- 🚨 **关键修复beta 之后紧急 ship**Send goroutine nil 指针 race 会让整个 cc-connect 进程崩溃,所有平台连接断开 (#1436, @gotang);飞书 `MessageRecallDetector` fallback 每 2 秒探测一次,单 session 一个月烧 ~130 万次飞书 OpenAPI 调用,把免费额度打穿 (#1321, @qvictl)v1.3.4 引入的 `run_as_user` EACCES regressionbeta.1/beta.2 上 `run_as_user` 用户 100% 在 agent 启动时被堵 (#1433, @chenhg5@vuyiv 报告 #1429)
- **新增平台** — **Cisco Webex** 一等公民适配器 (#1402, @bryantbarzola)**Matrix含 E2EE** 端到端加密房间支持 (#834)。cc-connect 内置平台数达到 15 个。
- **agent option 解析重构** — 所有 agent 适配层走统一 `cmd` 字段,`cli_path` 废弃但仍兼容(带 deprecation 警告)(#1297, @happyTonakai)。
- **Slack 流式预览 + 聚合 turn 卡片** — agent 思考期间显示实时流式预览turn 结束后折叠为单张聚合卡片 (#1333)。
- **飞书富卡片升级** — `cmd:` action handler 支持点击后替换卡片内容 (#1299);批量图片合并为一条多图消息,不再被 `create_time` watermark 丢掉第一张 (#1408 携带 #1395)。
- **Codex per-config prompt** — codex agent 现在也支持 `system_prompt` / `append_system_prompt`,跟 claudecode 对齐 (#1345)。
- **韩语 (ko) i18n** — Web 管理后台增加韩语,已覆盖 zh / en / ja / ko (#1343)。
- **Claude Code 插件加载** — 新增 `plugin_dir` 配置项,直接指向插件目录加载 (#1325)
- **运维参数** — `cc-connect send` 增加 `max_attachment_size_mb` 上限配置 (#1392)daemon 日志轮转支持 `CC_LOG_MAX_BACKUPS` 环境变量 (#1260)。
- **acp 优雅 `/stop`** — 新增 `AgentSessionCanceller` 接口,让 ACP agent 可以干净停止 (#1275)。
- **可靠性修复** — workspace 模型选择跨重启持久化 (#1372)core 队列消息严格 FIFO drain旧消息不再被新消息的 `create_time` 误判为 stale 而丢弃 (#1286)`run_as_user` 下的 workspace 绑定 + workspace 启动修复 (#1315, #1316)claudecode 中途遇到 compaction 事件不再终止 turn (#1272)cron session 复合 key 的权限查找修复 (#1067)。
- **Skill 发现加固** — 只注册 depth-1 `SKILL.md`,嵌套的 SKILL.md 当作 skill 资产忽略,修复了 `frontend-design` skill 泄漏 101 个幻影 slash 命令的问题 (#1317 携带 #1304)。
- **Windows 命令行修复回流 main** — v1.3.4 的 `--append-system-prompt-file` 修复通过 #1378 上 main。Windows + claudecode 用户在 v1.4.0 上直接可用,不再依赖 v1.3.4 hotfix 分支
- **飞书富卡片升级** — `cmd:` action handler 支持点击后替换卡片内容 (#1299);批量图片合并为一条多图消息(默认 coalesce 窗口由 150ms 调至 500ms,不再被 `create_time` watermark 丢掉第一张 (#1408 携带 #1395)。
- **Codex per-config prompt + model_catalog_json** — codex agent 支持 `system_prompt` / `append_system_prompt`,跟 claudecode 对齐 (#1345)Codex 自身的 `model_catalog_json` 作为最高优先级 model 源 (#1074, @happyTonakai)
- **智谱 GLM 预设** — `z.ai``bigmodel`(国内端点)的 provider preset (#1412, @clingnet)。
- **韩语 (ko) i18n** — Web 管理后台增加韩语 (#1343)`nav.cron` 同步补齐 ko/ja/es 翻译
- **Claude Code 插件加载** — 新增 `plugin_dir` 配置 (#1325)。
- **运维参数** — `cc-connect send --cwd` 工作目录 (#1380, @MMMarcinho)`max_attachment_size_mb` 附件上限 (#1392, @rablwupei)daemon 日志轮转 `CC_LOG_MAX_BACKUPS` 环境变量 (#1260);可配置的 `/history` truncation (#1291, @AaronZ345)。
- **acp 优雅 `/stop`** — 新增 `AgentSessionCanceller` 接口 (#1275)。
- **可靠性修复** — workspace 模型选择跨重启持久化 (#1372)core 队列严格 FIFO drain (#1286)`run_as_user` workspace 绑定 + 启动修复 (#1315, #1316, #1433)claudecode 中途 compaction 不终止 turn (#1272)claudecode 工具输出能进 progress card (#1407, @coolrockin)DingTalk stream loop panic 恢复 (#1390, @gd0094 报告)`/restart` 通知 queue 后等平台 ready 再 dispatch (#1388 关闭 #1383)cron 复合 key 权限查找修复 (#1067)。
- **Skill 发现加固** — 只注册 depth-1 `SKILL.md` (#1317 携带 #1304)
- **Windows 命令行修复回流 main** — v1.3.4 的 `--append-system-prompt-file` 修复通过 #1378 上 main (#1378)。
⚠️ **行为变更**无。所有新配置项均为可选且有安全默认值。v1.3.4 已有配置可直接升级
⚠️ **升级提示**`cli_path` 已废弃,建议迁移到 `cmd`(旧配置仍兼容)。飞书 `imageBatchWindow` 默认值由 150ms 调至 500ms。飞书 `MessageRecallDetector` fallback 探测间隔由 2s 调至 60s。如有自定义需求可在配置中覆盖
完整主题汇总(含致谢)见 `changelogs/v1.4.0-beta.1.md`。v1.3.4 的 Windows 命令行修复另见 `changelogs/v1.3.4.md`
完整主题汇总(含致谢)见 `changelogs/v1.4.0.md`。各 beta 详情:`changelogs/v1.4.0-beta.1.md``v1.4.0-beta.2.md``v1.4.0-beta.3.md`。v1.3.4 的 Windows 命令行修复另见 `changelogs/v1.3.4.md`
## 🧩 平台能力一览

256
changelogs/v1.4.0.md Normal file
View File

@@ -0,0 +1,256 @@
# v1.4.0 — 2026-06-28
Stable release of the v1.4.0 series. Closes a 6-day beta cycle (beta.1 →
beta.2 → beta.3) plus three critical post-beta cherry-picks merged into
stable: a `Send` goroutine race, a Feishu recall-probe quota burn, and
an alignment follow-up.
This page is the consolidated stable changelog. For per-beta detail, see
[`v1.4.0-beta.1.md`](v1.4.0-beta.1.md), [`v1.4.0-beta.2.md`](v1.4.0-beta.2.md),
and [`v1.4.0-beta.3.md`](v1.4.0-beta.3.md).
---
## 🚨 Critical fixes shipped late in the cycle
These three landed after beta.3's QA PASS and are part of why v1.4.0 stable
is being cut now rather than as a clean re-spin of beta.3:
- **core: `Send` goroutine nil-pointer panic race** (#1436,
[@gotang](https://github.com/gotang); follow-up alignment of the third
call site in `drainPendingMessages` by cc-connect/qa-cursor) —
`cleanupInteractiveState` could nil `state.agentSession` while three
`Send` goroutines were still reading it without holding the lock. When
an agent process exited just before its `Send` was scheduled, the whole
cc-connect process would panic and drop every platform connection.
**100% reproducible in production**. Fix captures `state.agentSession`
under `state.mu` before launching `Send` goroutines and adds a
nil-check fallback inside each goroutine.
- **Feishu: recall-probe quota burn** (#1321,
[@qvictl](https://github.com/qvictl)) — `MessageRecallDetector`
fallback path was polling `GET /im/v1/messages/{message_id}` every 2 s
for the same active message, burning **~1.3M Feishu OpenAPI calls/month
per stuck session** and exhausting the 1M/month free quota. Probe
interval now 1 minute; per-message dedup + in-flight guard inside
`interactiveState`. Reset on each new active message so recall
detection still works for normal turns.
- **claudecode: `run_as_user` EACCES regression** (#1433,
[@chenhg5](https://github.com/chenhg5); reported by
[@vuyiv](https://github.com/vuyiv) #1429) — chmod `0o644` on per-spawn
system-prompt temp file so non-root child processes can read it after
dropping privileges. Fixes a regression introduced by v1.3.4 (#1376):
`run_as_user` users on beta.1/beta.2 were 100% blocked at agent
startup with `EACCES` errors.
---
## New platforms
- **Cisco Webex** — first-class Webex Teams adapter with bot identity,
message routing, and reply support
(#1402, [@bryantbarzola](https://github.com/bryantbarzola)).
- **Matrix (with E2EE)** — first-class Matrix adapter including
end-to-end encrypted room support (#834).
---
## Features
### Agents
- **Codex `system_prompt` / `append_system_prompt`** config: codex
agent now honours per-config prompts the same way claudecode does (#1345).
- **Codex `model_catalog_json`** preferred as highest-priority model
source (#1074, [@happyTonakai](https://github.com/happyTonakai)).
- **Claude Code `plugin_dir`** — claudecode agent supports loading
plugins via `--plugin-dir`, exposed as a new `plugin_dir` config
option (#1325).
- **agent option parsing refactor** — centralize cmd/env option parsing
into core with a unified `cmd` field across all agent adapters
(39 files, +863/-419) (#1297,
[@happyTonakai](https://github.com/happyTonakai)).
`cli_path` is deprecated in favour of `cmd`. Existing configs continue
to work with a deprecation warning.
### Platforms
- **Slack streaming preview + aggregated turn card** — live streaming
preview while the agent is thinking, collapses into a single
aggregated turn card on completion (#1333).
- **Feishu after_click card replacement for `cmd:` actions** — rich
cards can now replace their content after a button click for `cmd:`
action handlers (#1299).
### Send / cc-connect CLI
- **`cc-connect send --cwd`** — specify the working directory for send
commands (#1380, [@MMMarcinho](https://github.com/MMMarcinho)).
- **`max_attachment_size_mb` for `cc-connect send`** — configurable
upper bound for outbound attachment size; default preserved
(#1392, [@rablwupei](https://github.com/rablwupei)).
### Provider presets
- **Zhipu GLM**: `z.ai` and `bigmodel` (CN) presets added to embedded
`provider-presets.json` (#1412, [@clingnet](https://github.com/clingnet)).
### Web admin / i18n
- **Korean (ko) i18n** — Web admin UI now ships Korean translations
alongside zh/en/ja (#1343).
- **`nav.cron`** translated for ko/ja/es (was leaking raw "Cron" string
in the sidebar).
### Daemon / observability
- **`CC_LOG_MAX_BACKUPS` env var** — control daemon log rotation backup
count via env (#1260).
- **Configurable `/history` truncation** length (#1291,
[@AaronZ345](https://github.com/AaronZ345)).
---
## Fixes
### Core engine
- **Send goroutine race** (#1436, see Critical above).
- **Feishu recall-probe quota burn** (#1321, see Critical above).
- **`/restart` notification race** — queue the `/restart` success
notification on the engine and dispatch it when the target platform
reaches `OnPlatformReady` (with bounded retry + 10 s safety timeout)
instead of firing immediately after engine startup. Closes the race
where notifications were silently dropped on platforms with async
connect (Telegram ~2.6 s, Discord, Weixin, Matrix)
(#1388 closing #1383).
- **FIFO drain** — queued messages now drain strictly in FIFO order,
preventing earlier queued messages from being dropped as stale when a
later one has a higher `create_time` (#1286).
- **Skill discovery depth-1 only** — skill scanning no longer recurses
into subdirectories. Only `<skill_dir>/<name>/SKILL.md` is registered;
nested `SKILL.md` files are treated as skill assets and ignored,
matching Claude Code CLI conventions. Previously, nested `SKILL.md`
leaked into platform command menus as phantom slash commands (101
leaked commands from `frontend-design` skill alone)
(#1317 carrying #1304).
- **acp graceful `/stop`** — new `AgentSessionCanceller` interface lets
`/stop` shut a session down gracefully via ACP (#1275).
### Run-as-user
- **`run_as_user` EACCES regression** (#1433, see Critical above).
- **Engine workspace binding under `run_as_user`** — keep workspace
binding even when the supervisor cannot stat it under `run_as_user`
(#1316).
- **Runas workspace** — run the agent in its own workspace under
`run_as_user` (#1315).
### claudecode
- **Windows cmdline limit** — file-based system prompt delivery via
`--append-system-prompt-file` lands on main (port of the v1.3.4
hotfix). Windows users on claudecode are no longer affected by the
cmd.exe 8192-byte cmdline limit (#1378 porting #1376).
- **Mid-turn compaction** — keep the turn running when a compaction
event arrives mid-turn (fixes #481) (#1272).
- **Progress card tool result** — emit `EventToolResult` so tool output
reaches the progress card (#1407,
[@coolrockin](https://github.com/coolrockin)).
### Feishu
- **Batch images dropped** — coalesce consecutive image messages from
the same session into a single multi-image dispatch (configurable
quiet window, default bumped from 150 ms to 500 ms) so first-image-of-N
is no longer dropped by the `create_time` watermark from PR #1168
(#1408 carrying #1395; default tuning by cc-connect/qa-cursor).
- **Markdown `text_color`** — keep `text_color` on `plain_text` elements
only; removing it from `markdown` elements fixes rendering glitches
(#1278).
### Slack
- **Streaming card `msg_too_long`** — stop `chat.update` once payload
exceeds Slack's size limit; deliver full reply via fresh `postMessage`
instead of crashing (QA hotfix, cc-connect/qa-cursor).
### DingTalk
- **Stream loop panic** — recover panic in DingTalk `StreamClient`
`processLoop` to prevent process crash on closed channel
(#1390, fix for issue reported by [@gd0094](https://github.com/gd0094)).
### Workspace / state
- **Workspace model persistence** — workspace-level model selections
now persist across restarts instead of resetting to default (#1372).
### Cron
- **Permission lookup with composite keys** — pending permission lookup
for cron sessions now resolves correctly when the key is composite
(#1067).
---
## Tests
- Regression test for issue #814 — verifies queued messages use their
own `replyCtx` via the outer drain (#1261).
- `TestWriteTempAppendPromptFile_ReadableByOtherUser` covers the
`run_as_user` EACCES regression (#1433).
- Several `-race` regression tests around `interactiveState` mutation
paths (#1436 / #1321 cycle).
---
## Chore / dev experience
- `.gitignore`: add `.worktrees/` for local-only multi-agent scratch
dirs (#1443). Does not affect the binary.
- Sponsor list refresh — remove four lapsed sponsor entries (#1404).
---
## Upgrade notes
- **`cli_path` deprecation** — switch to the unified `cmd` field at
your convenience. Old configs continue to work with a deprecation
warning. The deprecation will not be removed in v1.4.x.
- **Feishu `imageBatchWindow`** default changed from 150 ms → 500 ms.
Override in config if you preferred the older value.
- **Feishu `MessageRecallDetector`** fallback probe interval changed
from 2 s → 60 s. If you relied on the old aggressive polling for
custom integrations, the new behaviour is deduped and gated.
---
## Contributors
External contributors (community PRs landed in v1.4.0):
- [@bryantbarzola](https://github.com/bryantbarzola) — Cisco Webex
platform (#1402)
- [@happyTonakai](https://github.com/happyTonakai) — Codex
`model_catalog_json` (#1074); agent option parsing refactor (#1297)
- [@AaronZ345](https://github.com/AaronZ345) — `/history` truncation
configurable (#1291)
- [@MMMarcinho](https://github.com/MMMarcinho) — `cc-connect send --cwd`
(#1380)
- [@coolrockin](https://github.com/coolrockin) — claudecode
`EventToolResult` progress card (#1407)
- [@rablwupei](https://github.com/rablwupei) — `max_attachment_size_mb`
(#1392)
- [@clingnet](https://github.com/clingnet) — Zhipu GLM presets (#1412)
- [@gotang](https://github.com/gotang) — `Send` goroutine race (#1436)
- [@qvictl](https://github.com/qvictl) — Feishu recall-probe throttling
(#1321)
- [@vuyiv](https://github.com/vuyiv) — reported #1429 (run_as_user
EACCES) with a clean repro
- [@gd0094](https://github.com/gd0094) — reported the DingTalk stream
panic (#1390)
Internal team:
- [@chenhg5](https://github.com/chenhg5) (cg33) — maintainer; many fixes
and the v1.4.0 cycle ownership
- cc-connect/dev-claudecode, cc-connect/dev-codex, cc-connect/dev-cursor
— implementation across the cycle
- cc-connect/qa-cursor — full QA cycle across beta.1 → beta.2 → beta.3
plus three post-beta cherry-picks, including the `drainPendingMessages`
follow-up alignment
---
## Reference
- Previous stable: [v1.3.4](https://github.com/chenhg5/cc-connect/releases/tag/v1.3.4) (2026-06-16, Windows cmdline hotfix)
- Full diff: [v1.3.4...v1.4.0](https://github.com/chenhg5/cc-connect/compare/v1.3.4...v1.4.0)
- Beta cycle:
[v1.4.0-beta.1](https://github.com/chenhg5/cc-connect/releases/tag/v1.4.0-beta.1) (2026-06-22),
[v1.4.0-beta.2](https://github.com/chenhg5/cc-connect/releases/tag/v1.4.0-beta.2) (2026-06-23),
[v1.4.0-beta.3](https://github.com/chenhg5/cc-connect/releases/tag/v1.4.0-beta.3) (2026-06-28)

View File

@@ -1,6 +1,6 @@
{
"name": "cc-connect",
"version": "1.4.0-beta.3",
"version": "1.4.0",
"description": "Bridge local AI coding agents (Claude Code, Cursor, Gemini CLI) to messaging platforms (Feishu, DingTalk, Slack, Telegram, Discord, LINE, WeChat Work)",
"keywords": [
"claude-code",