# 1.8.8 — tested by strangers

The stable release after 1.8.7. Twelve previews (1.8.8b1 through b12) fed it.

What earns it the stable channel is how it was checked. Five testers installed
the published preview into empty profiles — no keys, no history — and used it
as a new user would: first run, the browser, every inbox, hosting one agent on
two devices, and the experimental commands. What they found was fixed, each
fix starting from a test that failed, and the same walks were run again on the
next published preview, three times in all (1.8.8b7, b9 and b11). The last
walk found nothing in hosting and one thing in benchmarks, fixed in b12.

![co schedule check, list, pause, and list again on a demo project](https://raw.githubusercontent.com/openonion/connectonion/v1.8.8/docs/releases/assets/v1.8.8/co-schedule.png)

## New in 1.8.8

- **One conversation on two devices.** A session can be open on a laptop and a
  phone at once, with the same identity, through the relay too; a turn started
  on one streams to the other, and switching devices keeps every turn. Every
  approval or question answer names the request it answers, so a stale tap on
  one device can never approve a different request on another.
- **Skill benchmarks.** `co benchmark` checks at least five cases written before
  the skill; `co eval run` scores the real Agent on them — PASS, FAIL or
  UNVERIFIED with the evidence — and compares each run with the one before. The
  agent under test cannot read the expected outcomes, and each attempt is
  capped at 10 steps; `co eval run` says what it will spend first.
- **`co browser network` and `cookies`**, with HAR recording, on the tab names
  `-t` already has. Every browser command ends within its deadline, and `close`
  always works.
- **`co schedule`** lists, checks, runs, pauses and resumes the entries in
  `.co/schedule.yaml`, and one slow entry no longer stops the others.
- **`connect()` from Python** honours its timeout as a deadline, surfaces
  approvals and questions (`on_approval=`, `on_ask=`), can `stop()` a turn, and
  names the session when a turn is lost.
- **Gemini image output** on `LLMResponse.images` and a `generate_image` tool,
  for direct Gemini keys and OpenRouter.

## Experimental, and labelled so

These ship in 1.8.8 and say "Experimental" in every help surface. Their
commands may change before they are declared stable:

- **Personal Wiki** (`co wiki`), which becomes long-term supported in 1.9.0.
  Scheduled runs are confined (Codex without network, Claude Code in
  `acceptEdits`) and ask for consent again when what they would do changes.
- **`co claude`**, Claude Code in a ConnectOnion Work Room. Headless runs do not
  load a cloned repository's settings, hooks or MCP servers.
- **`co discord`**, and `listen` / `receive` / `reply` on `co telegram` (its
  `send` is stable). Tested against fakes, not yet a live bot.
- **`co tiktok`** post plans. Nothing is uploaded.

## Fixed since 1.8.7

Each of these was reproduced on 1.8.7 itself; the bugs the previews introduced
and fixed along the way are in their notes.

- A visitor to an agent's Home page saw the owner's recent prompts. Each
  identity now sees only its own runs, and a bare stranger is refused by rule
  without an LLM call on the owner's credits.
- `co deploy` deleted a server's `.venv` when it was a symlink, because an
  rsync filter with a trailing slash matched directories only.
- `co auth status`, `login` and `logout` all signed you in; on a new machine
  `status` created an account. `status` now only reads, and an unknown word
  exits 2.
- `co create` then `python agent.py` told you nobody could onboard, because the
  project's `.env` was never read. It is, and the port is checked before the
  banner.
- Every `co outlook calendar` read failed on Python 3.10 once an event
  existed, because Graph writes seven fractional-second digits, and the error
  blamed the command's arguments. Graph times parse on every supported
  Python, and a local error is reported in its own words.
- httpx and pydantic had no upper bound, so the day httpx 1.0 is final an
  installed 1.8.7 can break (a development build of it already crashes every
  remote call). Both are capped below their next major.

## Known limits

- In the web client, a session open in two browsers answers approvals only
  with `@connectonion/react` 0.4.4-rc.6 or later; older clients are refused
  rather than guessed.
- `co whatsapp-cloud` waits on O API's messaging ingress and is not included.

## Install

```sh
python -m pip install --upgrade connectonion
co --version    # co 1.8.8
```

See the preview notes for the full history: [1.8.8b12](/releases/1.8.8b12.md) back to
[1.8.8b1](/releases/1.8.8b1.md).
