# ConnectOnion 1.9.3rc23: configurable ASR

Opt-in preview published on 2026-10-26. Stable stays 1.9.2.

The [PyPI package](https://pypi.org/project/connectonion/1.9.3rc23/) and
[GitHub prerelease](https://github.com/openonion/connectonion/releases/tag/v1.9.3rc23)
are public. The [official release workflow](https://github.com/openonion/connectonion/actions/runs/40210770709)
passed its test matrix, built-wheel acceptance and clean public installation.
The wheel and source archive hashes agree across both services.

`co asr recording.m4a` and `from connectonion import asr` expose one generic
audio-to-text capability. Codex is the default provider; save
`co env set ASR_PROVIDER connectonion` to use ConnectOnion's existing cloud
transcription, or override one call with `--provider`.

The Codex adapter is Python, with no codex-asr executable or Rust installation.
It reads the existing file-backed ChatGPT login locally and uploads the selected
audio to the unofficial Codex Desktop transcription endpoint. It never forwards
that login to OpenOnion or silently switches providers. Both choices are cloud
processing, not offline recognition or a promise of free subscription usage.

Focused synthetic cases cover request construction, provider routing,
malformed authentication, HTTP errors/redirects, malformed responses, cloud
failure redaction and CLI JSON. A separately synthesized short English sentence
was submitted through the real Codex endpoint and transcribed correctly on the
owner's Mac. No personal recording was used. This single success does not
establish Chinese/mixed-language accuracy, long-meeting completeness, quota or
account compatibility. Full package/CI/release acceptance is recorded separately.

The input-file 50 MiB restriction was removed before release. FFmpeg inspects
audio locally and prepares eight-minute windows with two seconds of overlap;
raw completed parts are checkpointed privately and interrupted jobs can resume.
Three-hour planning and actual ten-minute local decoding are tested. A nine-minute
synthesized recording completed two real Codex requests, with both part results
retained. This is a transport/completion smoke test, not long-meeting accuracy
acceptance. No speaker labels, word timestamps or automatic REM ingestion.
Existing `transcribe()` behavior is preserved. See [ASR configuration and recovery](../asr.md).

The tagged main branch also includes the earlier REM session-ID repair from
[#2662](https://github.com/openonion/connectonion/pull/2662): resumed or forked
Codex rollout files sharing a session no longer collapse different messages at
the same file offset. Legacy IDs and retained citations remain readable.
