cmux/TODO.md
Lawrence Chen 10ee9f4f5d Add README translations for 17 languages
Added language selector bar to README and translated READMEs for:
zh-CN, zh-TW, ko, de, es, fr, it, da, ja, pl, ru, bs, ar, no, pt-BR, th, tr
2026-02-14 21:51:52 -08:00

5.4 KiB

TODO

Socket API / Agent

  • Add window handles + window.list/current/focus/create/close for multi-window socket control (v2) + v1 equivalents (list_windows, etc) + CLI support.
  • Add surface move/reorder commands (move between panes, reorder within pane, move across workspaces/windows).
  • Add browser automation API inspired by vercel-labs/agent-browser, but backed by cmux's WKWebView (wait, click, type, eval, screenshot, etc.).
  • Finalize browser parity contract and command mapping decisions in docs/agent-browser-port-spec.md.
  • Add cmux browser command surface that mirrors agent-browser semantics and targets explicit surface_id handles.
  • Add short handle refs (surface:N, pane:N, workspace:N, window:N) and CLI --id-format refs|uuids|both output control.
  • Add v1->v2 compatibility shim for migrated browser/topology commands while v1 remains supported.
  • Port browser automation coverage to tests_v2/ per docs/agent-browser-port-spec.md and keep v1 + v2 suites green.
    • Added tests_v2/test_browser_api_comprehensive.py, tests_v2/test_browser_api_p0.py, tests_v2/test_browser_api_extended_families.py, tests_v2/test_browser_api_unsupported_matrix.py, and tests_v2/test_browser_cli_agent_port.py.
    • Full VM runs: ./scripts/run-tests-v1.sh and ./scripts/run-tests-v2.sh passing (v2 visual D12 remains reported as a known non-blocking VM failure, matching v1 policy).
  • Fix cmux browser open|open-split|new URL parsing so routing flags (--workspace, --window) are removed before URL construction.
  • Fix identify --workspace/--surface caller parsing to honor ref handles (workspace:N, surface:N) instead of falling back to current/focused IDs.
  • Update browser.open_split placement policy: reuse nearest right sibling pane first (nested-aware), only create a new split when caller has no right sibling.
  • Upgrade browser.snapshot to agent-browser-style output (snapshot tree text + refs) and make non-JSON CLI output print snapshot content instead of OK.
  • Add richer selector failure diagnostics (hint, counts, sample, snapshot excerpt) with bounded retries for transient not_found races.
  • Add regression coverage for browser placement policy + snapshot/ref output + diagnostics in v2 tests.
  • Allow browser fill with empty text (clear input) in CLI + v2 API flows.
  • Make legacy new-pane/new-surface CLI output prefer short surface:N refs by default.
  • Add optional --snapshot-after / snapshot_after action feedback to include a fresh post-action browser snapshot.
  • Switch CLI --json default ID output to refs-first (UUIDs only via --id-format uuids|both) and add regression coverage.
  • Expand end-user skill docs with deep-linkable cmux-browser references/templates plus a new core skills/cmux/ topology skill.

Command Palette

  • Add cmd+shift+p palette with all commands

Feature Requests

  • Warm pool of Claude Code instances mapped to a keyboard shortcut

Claude Code Integration

  • Add "Install Claude Code integration" menu item in menubar
    • Opens a new terminal
    • Shows user the diff to their config file (claude.json, opencode config, codex config, etc.)
    • Prompts user to type 'y' to confirm
    • Implement as part of cmux CLI, menubar just triggers the CLI command

Additional Integrations

  • Codex integration
  • OpenCode integration

Browser

  • Per-WKWebView local proxy for full network request/response inspection (URL, method, headers, body, status, timing)

UI/UX Improvements

  • Add question mark icon to learn shortcuts
  • Notification popover: each button item should show outline outside when focused/hovered
  • Notification popover: add right-click context menu to mark as read/unread

Analytics

  • Add PostHog tracking (set PostHogAnalytics.apiKey in Sources/PostHogAnalytics.swift)

Browser Parity Completion (agent-browser port)

  • Implement locator family:
    • browser.find.role
    • browser.find.text
    • browser.find.label
    • browser.find.placeholder
    • browser.find.alt
    • browser.find.title
    • browser.find.testid
    • browser.find.first
    • browser.find.last
    • browser.find.nth
  • Implement frame/dialog/download:
    • browser.frame.select
    • browser.frame.main
    • browser.dialog.accept
    • browser.dialog.dismiss
    • browser.download.wait
  • Implement session/context state APIs:
    • browser.cookies.get|set|clear
    • browser.storage.get|set|clear
    • browser.tab.new|list|switch|close
    • browser.state.save|load
  • Implement developer/diagnostic helpers:
    • browser.console.list|clear
    • browser.errors.list
    • browser.highlight
    • browser.addinitscript
    • browser.addscript
    • browser.addstyle
  • Add explicit not_supported for WebKit/CDP-gap commands:
    • browser.viewport.set
    • browser.geolocation.set
    • browser.offline.set
    • browser.trace.start|stop
    • browser.network.route|unroute|requests
    • browser.screencast.start|stop
    • browser.input_mouse|input_keyboard|input_touch
  • Extend cmux browser ... CLI grammar for the new families (including aliases).
  • Port/add v2 tests for all newly implemented families.
  • Update unsupported matrix tests to assert not_supported for hard platform gaps (instead of method_not_found).
  • Re-run full run-tests-v1.sh and run-tests-v2.sh on cmux-vm.