## v1.4.0-beta.2 — 2026-06-23

Rolling beta with **10 additional commits** on top of beta.1 (5ece448c → 32c1716d).
3 hotfixes found during QA testing + 7 cherry-picked PRs from main. All changes
verified by QA (automated + owner visual ride-along).

### Features
- **codex model_catalog_json** — prefer Codex's own `model_catalog_json` as the
  highest-priority model source (#1074, [@happyTonakai](https://github.com/happyTonakai)).
- **`cc-connect send --cwd`** — specify the working directory for send commands
  (#1380, [@MMMarcinho](https://github.com/MMMarcinho)).

### Refactor
- **agent option parsing** — centralize cmd/env option parsing into core with a unified
  `cmd` field. Touches 39 files (+863/-419) across all agent adapters. All agent startup
  paths now share the same option parsing logic (#1297,
  [@happyTonakai](https://github.com/happyTonakai)).
  ⚠️ Broad refactor — monitor agent startup compatibility with existing configs.

### Bug Fixes (QA hotfixes, found during beta.1 testing)
- **feishu image batch window** — make `imageBatchWindow` configurable; bump default
  from 150 ms → 500 ms to better handle mobile multi-image bursts
  (e5e512b8, @qa-cursor).
- **i18n nav.cron** — translate `nav.cron` for Korean, Japanese, Spanish; was leaking
  raw "Cron" string in the web admin sidebar (ee5bb3d0, @qa-cursor).
- **slack streaming card** — stop `chat.update` once payload exceeds Slack's size limit;
  deliver full reply via fresh `postMessage` instead of crashing with `msg_too_long`
  (3b1867cb, @qa-cursor).

### Bug Fixes (cherry-picked from main)
- **core /history truncation** — make `/history` entry truncation length configurable
  (#1291, [@AaronZ345](https://github.com/AaronZ345)).
- **core post-restart notification** — queue post-restart notification and dispatch on
  platform ready (#1388, [@chenhg5](https://github.com/chenhg5)).
- **claudecode progress card** — emit `EventToolResult` so tool output reaches the
  progress card (#1407, [@coolrockin](https://github.com/coolrockin)).
- **dingtalk stream 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)).

### Contributors

Thanks to everyone who contributed to this beta:

- [@happyTonakai](https://github.com/happyTonakai) — codex model_catalog_json (#1074);
  agent option parsing refactor (#1297)
- [@MMMarcinho](https://github.com/MMMarcinho) — send --cwd workdir support (#1380)
- [@AaronZ345](https://github.com/AaronZ345) — /history truncation configurable (#1291)
- [@coolrockin](https://github.com/coolrockin) — claudecode EventToolResult progress card
  (#1407)
- [@chenhg5](https://github.com/chenhg5) — post-restart notification (#1388)
- [@gd0094](https://github.com/gd0094) — DingTalk stream panic report (#1390)
- cc-connect/qa-cursor — 3 hotfixes (feishu image window, i18n nav.cron, slack streaming
  card)

### Reference
- Previous beta: [v1.4.0-beta.1](https://github.com/chenhg5/cc-connect/releases/tag/v1.4.0-beta.1) (2026-06-22)
- Full diff: [v1.4.0-beta.1...v1.4.0-beta.2](https://github.com/chenhg5/cc-connect/compare/v1.4.0-beta.1...v1.4.0-beta.2)
