## v1.3.3 — 2026-06-15

First stable release of the 1.3.3 series. Stabilizes the v1.3.3-beta.1 → v1.3.3-beta.5
line (≈ 235 PRs since v1.3.2) plus 7 post-beta.5 fixes (qoder streaming, weixin typing
ticket, daemon non-linux build, wps-xiezuo newlines, /switch history loss, minimax TTS
trailer, provider-resume regression coverage).

If you have been running any 1.3.3-beta.\* in production, **upgrading to v1.3.3 is
recommended** — it ships the same surface as beta.5 with a smaller, fix-only delta on
top.

---

### Highlights

- **5 new first-class agents**: Devin CLI (beta.1), Google Antigravity `agy` (beta.5),
  GitHub Copilot (beta.5), Kimi CLI / Pi (carryover, additional fixes), plus broader
  Cursor / OpenCode / Qoder coverage.
- **Major platform expansion**: QQ Bot inline keyboards & file send/receive (OneBot),
  WeCom `SendFile` over WebSocket, Feishu native audio + video media, Slack Assistant
  API, MAX webhook delivery mode, DingTalk @mentions / richText / image / file inbound,
  WPS Xiezuo (金山协作) integration, broader Weibo DM coverage.
- **New core commands**: `/timer` (one-shot delayed task), `/cancel` (interrupt
  current turn), `/ps` (send mid-turn message; replaces `/btw` which stays as alias),
  `cron add --silent`, agent-driven TTS via session.
- **Hardened long-running turn behavior**: new `max_turn_time_mins` absolute
  wall-clock cap with soft-stop + force-kill + auto-resume on next message — long
  bash/test/run commands can no longer lock a session indefinitely.
- **Multi-user / permissions**: reply-to-unauthorized-IM-senders option, engine
  permission keyword matching is now @mention-tolerant (`@Bot/permit` ≡ `/permit`),
  hardened Bridge auth (token required when Bridge is enabled).
- **Observability & ops**: blackbox testing framework (P0/P1/P2 coverage,
  config-switch matrix), CUJ test framework, agent-resume regression suite for
  codex/opencode/kimi, daemon hardening (env capture + EnvDiscoverer plugin hook),
  Pi context-usage reporter for footer token stats.
- **Provider ecosystem**: new presets NekoCode, VisionCoder, AIHubMix, MiniMax M3;
  Claude Code 1M-context Opus model option; Claude Code custom
  `append_system_prompt` + PermissionRequest hooks; Codex `request_user_input`
  app-server events + relay group visibility; configurable shell + shell profile
  for `exec`.

---

### ⚠️ Behavior Changes (action may be required)

All of these were introduced during the beta cycle and remain in effect for v1.3.3.

1. **`progress_style` default flipped to `compact` for Telegram and Discord**
   (was `legacy`). To restore the previous flood-style progress, set
   `progress_style = "legacy"` in the platform config. (#1354)

2. **QQ Bot default `intents` now include `INTERACTION_CREATE` (bit 26)**.
   Inline keyboard permission buttons rely on this. If you previously overrode
   `intents` without bit 26, add `1<<26` to your value or you will not receive
   button clicks. Users on the default intents need no action.

3. **DingTalk `msgtype=file`** inbound messages now reach the agent. Previously
   silently dropped. (#1357) If your bot was unintentionally relying on file
   messages being ignored, add a filter rule.

4. **Engine permission keyword matching is now @mention-tolerant**:
   `@Bot/permit` matches the same as `/permit`. (#1358) Bots that intentionally
   relied on the previous strict match need to update their alias rules.

5. **AskUserQuestion no longer resolves on empty / read-receipt messages**.
   Previously delivery receipts and empty messages from some IMs could resolve
   the question within ~500ms. Now empty/whitespace content is rejected.
   (#1086)

6. **`reset_on_idle_mins` default is now 30 minutes** (was effectively
   off). Sessions idle for 30+ minutes auto-reset on next turn to prevent
   context drift. Set to `0` in `[[projects]]` to restore old behavior. (#494)

7. **Bridge requires a token when enabled**. Bridge with no token configured
   will refuse to start to prevent unauthenticated access. (#408) Set
   `[bridge].token` in your config.

---

### Breaking Changes

**None.** This is a fully additive release. Existing configs continue to work.
See "Behavior Changes" above for defaults that have flipped during the beta
cycle.

---

### New Features (consolidated across beta.1 → beta.5 + post-beta.5)

#### New Agents
- **Devin CLI** — first-class agent with `/list`, `/mode`, full session
  management (#672, beta.1).
- **Google Antigravity (`agy`)** — first-class integration (#1123, beta.5).
- **GitHub Copilot** — first-class integration (#865, beta.5).
- Continued coverage hardening for **Cursor**, **OpenCode**, **Qoder**, **Kimi
  CLI**, **Pi** (multiple PRs across betas, plus blackbox test framework).

#### Platform Capabilities
- **QQ (OneBot) file send/receive** via HTTP API (#323, beta.5).
- **QQ Bot inline keyboard buttons** + `INTERACTION_CREATE` events —
  permission requests now render as clickable buttons (#1131, beta.5).
- **WeCom `SendFile` in WebSocket mode** (#1199, beta.5).
- **Feishu audio + video attachments as native media** (#1202, beta.5).
- **Feishu rich card rendering + panel handling refresh** (#1204, beta.5).
- **Slack Assistant API** support with natural on/off switching (#844,
  beta.2).
- **MAX messenger webhook delivery mode** with deployment docs (#818,
  beta.2).
- **DingTalk** richText (#828), image handling (#828), reaction emoji
  (#1213), `@mention via send --at-users / --at-all` (#1188), file inbound
  fix (#1357).
- **Slack + tmux** per-thread session scope with per-session tmux windows
  (#1179, beta.5).
- **WPS Xiezuo (金山协作)** newline preservation fix (#1361) — improves
  `/status` readability significantly.

#### Core Engine / Workflow
- **`/timer`** — one-shot delayed task system (#1012, beta.5).
- **`/cancel`** — interrupt and reset the current session (#957, beta.5).
- **Session prune** command to remove duplicate sessions (#603, beta.5).
- **Agent-driven TTS send** (#1230, beta.5).
- **Reply to unauthorized IM senders** option (#1190, beta.5).
- **`max_turn_time_mins`** — wall-clock cap per agent turn with two-phase
  shutdown (soft 10s grace then force-kill) + auto-resume (#1091, beta.4).
- **`/switch` no longer loses history** + user msgs persisted immediately +
  new CUJ test framework (#1348, post-beta.5).
- **`/ps` command (replaces `/btw`)** for mid-turn messaging; `/btw` kept
  as alias (#620, beta.1).
- **`!` shell shortcut** with `--timeout` (#658, beta.1).
- **`NO_REPLY` suppression** — agents can silently skip platform delivery,
  useful for cron / analysis (#682, beta.1).
- **`cron add --silent`** CLI flag (#1285, closes #858, beta.5).
- **Configurable shell + shell profile for `exec`** (#870, beta.5).
- **Codex `request_user_input` app-server events + relay group visibility**
  (#1200, #1209, beta.5).
- **Claude Code `append_system_prompt` + PermissionRequest hooks** (#1175,
  #850, beta.5).
- **Claude Code Opus 1M-context model option** (#660, beta.1).
- **Pi `ContextUsageReporter`** for reply-footer token stats (#1235, beta.5).
- **Bridge ImageSender / FileSender** — `cc-connect send --image / --file`
  now works through bridge protocol (#712, beta.1).
- **Provider presets** — NekoCode, VisionCoder, AIHubMix, MiniMax M3
  (#739, beta.1).
- **Feishu shared WebSocket** — multiple projects sharing the same
  `app_id` share one WS with per-project `allow_chat` / `group_only`
  filtering (#613, beta.1).
- **Message queue depth configurable** via `[queue] max_depth` (default
  5) (#690, beta.1).
- **Blackbox testing framework** — Phase 1-2 P0/P1/P2 coverage,
  config-switch, `NewEnvWithSetup` infra (beta.3).
- **Daemon hardened service-file env capture + EnvDiscoverer plugin hook**
  (#1034, beta.5).
- **Provider-resume regression tests** for codex / opencode / kimi (#1366,
  post-beta.5).

---

### Fixed

Heavy fix coverage across the entire surface. Detailed breakdown:

#### Post-beta.5 fixes (7 PRs)
- **qoder**: emit streaming text without dropping the final result (#1290)
- **weixin (ilink)**: use `ilink_user_id` in `getConfigReq` for typing
  ticket (#1308)
- **daemon**: remove redundant `linger_other.go` that breaks non-linux
  builds — confirmed cross-compile on darwin/windows (#1314)
- **wps-xiezuo**: preserve newlines in outbound messages (P1, fixes
  unreadable `/status`) (#1361)
- **core**: `/switch` no longer loses history; persist user msgs
  immediately; add CUJ test framework (#1348)
- **tts/minimax**: drop `status=2` trailer chunk to stop audio playing
  twice (#1364)
- **tests**: add provider-resume regression tests for codex / opencode /
  kimi (#1366)

#### Engine / Core (selected, from beta.1 → beta.5)
- Telegram & Discord progress style now `compact` by default — set
  `progress_style = "legacy"` to revert (#1354)
- DingTalk `msgtype=file` inbound now reaches the agent (#1357)
- Engine permission keyword matching is @mention-tolerant (#1358)
- `AskUserQuestion` rejects empty / read-receipt answers (#1086)
- Italic wrapping restored on reply footer (beta.3)
- Stdio sentinel for Codex app_server backend (beta.3, beta.2 #837)
- Windows cross-compile fix — `CheckLinger` stub in
  `daemon/windows.go` + `unsupported.go` (beta.3)

#### Agents (selected)
- **Cursor**: session title handling
- **OpenCode**: tool rejection handling; inbound image `--file` flag
  passthrough (#717, beta.1)
- **Codex**: resume + `sandbox_mode` handling (multiple); honor
  model/effort/provider in `app_server` backend (#837, beta.2); multiline
  prompt preservation on resume (carry forward); progress rendering in
  rich Card 2.0 (#838, beta.2)
- **Pi**: `/dir` and `/model`
- **Claude Code**: provider preservation; CLI wrapper support; `auto`
  permission mode (carryover)
- **Gemini**: multiline prompt via stdin (#695, beta.1)
- **Kimi**: session UUID capture from stderr (#766, beta.2; #beta.3)

#### Platforms (selected)
- **Telegram**: HTML fallback warning (#674, beta.1); `/skills` safe
  format (#571, beta.1); private topics session keys (#804, beta.2)
- **Discord**: progress style, slash command on defer fail
- **DingTalk**: `msgtype="picture"` images no longer dropped (#1128,
  beta.4); file inbound (#1357, beta.5)
- **Feishu**: link/card URLs; recalled messages (#841, beta.2); media
  download failure user notification (#815, beta.2); `require_mention =
  false` honored (#1141, beta.4); webhook mode skip bot open_id (#696,
  beta.1); footer asterisk stripping
- **WeCom**: long-message split; @bot mention strip
- **WeChat**: video as proper video message (#813, beta.2); incomplete
  delivery user notification (#771, beta.2)
- **Slack**: `@mention` without trailing space (`@Bot/cmd`) now parses as
  command (beta.4); Markdown → mrkdwn conversion (#680, beta.1)
- **Windows**: instance lock
- **Web console**: 404 regression fixed — `make release-all` now depends
  on `make web` so release binaries always ship the frontend (#1136,
  beta.4)

---

### Docs

- Refreshed `README.md` and `README.zh-CN.md` "What's New" sections to
  v1.3.3.
- New deployment docs for MAX webhook mode (beta.2).
- Detailed per-beta changelogs preserved in `changelogs/v1.3.3-beta.*.md`
  for historical reference.

---

### Build / CI

- **Cross-platform build matrix verified** on darwin (arm64) + linux +
  windows after `daemon/linger_other.go` regression was fixed (#1314).
- Selective compilation tags (`no_web`, `no_<agent>`, `no_<platform>`)
  continue to be the recommended way to slim binaries.
- `make release-all` reliably depends on `make web` (#1136).

---

### Contributors

≈ 30+ external contributors across the v1.3.3 cycle. Headline contributors
(non-exhaustive):

@YoungShook, @Cigarrr, @vinnyxiong, @happyTonakai, @ferocknew, @soaringk,
@LyInfi, @cg33, @Shawn, @xxb, @Han, @Yu-Zhang, @JazzuLu, @bingkxu, @Rael,
@AaronZ345, @MeteorSkyOne, @meloalright, @CodeEagle, @Baocang-Nie,
@Alloyee, @0KABE, @hansonShen, @kslex, @leighstillard, @huangdijia,
@bugwz, @kare, @bobo-xxx, @walkerchi, @wgx521, @Yongmao Luo, plus the
internal team driving the agent / platform / engine work.

Full per-PR attribution is preserved in the per-beta changelogs and in
`git log v1.3.2..v1.3.3`.

---

### Upgrade

```bash
npm i -g cc-connect@1.3.3
# or
go install github.com/chenhg5/cc-connect/cmd/cc-connect@v1.3.3
# or
brew upgrade cc-connect    # if installed via brew
```

If you are on a v1.3.3-beta.\*, this stable release is a small fix-only
upgrade over beta.5 — no config changes required.

If you are on v1.3.2 (the previous stable), review the **Behavior
Changes** section above before upgrading; in particular `progress_style`,
QQ Bot `intents`, `reset_on_idle_mins`, and Bridge `token` requirements
may affect your config.

---

### References

- Full v1.3.2 → v1.3.3 diff: <https://github.com/chenhg5/cc-connect/compare/v1.3.2...v1.3.3>
- Per-beta changelogs: `changelogs/v1.3.3-beta.5.md` (and CHANGELOG.md
  entries for beta.1 → beta.4).
