# ConnectOnion 1.9.3rc25: freeze candidate with the Lark listener fix

Opt-in preview. Stable stays 1.9.2.

```bash
python -m pip install --upgrade 'connectonion==1.9.3rc25'
```

## rc25 = rc24 + one release-blocking fix

rc24 froze the 1.9.3 line: from then on, only release-blocking fixes. The Lark
listener fix is one. rc25 is rc24 plus that fix and nothing else, and it is now
the 1.9.3 freeze candidate. If it holds up end to end, it is promoted unchanged
to 1.9.3. Everything rc24 shipped is described in the
[rc24 notes](1.9.3rc24.md).

## Lark listener: messages no longer go missing silently

`co lark listen` could look healthy while about half of the direct messages to
the bot never reached the inbox
([#2690](https://github.com/openonion/connectonion/issues/2690), fixed by
[#2691](https://github.com/openonion/connectonion/pull/2691)).

- **Bounded history recovery.** Recovery runs only at start and after a
  reconnect. There is no periodic polling, and each run makes at most 40
  history calls. The old 60-second retry loop is gone.
- **One bad container no longer stops recovery.** A conversation Lark rejects
  is logged once and skipped. The others still recover, and the checkpoint
  advances.
- **Split delivery is visible.** Lark sends each event to only one connected
  client. When a message reached the bot but not this listener, the log warns
  `reached the bot but not this listener — another client may be connected
  with this app_id`. The warning is written to `missed-live.txt` and shown by
  `co lark check`.
- **Chat events reach the inbox.** Reactions, recalls, the bot joining a group
  and group changes are inbox records with their own `kind`.

See the [Lark guide](../cli/feishu.md).

## Requirements

Python 3.11+. The existing security floors are retained.
