# ConnectOnion 1.9.3rc15 (release candidate)

Stable remains 1.9.2. This preview requires Python 3.11 or newer and retains
the security fixes through rc14, including Pillow 13.0.0, pypdf 6.21.2,
cryptography 50.0.2 and Paramiko 5.1.0 for the optional Synology extra.
CI audits all extras. Intel macOS installations need the source
build dependencies described in the [rc13 notes](1.9.3rc13.md).

## Files keep their references through the inbox

Feishu and Lark messages now retain their actual message kind, typed sender
IDs and a small list of attachment references. File and image messages, rich
posts, external file lists and post titles survive normalization. Each
resource carries its type, provider key and name when available. Folder shares
remain folders, and a media cover image is not presented as the original file.

The default `receive` record still excludes the raw provider payload. Existing stored records remain readable; ordinary Host text input is unchanged.
Feishu/Lark records may include optional typed sender IDs. Host input carries the normalized
record for non-text messages and messages with attachments, rather than
reducing those messages to their text placeholder. Existing sender permissions,
requester identity and session routing are unchanged.

These references allow a consumer to retrieve originals using the provider's
resource API. The inbox does not automatically download files, extract ZIPs or
submit expenses; applications must implement and verify those steps separately.

## Recovery covers the first interrupted journal write

Recovery includes conversations that the listener already remembered before
its first message was journaled. This closes a crash window between those two
writes. It does not discover unknown conversations or bypass recovery boundaries
and checkpoints.

## Validation

The inbox, CLI and Host regression suite passed 436 tests on Python 3.12.
A private metadata replay of ten original message snapshots retained all 135
resource references, matched live and history normalization, and accepted no
duplicate redeliveries. No customer fixtures are included in the package.
Original downloads, archive extraction and the application's full business
workflow require separate deployment acceptance.

The design journal explains [where the file became a word](/blog/the-file-became-a-word).

## Install after publication

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

Use the exact pin in a Python 3.11+ environment. A preview remains opt-in and
does not change the stable installation recommendation.
