v0.4.0 Release Notes
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.
Release Links
- English release notes: https://sunwood-ai-labs.github.io/codex-remote-control-lab/guide/releases/v0.4.0
- Japanese release notes: https://sunwood-ai-labs.github.io/codex-remote-control-lab/ja/guide/releases/v0.4.0
- English walkthrough: https://sunwood-ai-labs.github.io/codex-remote-control-lab/guide/articles/v0.4.0-mobile-reliability
- Japanese walkthrough: https://sunwood-ai-labs.github.io/codex-remote-control-lab/ja/guide/articles/v0.4.0-mobile-reliability
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:claudestarts the same browser bridge UI against Claude Code by settingPHONE_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, anddocs/ja/guide/contributing.mddocument the public-safe upstream PR path.- Generated campaign/release scratch files under
tmp/are no longer tracked, and.gitignorenow also covers local rate-limit and workspace cache files. AGENTS.mdnow records the expectation that UI/browser behavior be checked with both script-based Playwright tests andbrowser-use:browserevidence.
Validation
npm testnpm run checknpm run docs:buildgh pr checks 37 --repo Sunwood-ai-labs/codex-remote-control-labgit diff --check origin/main...origin/release/v0.4.0xmllint --noout docs/public/release-header-v0.4.0.svg
Read the companion walkthrough: v0.4.0 Mobile Reliability Walkthrough.