Skip to content

v0.2.0 Release Notes

Codex Remote Control Lab v0.2.0

v0.2.0 is the phone bridge continuity release. It covers the changes from v0.1.0 through the release/v0.2.0 branch and focuses on making the browser bridge feel like one shared Codex control surface across desktop and mobile.

Highlights

  • Default startup URLs now join one shared bridge-managed thread. Opening the same /?token=... URL from a phone and another browser no longer creates separate default bridge sessions.
  • The phone bridge can attach to an existing headless Codex app-server over CODEX_APP_SERVER_URL or CODEX_APP_SERVER_SOCK, which supports Remote Connection workflows without exposing the Codex app-server on the LAN.
  • History sync is enabled by default. After turns complete, OCdex warms the app-server history with thread/read and scan-backed thread/list calls so Codex Desktop can rediscover updated sessions after reopen or refresh.
  • The browser UI now includes a Codex Desktop-like layout with thread navigation, artifact previews, model/config/plugin/auth panels, image attachments, approval controls, live run-state messaging, and selectable themes.

Review Hardening

  • /api/thread polling now uses thread/read first and falls back to thread/resume only when needed.
  • API-side app-server requests reuse a persistent WebSocket RPC client instead of opening a fresh app-server connection for every request.
  • Selected-thread refreshes and background thread-list polling avoid overlapping requests or repeated error spam.
  • Bridge history is capped to the latest 80 entries after live updates, matching the initial thread load behavior.
  • Startup notifications no longer send undefined click URLs when no LAN IPv4 address is detected.

Operator Notes

  • Keep the Codex app-server bound to 127.0.0.1; expose only the token-protected bridge on the LAN.
  • Use a private notification topic, account, or Discord channel because startup notifications include the tokenized bridge URL when a LAN URL is available.
  • For live Codex Desktop sync, point both Desktop Remote Connection and OCdex at the same headless app-server. The normal local Desktop conversation view uses a private stdio app-server and is not a live injection target.

Validation

  • npm run check
  • npm test (18 tests)
  • npm run docs:build
  • git diff --check
  • Local bridge smoke test of /api/info, /api/threads, and /api/thread
  • GitHub Actions verify on PR #2

Read the companion walkthrough: v0.2.0 Phone Bridge Walkthrough.