Skip to content

rebrand: mux -> cmux-tui (directory, binary, crates, workflows, wire identity) - #7710

Merged
lawrencecchen merged 1 commit into
mainfrom
feat-cmux-tui-rename
Jul 9, 2026
Merged

lawrencecchen merged 1 commit into
mainfrom
feat-cmux-tui-rename

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

Renames the Rust TUI subproject from mux/cmux-mux to cmux-tui everywhere users and CI see it: mux/ -> cmux-tui/, binary cmux-mux -> cmux-tui, crates -> cmux-tui-{core,cdp}/cmux-tui, workflows mux.yml -> cmux-tui.yml (+ release/nightly/build-package/artifacts), wire app string -> cmux-tui (protocol stays 6; conformance fixtures updated; published SDKs don't assert app).

Deliberately unchanged: trusted-publisher-pinned workflow filenames (tui-publish-, sdk-publish-), registry package names, environments. Compat shims: CMUX_TUI_SOCKET/CONFIG/TERM preferred with CMUX_MUX_* fallbacks (server exports both, all 5 SDKs prefer-new-fallback-old); user config cmux-tui.json preferred with legacy mux.json fallback; SDK release tags accept cmux-sdk-v* alongside mux-sdk-v*.

End-of-round grep audit for old names: zero hits outside documented compat/history. Local compile blocked (host zig issue) — bindings-e2e in CI is the proof the rename is coherent end to end.


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Note

Medium Risk
Wide rename touches CI, artifact URLs, and install paths; compat shims limit config/socket breakage, but R2 prefix mux/ → cmux-tui/ can break scripts still curling the old layout until updated.

Overview
This PR rebrands the Rust TUI multiplexer from mux / cmux-mux to cmux-tui: the tree lives under cmux-tui/, the shipped binary is cmux-tui, and workspace crates are cmux-tui, cmux-tui-core, and cmux-tui-cdp. GitHub workflows are renamed and retargeted (cmux-tui.yml, cmux-tui-build-package.yml, release/nightly/artifacts), including R2 publish paths from mux/ to cmux-tui/ and npm/PyPI packaging scripts that bundle cmux-tui-<target> artifacts.

The control socket identify app string and conformance fixtures now report cmux-tui (protocol version unchanged). SDK bindings, docs, and dist templates follow the new paths and default socket dir $TMPDIR/cmux-tui-<uid>/.

Backward compatibility is layered in: CMUX_TUI_* env vars with CMUX_MUX_* fallbacks (server still injects both socket vars into children), config prefers cmux-tui.json over legacy mux.json, and SDK publish workflows accept cmux-sdk-v* tags alongside mux-sdk-v*. Registry package names and several pinned workflow filenames (tui-publish-*, sdk-publish-*) are intentionally unchanged.

Reviewed by Cursor Bugbot for commit d344f08. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Rebranded the Rust TUI from mux to cmux-tui across code, builds, and wire identity. The binary, crates, workflows, and SDKs are updated with backward-compatible env/config shims; protocol stays 6.

  • Refactors

    • Renamed directory mux/ to cmux-tui/; binary cmux-mux to cmux-tui.
    • Renamed crates: mux-tui → cmux-tui, mux-core → cmux-tui-core, mux-cdp → cmux-tui-cdp.
    • Wire identify app is now "cmux-tui" (protocol 6); conformance fixtures updated.
    • Default socket path: $TMPDIR/cmux-tui-<uid>/<session>.sock.
    • CI workflows renamed to cmux-tui-*; artifact names/paths updated; R2 binaries now under https://files.cmux.com/cmux-tui/.
    • Go module path is github.com/manaflow-ai/cmux/cmux-tui/bindings/go.
  • Migration

    • Use the cmux-tui binary; scripts and workflows updated to build/package it.
    • Prefer CMUX_TUI_SOCKET, CMUX_TUI_CONFIG, CMUX_TUI_TERM; legacy CMUX_MUX_* env vars still work.
    • Config file prefers cmux-tui.json with mux.json fallback.
    • SDK release workflows accept cmux-sdk-v* tags alongside legacy mux-sdk-v*.

Written for commit d344f08. Summary will update on new commits.

Review in cubic

Directory mux/ -> cmux-tui/; binary cmux-mux -> cmux-tui; crates
mux-core/mux-cdp/mux-tui -> cmux-tui-core/cmux-tui-cdp/cmux-tui; wire
app identity cmux-mux -> cmux-tui (protocol stays 6, fixtures updated);
workflows mux.yml -> cmux-tui.yml etc (trusted-publisher-pinned filenames
untouched). Compat shims: CMUX_TUI_SOCKET/CONFIG/TERM preferred with
CMUX_MUX_* fallbacks (server exports both), config cmux-tui.json preferred
with mux.json fallback, cmux-sdk-v* tags accepted alongside mux-sdk-v*.
Grep audit clean.
@vercel

vercel Bot commented Jul 9, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jul 9, 2026 12:54pm
cmux-staging Building Building Preview, Comment Jul 9, 2026 12:54pm

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@greptile-apps

greptile-apps Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review. (165 files found, 100 file limit)

Bypass the limit by tagging @greptile-apps to review.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 158 files, which is 8 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: fc38bd97-b528-4e27-8de6-6b585e71968c

📥 Commits

Reviewing files that changed from the base of the PR and between a1c5295 and d344f08.

⛔ Files ignored due to path filters (7)
  • cmux-tui/Cargo.lock is excluded by !**/*.lock
  • cmux-tui/bindings/typescript/package-lock.json is excluded by !**/package-lock.json
  • cmux-tui/dist/RELEASING-TUI.md is excluded by !**/dist/**
  • cmux-tui/dist/npm/cmux/bin/cmux.js is excluded by !**/dist/**
  • cmux-tui/dist/npm/cmux/package.json is excluded by !**/dist/**
  • cmux-tui/dist/scripts/package_npm.py is excluded by !**/dist/**
  • cmux-tui/dist/scripts/package_pypi.py is excluded by !**/dist/**
📒 Files selected for processing (158)
  • .github/workflows/cmux-tui-artifacts.yml
  • .github/workflows/cmux-tui-build-package.yml
  • .github/workflows/cmux-tui-nightly.yml
  • .github/workflows/cmux-tui-release-cut.yml
  • .github/workflows/cmux-tui-release.yml
  • .github/workflows/cmux-tui.yml
  • .github/workflows/sdk-publish-crates.yml
  • .github/workflows/sdk-publish-go.yml
  • .github/workflows/sdk-publish-java.yml
  • .github/workflows/sdk-publish-npm.yml
  • .github/workflows/sdk-publish-python.yml
  • .github/workflows/tui-publish-npm.yml
  • .github/workflows/tui-publish-pypi.yml
  • cmux-tui/.gitignore
  • cmux-tui/Cargo.toml
  • cmux-tui/README.md
  • cmux-tui/bindings/RELEASING.md
  • cmux-tui/bindings/conformance/e2e.sh
  • cmux-tui/bindings/conformance/fixtures.json
  • cmux-tui/bindings/conformance/runner.py
  • cmux-tui/bindings/generate.sh
  • cmux-tui/bindings/go/README.md
  • cmux-tui/bindings/go/client.go
  • cmux-tui/bindings/go/cmd/e2e/main.go
  • cmux-tui/bindings/go/events.go
  • cmux-tui/bindings/go/go.mod
  • cmux-tui/bindings/go/types.go
  • cmux-tui/bindings/java/.gitignore
  • cmux-tui/bindings/java/README.md
  • cmux-tui/bindings/java/scripts/build.sh
  • cmux-tui/bindings/java/src/com/cmux/CmuxClient.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxCommandException.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxDecodeException.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxEvent.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxException.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxProtocolMismatchException.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxTimeoutException.java
  • cmux-tui/bindings/java/src/com/cmux/CmuxTransportException.java
  • cmux-tui/bindings/java/src/com/cmux/E2e.java
  • cmux-tui/bindings/java/src/com/cmux/EmptyEvent.java
  • cmux-tui/bindings/java/src/com/cmux/IdentifyResult.java
  • cmux-tui/bindings/java/src/com/cmux/Json.java
  • cmux-tui/bindings/java/src/com/cmux/JsonException.java
  • cmux-tui/bindings/java/src/com/cmux/NewWorkspaceRequest.java
  • cmux-tui/bindings/java/src/com/cmux/OutputEvent.java
  • cmux-tui/bindings/java/src/com/cmux/Pane.java
  • cmux-tui/bindings/java/src/com/cmux/ReadScreenResult.java
  • cmux-tui/bindings/java/src/com/cmux/ResizedEvent.java
  • cmux-tui/bindings/java/src/com/cmux/Screen.java
  • cmux-tui/bindings/java/src/com/cmux/Size.java
  • cmux-tui/bindings/java/src/com/cmux/SurfaceEvent.java
  • cmux-tui/bindings/java/src/com/cmux/SurfaceResizedEvent.java
  • cmux-tui/bindings/java/src/com/cmux/SurfaceResult.java
  • cmux-tui/bindings/java/src/com/cmux/Tab.java
  • cmux-tui/bindings/java/src/com/cmux/Tree.java
  • cmux-tui/bindings/java/src/com/cmux/TreeChangedEvent.java
  • cmux-tui/bindings/java/src/com/cmux/UnknownEvent.java
  • cmux-tui/bindings/java/src/com/cmux/VtStateEvent.java
  • cmux-tui/bindings/java/src/com/cmux/VtStateResult.java
  • cmux-tui/bindings/java/src/com/cmux/Workspace.java
  • cmux-tui/bindings/java/tests/com/cmux/JsonTest.java
  • cmux-tui/bindings/java/tests/com/cmux/StreamOpenTest.java
  • cmux-tui/bindings/java/tests/com/cmux/WireCaptureTest.java
  • cmux-tui/bindings/python/README.md
  • cmux-tui/bindings/python/cmux/__init__.py
  • cmux-tui/bindings/python/cmux/client.py
  • cmux-tui/bindings/python/e2e.py
  • cmux-tui/bindings/python/pyproject.toml
  • cmux-tui/bindings/rust/Cargo.toml
  • cmux-tui/bindings/rust/README.md
  • cmux-tui/bindings/rust/examples/e2e.rs
  • cmux-tui/bindings/rust/src/lib.rs
  • cmux-tui/bindings/styles/go.md
  • cmux-tui/bindings/styles/java.md
  • cmux-tui/bindings/styles/python.md
  • cmux-tui/bindings/styles/rust.md
  • cmux-tui/bindings/styles/typescript.md
  • cmux-tui/bindings/typescript/.gitignore
  • cmux-tui/bindings/typescript/README.md
  • cmux-tui/bindings/typescript/e2e/e2e.ts
  • cmux-tui/bindings/typescript/package.json
  • cmux-tui/bindings/typescript/src/client.ts
  • cmux-tui/bindings/typescript/src/errors.ts
  • cmux-tui/bindings/typescript/src/index.ts
  • cmux-tui/bindings/typescript/src/types.ts
  • cmux-tui/bindings/typescript/tsconfig.json
  • cmux-tui/crates/cmux-tui-cdp/Cargo.toml
  • cmux-tui/crates/cmux-tui-cdp/src/chrome.rs
  • cmux-tui/crates/cmux-tui-cdp/src/client.rs
  • cmux-tui/crates/cmux-tui-cdp/src/lib.rs
  • cmux-tui/crates/cmux-tui-cdp/tests/chrome_smoke.rs
  • cmux-tui/crates/cmux-tui-cdp/tests/fake_cdp.rs
  • cmux-tui/crates/cmux-tui-core/Cargo.toml
  • cmux-tui/crates/cmux-tui-core/src/browser.rs
  • cmux-tui/crates/cmux-tui-core/src/layout.rs
  • cmux-tui/crates/cmux-tui-core/src/lib.rs
  • cmux-tui/crates/cmux-tui-core/src/model.rs
  • cmux-tui/crates/cmux-tui-core/src/mux.rs
  • cmux-tui/crates/cmux-tui-core/src/platform.rs
  • cmux-tui/crates/cmux-tui-core/src/server.rs
  • cmux-tui/crates/cmux-tui-core/src/short_id.rs
  • cmux-tui/crates/cmux-tui-core/src/surface.rs
  • cmux-tui/crates/cmux-tui-core/tests/browser_runtime.rs
  • cmux-tui/crates/cmux-tui-core/tests/pty.rs
  • cmux-tui/crates/cmux-tui/Cargo.toml
  • cmux-tui/crates/cmux-tui/src/app.rs
  • cmux-tui/crates/cmux-tui/src/browser_input.rs
  • cmux-tui/crates/cmux-tui/src/cli.rs
  • cmux-tui/crates/cmux-tui/src/config.rs
  • cmux-tui/crates/cmux-tui/src/host_colors.rs
  • cmux-tui/crates/cmux-tui/src/keys.rs
  • cmux-tui/crates/cmux-tui/src/main.rs
  • cmux-tui/crates/cmux-tui/src/plugin_manager.rs
  • cmux-tui/crates/cmux-tui/src/session/mod.rs
  • cmux-tui/crates/cmux-tui/src/session/remote.rs
  • cmux-tui/crates/cmux-tui/src/session/tree.rs
  • cmux-tui/crates/cmux-tui/src/ui/graphics.rs
  • cmux-tui/crates/cmux-tui/src/ui/graphics_writer.rs
  • cmux-tui/crates/cmux-tui/src/ui/input.rs
  • cmux-tui/crates/cmux-tui/src/ui/mod.rs
  • cmux-tui/crates/cmux-tui/src/ui/omnibar.rs
  • cmux-tui/crates/cmux-tui/src/ui/overlay.rs
  • cmux-tui/crates/cmux-tui/src/ui/pane.rs
  • cmux-tui/crates/cmux-tui/src/ui/scrollbar.rs
  • cmux-tui/crates/cmux-tui/src/ui/sidebar.rs
  • cmux-tui/crates/cmux-tui/src/ui/terminal_grid.rs
  • cmux-tui/crates/cmux-tui/tests/cli.rs
  • cmux-tui/crates/ghostty-vt-sys/Cargo.toml
  • cmux-tui/crates/ghostty-vt-sys/build.rs
  • cmux-tui/crates/ghostty-vt-sys/src/lib.rs
  • cmux-tui/crates/ghostty-vt/Cargo.toml
  • cmux-tui/crates/ghostty-vt/src/key.rs
  • cmux-tui/crates/ghostty-vt/src/lib.rs
  • cmux-tui/crates/ghostty-vt/src/render.rs
  • cmux-tui/crates/ghostty-vt/src/terminal.rs
  • cmux-tui/crates/ghostty-vt/tests/terminal.rs
  • cmux-tui/docs/README.md
  • cmux-tui/docs/browser-panes.md
  • cmux-tui/docs/concepts.md
  • cmux-tui/docs/configuration.md
  • cmux-tui/docs/getting-started.md
  • cmux-tui/docs/keyboard.md
  • cmux-tui/docs/mouse.md
  • cmux-tui/docs/protocol.md
  • cmux-tui/rustfmt.toml
  • cmux-tui/scripts/measure-frames.py
  • cmux-tui/scripts/smoke-attach.py
  • cmux-tui/scripts/smoke-tui.py
  • cmux-tui/spec/README.md
  • cmux-tui/spec/bindings.md
  • cmux-tui/spec/cli.md
  • cmux-tui/spec/commands.md
  • cmux-tui/spec/events.md
  • cmux-tui/spec/plugins.md
  • cmux-tui/spec/transports.md
  • mux/bindings/go/go.mod
  • scripts/ci/detect_ci_change_areas.py
  • tests/test_ci_change_areas.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-cmux-tui-rename

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d344f08. Configure here.

fn run_attach(args: Args) -> anyhow::Result<()> {
let socket_path =
args.socket.unwrap_or_else(|| mux_core::server::default_socket_path(&args.session));
args.socket.unwrap_or_else(|| cmux_tui_core::server::default_socket_path(&args.session));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Attach ignores socket env vars

Medium Severity

cmux-tui attach resolves the control socket only from --socket or the default session path, while one-shot CLI verbs use CMUX_TUI_SOCKET and legacy CMUX_MUX_SOCKET. After this rebrand, attach can miss the session that other entrypoints reach via those variables.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit d344f08. Configure here.

@lawrencecchen
lawrencecchen merged commit d675f0a into main Jul 9, 2026
40 of 43 checks passed
lawrencecchen added a commit that referenced this pull request Jul 10, 2026
…ommitted mux/target (#7815)

* Remove accidentally committed mux/target build artifacts

f38b303 merged 959 files of
cargo build output under mux/target/. The mux/ dir was renamed to
cmux-tui/ in the rebrand (#7710), which moved mux/.gitignore away and
left old checkouts' untracked mux/target unprotected. Delete the
artifacts and ignore /mux/ so stale local dirs can't be committed.

* cmux-tui: fix ghostty-vt static lib name for windows-gnu

The windows experimental CI job has failed on every run since it was
added in #7346: rustc's *-windows-gnu targets search for
native static libs only as lib<name>.a, but zig installs the Windows
archive as ghostty-vt-static.lib, so linking died with 'could not find
native static library ghostty-vt-static'. Copy the archive to
libghostty-vt-static.a in the build script before emitting the link
directive. Also unbreaks the windows-gnu lane of
cmux-tui-build-package.yml, which links the same crate.

* cmux-tui: cfg-gate unix-only signal and stdin-probe paths

With the ghostty-vt-static link fixed, the windows-gnu build surfaced
the next layer: raw libc calls in the TUI binary. Follow the existing
host_colors.rs pattern: SIGTERM/SIGINT/SIGHUP handlers and the
poll(2)-based stdin reads behind the kitty-graphics and cell-size
probes are #[cfg(unix)], with windows stubs (no signal handlers,
probes report no response so callers fall back to defaults).

This branch was successfully deployed

1 active deployment
Preview – cmux — d344f08b Deployed Jul 9, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant