# ConnectOnion 1.9.3rc21 (release candidate)

REM can now use **Codex Scheduled** for daily upkeep on an eligible Mac. Run
`co rem start` to apply it, then `co rem status` to check registration and runs.
Keep Codex desktop open and the computer awake. Completed maintenance
conversations archive to keep recent work clear.

This is an opt-in preview; stable remains 1.9.2. After publication, install the
exact package with `pip install connectonion==1.9.3rc21` on Python 3.11+.
Codex notebooks with the app installed and a matching computer/notebook timezone
use the native timer. Other runners, headless Macs and different saved timezones
keep launchd. Review the source summary before approving a new notebook.

## Migration and compatibility

A paused native task must be registered before the old launchd timer is removed.
The final handoff holds REM's maintenance lock and verifies that launchd is no
longer loaded. Running old work, failed registration and failed unload keep the
previous clock; a failed update restores an existing definition. Native wrapper
and internal REM conversations archive after completion, retaining their IDs.

The adapter uses the desktop's adopted local automation file. It adds no public
App Server RPC and does not bypass native caller authentication.

The tested desktop's explicit timezone path calculated incorrect offsets. This
preview uses its local wall-clock path, selecting exact hour/minute pairs, and
retains launchd for other saved timezones, headless Macs and other runners. Its
fallback note explains the boundary. DST gaps move by the gap and repeated hours
are served once. After changing saved times, runner or the computer timezone,
status asks for `co rem start` to apply the new schedule.

Status checks the actual native index and application process. It distinguishes
an unadopted definition, first execution not yet verified, a late trigger and a
failed REM pass. Native startup may spend several minutes in initialization;
file existence and a short observation timeout are not execution evidence.

On the tested Mac, three native timer runs executed an isolated Python marker
and automatically archived. A separate actual native timer invoked the pinned
REM CLI against an isolated notebook with no enabled body sources, recorded
`no_change` and archived its outer thread. The owner's clock was migrated after
a supported graceful interrupt of an 85-minute historical-session scan; served
slot history was preserved and the old launchd clock was verified unloaded.
The next production pass remains distinct from that isolated acceptance.

The [acceptance record](https://github.com/openonion/connectonion/blob/v1.9.3rc21/docs/acceptance/1.9.3rc21/README.md) tracks exact checks,
publication and remaining gaps. Native desktop visuals, remote project layout,
sleep/wake and a long overnight production run are not established by these tests.
The file adapter was exercised on Codex desktop 26.924.22138; future storage or
ownership modes need revalidation. There is no native scheduling support claimed
for Linux or Windows in this preview.

Stable remains 1.9.2. Python 3.11+, cryptography 50.0.2, Pillow 13.0.0,
pypdf 6.21.2 and Paramiko 5.1.0 floors are retained. Python3.10 cannot take these
previews; use a supported interpreter for this release line. Package publication
is complete only when the matching PyPI version and GitHub prerelease are public.

This candidate also inherits the reviewed rc18 mailbox CLI already merged on
main: discover hosted domains and add aliases without replacing account defaults.
See [rc18 notes](1.9.3rc18.md) for that scope and its operational acceptance.

The package also inherits the reviewed rc19 email setup regression and installation
acceptance already on main; see [rc19 notes](1.9.3rc19.md).

Long tasks must wait for the actual CLI exit status before the native model ends
its turn. A production probe exposed premature reporting; the explicit waiting
contract passed a real180-second native execution with archive after completion.
Hour-long production acceptance remains separate from that controlled test.

It also inherits rc20's already-owned mailbox setup fix; see [rc20 notes](1.9.3rc20.md).
