Skip to content

v0.4.0 Release Notes

Codex Remote Control Lab v0.4.0

v0.4.0 covers the changes from v0.3.0 through the release/v0.4.0 branch. It focuses on making the phone bridge more dependable on real mobile screens while improving the operator surfaces that help a running bridge explain what it can do, what provider it is using, and what state the active turn is in.

Highlights

  • Mobile artifact cards now open the intended artifact from chat and review digest cards, including nested tap targets and narrow phone layouts.
  • The composer avoids iOS focus zoom by keeping text inputs at mobile-safe font sizes while preserving normal browser zoom.
  • Slash skill discovery now reads real installed plugin skill files, retries after temporary skill lookup failures, and handles full-width mobile slash input.
  • The plugin panel defaults to installed or enabled entries so operators do not have to sort through marketplace-only entries while working from a phone.
  • Thread switching keeps the previous visible history until the selected thread is ready and ignores stale ready messages from earlier switches.
  • The bridge exposes clearer run state for reconnecting, interrupting, approval, completion, and failure states.

Bridge Reliability

  • Reconnect-style Codex stream errors are normalized into a bridge status instead of dumping raw reconnect payloads into chat.
  • Background thread polling suppresses repeated disconnect errors after a browser bridge closes, keeping the conversation readable during short app-server restarts or token mismatches.
  • Pending turn interrupts are deferred until the turn exists, and queued sends are discarded when the operator interrupts a run.
  • Task notifications can fire for completed, failed, and approval-waiting Codex turns through the existing opt-in notification channels.

Provider And Status Surfaces

  • npm run phone:claude starts the same browser bridge UI against Claude Code by setting PHONE_AGENT_PROVIDER=claude.
  • Claude mode reads same-workdir Claude Code JSONL sessions for the sidebar, while Codex-only plugin lookup, live approval callbacks, and history sync stay disabled.
  • Optional Codex rate-limit display can be enabled with PHONE_CODEX_RATE_LIMIT_REFRESH_COMMAND="node scripts/read-desktop-rate-limits.js".
  • The rate-limit reader uses the local Codex auth file to fetch normalized remaining percentage and reset metadata, then the bridge caches only the display snapshot.
  • Workspace metadata refreshes are cached so status strips can show repo, branch, and location without repeatedly blocking on Git.

Docs, Evidence, And Public Safety

  • The release adds proof assets for mobile artifact tapping, mobile slash skill insertion, real installed skill discovery, and iOS input zoom protection.
  • CI now installs Chromium for Playwright-backed tests before running the Node test suite.
  • CONTRIBUTING.md, docs/guide/contributing.md, and docs/ja/guide/contributing.md document the public-safe upstream PR path.
  • Generated campaign/release scratch files under tmp/ are no longer tracked, and .gitignore now also covers local rate-limit and workspace cache files.
  • AGENTS.md now records the expectation that UI/browser behavior be checked with both script-based Playwright tests and browser-use:browser evidence.

Validation

  • npm test
  • npm run check
  • npm run docs:build
  • gh pr checks 37 --repo Sunwood-ai-labs/codex-remote-control-lab
  • git diff --check origin/main...origin/release/v0.4.0
  • xmllint --noout docs/public/release-header-v0.4.0.svg

Read the companion walkthrough: v0.4.0 Mobile Reliability Walkthrough.