Skip to content

Report and stop stale cmux-tui servers - #8769

Closed
lawrencecchen wants to merge 623 commits into
mainfrom
feat-tui-server-upgrade
Closed

lawrencecchen wants to merge 623 commits into
mainfrom
feat-tui-server-upgrade

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • stamp packaged TUI binaries with their distribution release identity
  • reject mismatched local attach and control paths with exact server and client details
  • add cmux-tui server status and stop, including local shutdown and an older Unix-server fallback
  • warn that stopping the server exits pane processes

Tests

  • cargo test -p cmux-tui-core
  • cargo test -p cmux-tui --test cli
  • cargo clippy -p cmux-tui --all-targets -- -D warnings
  • actionlint .github/workflows/cmux-tui-build-package.yml

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Stops stale local cmux-tui servers, upgrades them in place, and hardens the macOS terminal lifecycle so stuck closes never block new terminals. Adds restartable local shutdown with health reporting, pane-visible capacity errors, and deterministic cleanup so stale state can’t block new sessions.

  • New Features

    • Protocol/SDKs: adds shutdown; identify returns shutdown_cleanup; regenerated SDKs (102 commands, 46 events); preserves stream_end when a delivery queue is full.
    • macOS runtime/UI: bounds native-surface ownership from create to free; two close workers with watchdogs gate new creation; bounded overflow FIFO with a localized pane error that clears on success; awaitable teardown tickets.
    • Process/Network: introduces cmux-tui-process to wrap atomic TCP/Unix bind/accept/connect and guard process/PTY creation; fences remote socket creation/inheritance; bounds WebSocket server and browser-transport shutdown; targets terminal-host and workspace cleanup exactly with receipts kept across retries; reaps provider peers; cmux-pty can remove env keys; publishes machine identity atomically.
    • CI/Packaging: builds stamped via VERSION; sets and verifies MACOSX_DEPLOYMENT_TARGET; validates TUI package launchers; cmux-tui.yml supports use_blacksmith_macos and pinned runners.
  • Migration

    • If attach/control is rejected: run cmux-tui server status, then cmux-tui server stop, then start the new binary; stopping exits pane processes.
    • OS floors: Linux 5.1+ with /proc and permission for pidfd_send_signal (5.1–5.2 use exact /proc/<pid> handles). Published cmux-tui packages require macOS 15+.

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

Review in cubic

Summary by CodeRabbit

  • New Features
    • Added cmux-tui server status and cmux-tui server stop, plus a local-only shutdown command.
    • identify/ping now exchange release identity (version, build stamps) and protocol for compatibility checks.
    • attach-surface --cols now requires server support.
  • Bug Fixes
    • Improved attach/start behavior and compatibility/mismatch reporting.
    • More orderly shutdown with coordinated surface/terminal cleanup and timeout-aware host termination.
  • Documentation
    • Updated headless server/attach and protocol command-contract guidance.
  • Tests
    • Expanded coverage for shutdown, compatibility, and legacy stop scenarios.
  • Chores
    • CI now stamps artifacts and verifies artifact identity; added launcher validation.

Note

High Risk
Changes native pointer ownership, teardown concurrency, and close-path admission across create/deinit/hibernate—core macOS terminal stability—with a large new surface area despite heavy tests.

Overview
macOS terminal runtime now treats every Ghostty surface as a bounded ownership reservation from ghostty_surface_new until ghostty_surface_free completes. TerminalSurfaceRuntimeTeardownCoordinator is reworked: teardown runs on gated utility-priority threads instead of DispatchQueue, submissions go through an ingress drain, and two close workers with 5s watchdogs can fence new creation when both slots are busy or fully stalled.

When admission is saturated, creation is deferred or queued in a bounded overflow FIFO (per-surface weak refs, batched MainActor rescans) rather than scanning the full registry. If both close workers exceed the watchdog, deferred surfaces get a visible pane error (“too many sessions still closing”) while keeping FIFO order for retries after a late free returns. TerminalSurface wires this through create/teardown/deinit/hibernate paths, returns awaitable teardown tickets, and panes implement show/clear runtime creation failure on TerminalSurfacePaneHosting.

CI / packaging stamps builds via VERSION, sets MACOSX_DEPLOYMENT_TARGET from macos-deployment-target.txt with post-build verification, runs verify_artifact_identity.py on native, npm, and PyPI smoke paths, adds TUI package launcher validation, and lets cmux-tui.yml pick macOS runners via use_blacksmith_macos.

Tests add extensive TerminalSurfaceRestoreSpawnSchedulerTests coverage for admission recovery, overflow ordering, stalled-close failure batches, and lifecycle cancellation.

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

@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.

@coderabbitai

coderabbitai Bot commented Jul 23, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The change introduces shared release identity metadata, local server status and stop commands, protocol shutdown handling, peer-process validation, and shutdown propagation through TUI and headless execution. Build workflows stamp and verify distribution identities.

Changes

Release identity and compatibility metadata

Layer / File(s) Summary
Release identity and build stamping
cmux-tui/crates/cmux-tui-core/{build.rs,src/lib.rs,src/release.rs,src/server.rs}, cmux-tui/crates/cmux-tui/src/{main.rs,session/remote.rs}, .github/workflows/cmux-tui-build-package.yml
Builds stamp source and distribution metadata; ReleaseIdentity supplies protocol and build identity fields used by server and client compatibility checks.
Compatibility contracts and artifact validation
cmux-tui/docs/*, cmux-tui/spec/commands.md, .github/workflows/*
Protocol contracts, release matching rules, lifecycle exceptions, and package identity verification are documented and exercised in CI.

Shutdown protocol and propagation

Layer / File(s) Summary
Shutdown fencing and cleanup
cmux-tui/crates/cmux-tui-core/src/{mux.rs,surface.rs,terminal_host_runtime.rs}
Mux shutdown state blocks new surface creation, waits for in-flight creation, and performs bounded surface and terminal-host cleanup.
Shutdown propagation
cmux-tui/crates/cmux-tui-core/src/server.rs, cmux-tui/crates/cmux-tui/src/{app.rs,main.rs,session/*}
Authorized local shutdown requests update mux state and terminate server, TUI, machine-client, and headless execution paths.

Local server lifecycle

Layer / File(s) Summary
Server probing and lifecycle commands
cmux-tui/crates/cmux-tui/src/{cli.rs,server_lifecycle.rs,localization.rs}, cmux-tui/crates/cmux-tui-core/src/platform.rs
server status and server stop inspect identity, enforce compatibility, request shutdown, verify peer PIDs, support Unix legacy termination, and render localized or JSON output.
Lifecycle integration tests
cmux-tui/crates/cmux-tui/tests/cli.rs, cmux-tui/crates/cmux-tui/src/machine_provider_runtime.rs
Integration fixtures cover compatible and incompatible servers, orderly and legacy stopping, PID spoof rejection, transport buffering, and identity-shaped responses.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant ServerLifecycle
  participant ControlServer
  participant Mux
  CLI->>ServerLifecycle: inspect identify
  ServerLifecycle->>ControlServer: send identify
  ControlServer-->>ServerLifecycle: release identity and capabilities
  CLI->>ServerLifecycle: stop
  ServerLifecycle->>ControlServer: send shutdown
  ControlServer->>Mux: request_shutdown and close surfaces
  Mux-->>ControlServer: shutdown state
  ControlServer-->>ServerLifecycle: acknowledgement and disconnect
Loading

Possibly related PRs


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
Cmux Algorithmic Complexity ❌ Error cmux-tui/src/server_lifecycle.rs line 491 dedupes captured owners with owners.iter().any(...) inside the per-surface loop, making legacy stop O(n²). Track seen owner IDs in a HashSet (or dedupe once after collection) so shutdown cleanup stays one-pass; add a benchmark if larger bounds are intended.
Docstring Coverage ⚠️ Warning Docstring coverage is 49.61% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ⚠️ Warning The description includes summary and testing details but omits the required Demo Video, Review Trigger, and Checklist sections. Add the missing Demo Video, Review Trigger, and Checklist sections, and complete each required item.
✅ Passed checks (22 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed No Swift files were changed in the diff, so no new or worsened actor-isolation issues were introduced.
Cmux Swift Blocking Runtime ✅ Passed PASS: The PR diff contains no Swift files; it only changes Rust/docs/workflows, so the Swift blocking-runtime rule is not applicable.
Cmux Browser Automation Off-Main ✅ Passed The PR touches only Rust/docs files; no Swift changes in the rule’s target files, and no browser.* routing or socketWorkerMethods changes appear in the diff.
Cmux Expensive Synchronous Load ✅ Passed PASS: The diff has no Swift files or SwiftUI/@mainactor changes; it only touches Rust, docs, and workflows, so the Swift sync-load rule is inapplicable.
Cmux Cache Substitution Correctness ✅ Passed No offending cache substitution found; shutdown snapshots use fresh capture plus generation-based refresh, and this PR is Rust/YAML rather than Swift/TS/JS.
Cmux No Hacky Sleeps ✅ Passed No hacky sleeps in changed scripts/workflows; the only sleeps are bounded, cancellation-aware retry/cleanup loops with tests.
Cmux Swift Concurrency ✅ Passed The diff contains no changed .swift files, so it does not introduce or expand Swift async/concurrency patterns.
Cmux Swift @Concurrent ✅ Passed No Swift files changed in the diff, so the @concurrent rule is not applicable.
Cmux Swift Package Boundaries ✅ Passed Diff contains no Swift files; only Rust, docs, and CI changes, so the Swift package-boundary rule is not applicable.
Cmux Swiftpm Lockfiles ✅ Passed No SwiftPM/Xcode package files, lockfiles, or cmux-owned .gitignore changes appear in the diff; the workflow edits are Rust packaging only.
Cmux Swift Logging ✅ Passed No changed Swift files in the PR, so the Swift logging rule is not applicable.
Cmux User-Facing Error Privacy ✅ Passed Changed user-facing copy stays generic, and shutdown errors are localized instead of echoing raw upstream details.
Cmux Full Internationalization ✅ Passed New server UI copy is routed through localization.rs, and both supported catalogs (EN/JP) include matching entries; no other localized surfaces were added.
Cmux Swiftui State Layout ✅ Passed No SwiftUI sources in cmux-tui were touched; the PR changes are Rust/docs/workflows only, so the SwiftUI state/layout rule is inapplicable.
Cmux Architecture Rethink ✅ Passed The commit diff contains no Swift source changes, so the Swift architectural-rethink rule is not applicable.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed No Swift files changed in the PR diff, so the cmux auxiliary-window close-shortcut rule is not applicable.
Cmux Source Artifacts ✅ Passed All changed paths are intentional source/docs/tests/config files; no scratch, cache, build-output, or artifact directories appeared in the diff.
Cmux No Test Or Debug Seam In Production Source ✅ Passed No Swift production Sources files were changed; the diff only touches cmux-tui Rust/docs/workflow files, so the seam rule is not applicable.
Cmux No Ambient Global State ✅ Passed The commit changes only Rust/docs files; no Swift sources or new ambient global state/singletons were added, so the Swift-specific rule doesn’t apply.
Title check ✅ Passed The title clearly summarizes the main change: reporting and stopping stale cmux-tui servers.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-tui-server-upgrade

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.

@greptile-apps

greptile-apps Bot commented Jul 23, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds cmux-tui server status and cmux-tui server stop subcommands, stamps TUI binaries with a distribution release identity (version, build commit, Ghostty commit, protocol), and blocks attach/control connections when client and server builds do not match exactly. It also introduces a legacy-server fallback path that quarantines the socket, drains pane sessions, freezes the process tree, and delegates to a detached helper subprocess, plus a ServerProcessShutdownGuard watchdog that force-exits if the frontend gets stuck after cleanup.

  • Release identity: build.rs now derives a stable CMUX_TUI_SOURCE_COMMIT (git hash or content fingerprint) at compile time so every build — even local — has a non-null identity; release.rs bundles version, build commit, Ghostty commit, and protocol into ReleaseIdentity, compared by release_mismatches before attach/control proceeds.
  • Shutdown command: Command::Shutdown calls close_all_surfaces_for_shutdown() (atomically drains all surfaces under a coordinator lock, stops surface creation, and terminates PTY sessions), sends a confirmed ACK via send_control_confirmed, then calls request_shutdown() only after the write is proven delivered. Errors are converted to the stable shutdown_cleanup_incomplete code.
  • Legacy stop: A detached __legacy-stop-helper subprocess quarantines the control socket, verifies PID/start-time ownership, iteratively closes pane sessions with exact pidfd//proc handles, and terminates the server process tree with SIGSTOP/SIGKILL fencing; a persistent LegacyHelperReaper thread reaps the helper after it exits.

Confidence Score: 5/5

This PR is safe to merge. The shutdown path is well-coordinated, all user-facing errors are localized, and the surface-close issue flagged in the previous review is addressed by the new atomic drain design.

The core shutdown flow is heavily tested: confirmed ACK writes, coordinator-locked surface drain, retry backoff in ServerShutdownCleanup, and a watchdog that force-exits after cleanup. Error messages from close_all_surfaces_for_shutdown are consistently converted to the stable shutdown_cleanup_incomplete code before leaving the server. The legacy stop path quarantines the socket atomically before spawning the helper, verifies PID ownership, and fences the process tree before any SIGKILL. Both English and Japanese localization strings are complete. Build.rs guarantees a non-null identity for every build. No correctness regressions found.

Files Needing Attention: No files require special attention. The server_lifecycle.rs and legacy_process.rs additions are large but well-structured and covered by the CLI integration tests.

Important Files Changed

Filename Overview
cmux-tui/crates/cmux-tui/src/server_lifecycle.rs New 2175-line file implementing ServerLifecycle, ServerProbe, LegacySocketQuarantine, LegacyHelperReaper, and the full stop/status logic; introduces the detached legacy-stop coordination path with deadline-bounded polling.
cmux-tui/crates/cmux-tui/src/server_lifecycle/legacy_process.rs 977-line file adding exact pidfd/proc-fallback process-identity capture, SIGSTOP fencing for process trees, and PTY session drain logic for legacy server teardown.
cmux-tui/crates/cmux-tui-core/src/server.rs Adds Command::Shutdown, confirmed-write send_control_confirmed, SERVER_SHUTDOWN_CAPABILITY advertisement, ControlOutbound with completion channels, and advertised_capabilities(). All error paths convert internal details to the stable shutdown_cleanup_incomplete code.
cmux-tui/crates/cmux-tui-core/src/mux.rs Adds close_all_surfaces_for_shutdown() (atomically drains surfaces under coordinator lock), ShutdownOwnerLedger, ShutdownOwnerReconciler, and mux.shutdown() with retry/backoff. Large diff but design is coherent and heavily tested.
cmux-tui/crates/cmux-tui/src/main.rs Adds ServerProcessShutdownGuard watchdog that force-exits if the frontend is stuck after cleanup, routes __legacy-stop-helper subprocess, and wires server_process.shutdown()/complete() into the server run loop.
cmux-tui/crates/cmux-tui-core/src/release.rs New 108-line module exposing ReleaseIdentity with version, build_commit, ghostty_commit, protocol; distribution_version() falls back to CARGO_PKG_VERSION while stamped_build_commit() reads three env-var layers including the new CMUX_TUI_SOURCE_COMMIT from build.rs.
cmux-tui/crates/cmux-tui-core/build.rs New build script that derives a stable content identity (git commit or FNV content fingerprint) for both the cmux-tui and Ghostty source trees, ensuring build_commit is never None even for local builds.
cmux-tui/crates/cmux-tui/src/localization.rs Adds ServerMessages struct with all new user-facing strings; both English and Japanese translations are complete, using three-fragment restart instruction.
cmux-tui/crates/cmux-tui/src/cli.rs Adds server verb routing to run_server_lifecycle; migrates identify/capability checks to the new ServerProbe::inspect call.
cmux-tui/dist/scripts/package_pypi.py Adds _launcher_command() that heuristically detects uvx/pipx from argv0 path components; fallback is safely shlex.quote(argv0).
cmux-tui/crates/cmux-tui/tests/cli.rs Large expansion of CLI integration tests covering server stop (modern and legacy paths), compatibility rejection, shutdown cleanup errors, and launcher command detection.

Reviews (62): Last reviewed commit: "fix(tui): transfer legacy socket ownersh..." | Re-trigger Greptile

Comment thread cmux-tui/crates/cmux-tui/src/cli.rs Outdated
Comment thread cmux-tui/crates/cmux-tui/src/localization.rs Outdated

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/cmux-tui-build-package.yml:
- Line 110: Update the package job steps using CMUX_TUI_DISTRIBUTION_VERSION to
avoid interpolating inputs.version directly into Bash source. Define the release
version through each step’s env mapping, then consume the environment variable
in the affected commands at the referenced occurrences.

In `@cmux-tui/crates/cmux-tui/src/cli.rs`:
- Around line 699-708: Update the `stop` failure branch and the `connect`
failure branch in the CLI command match to use anyhow’s alternate error
formatter, preserving and printing the complete cause chain instead of only the
outermost context.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 223e5034-e4b2-4da3-8ed9-c169afaa73c7

📥 Commits

Reviewing files that changed from the base of the PR and between d2d0ec4 and 9c78742.

⛔ Files ignored due to path filters (1)
  • cmux-tui/dist/RELEASING-TUI.md is excluded by !**/dist/**
📒 Files selected for processing (16)
  • .github/workflows/cmux-tui-build-package.yml
  • cmux-tui/crates/cmux-tui-core/src/lib.rs
  • cmux-tui/crates/cmux-tui-core/src/mux.rs
  • cmux-tui/crates/cmux-tui-core/src/release.rs
  • cmux-tui/crates/cmux-tui-core/src/server.rs
  • cmux-tui/crates/cmux-tui/src/app.rs
  • cmux-tui/crates/cmux-tui/src/cli.rs
  • cmux-tui/crates/cmux-tui/src/localization.rs
  • cmux-tui/crates/cmux-tui/src/main.rs
  • cmux-tui/crates/cmux-tui/src/server_lifecycle.rs
  • cmux-tui/crates/cmux-tui/src/session/mod.rs
  • cmux-tui/crates/cmux-tui/src/session/remote.rs
  • cmux-tui/crates/cmux-tui/tests/cli.rs
  • cmux-tui/docs/getting-started.md
  • cmux-tui/docs/protocol.md
  • cmux-tui/spec/commands.md

Comment thread .github/workflows/cmux-tui-build-package.yml Outdated
Comment thread cmux-tui/crates/cmux-tui/src/cli.rs Outdated

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmux-tui/crates/cmux-tui/src/app.rs`:
- Line 4172: Update App::shutdown_requested() to include
self.session.daemon_shutdown_requested() in its combined shutdown check, making
it the single source of truth for all shutdown signals. Then remove the
redundant !self.session.daemon_shutdown_requested() condition from the
event-loop while condition and any corresponding duplicate condition in the
related shutdown path around the additional referenced code.

In `@cmux-tui/crates/cmux-tui/src/localization.rs`:
- Around line 23-46: Extend ServerMessages and both ENGLISH and JAPANESE
catalogs with entries for not_a_session, too_many_surfaces,
close_surface_failed, and attach_initial_size_unsupported. In
cmux-tui/crates/cmux-tui/src/server_lifecycle.rs lines 20-51, replace the raw
session-validation error with the catalog entry; in lines 157-187, replace both
raw surface-close errors; and in cmux-tui/crates/cmux-tui/src/cli.rs lines
612-619, replace the raw initial-attach sizing error. Use the localized entries
consistently with neighboring ServerMessages errors.

In `@cmux-tui/crates/cmux-tui/src/server_lifecycle.rs`:
- Around line 251-287: Enforce RESPONSE_TIMEOUT on every iteration of
read_matching_response and wait_for_disconnect, not only when read_line returns
WouldBlock or TimedOut. Add an unconditional deadline check at the top of each
loop and return the existing timeout failure once expired, including replacing
wait_for_disconnect’s shutdown_timed_out-only guard. Preserve processing of
unrelated events and notifications while the deadline has not elapsed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ee046a8b-2207-4b09-8ba5-59c92c1a625e

📥 Commits

Reviewing files that changed from the base of the PR and between 9c78742 and f1484e7.

📒 Files selected for processing (15)
  • .github/workflows/cmux-tui-build-package.yml
  • cmux-tui/crates/cmux-tui-core/src/lib.rs
  • cmux-tui/crates/cmux-tui-core/src/mux.rs
  • cmux-tui/crates/cmux-tui-core/src/server.rs
  • cmux-tui/crates/cmux-tui/src/app.rs
  • cmux-tui/crates/cmux-tui/src/cli.rs
  • cmux-tui/crates/cmux-tui/src/localization.rs
  • cmux-tui/crates/cmux-tui/src/machine_provider_runtime.rs
  • cmux-tui/crates/cmux-tui/src/main.rs
  • cmux-tui/crates/cmux-tui/src/server_lifecycle.rs
  • cmux-tui/crates/cmux-tui/src/session/mod.rs
  • cmux-tui/crates/cmux-tui/src/session/remote.rs
  • cmux-tui/crates/cmux-tui/tests/cli.rs
  • cmux-tui/docs/protocol.md
  • cmux-tui/spec/commands.md

Comment thread cmux-tui/crates/cmux-tui/src/app.rs Outdated
Comment thread cmux-tui/crates/cmux-tui/src/localization.rs
Comment thread cmux-tui/crates/cmux-tui/src/server_lifecycle.rs Outdated
@cursor

cursor Bot commented Jul 24, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmux-tui/crates/cmux-tui-core/src/release.rs`:
- Around line 61-66: Treat empty environment-variable values as absent before
fallback selection: update stamped_build_commit() in
cmux-tui/crates/cmux-tui-core/src/release.rs:61-66 and the corresponding
stamped_ghostty_commit() logic in cmux-tui/crates/cmux-tui-core/build.rs:38-43
to filter each option_env! result before chaining .or calls. Add coverage
verifying empty overrides fall through to the next non-empty commit stamp.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4a85482b-ac3e-4730-b982-826205fded2b

📥 Commits

Reviewing files that changed from the base of the PR and between f1484e7 and 9ef5a64.

⛔ Files ignored due to path filters (1)
  • cmux-tui/dist/RELEASING-TUI.md is excluded by !**/dist/**
📒 Files selected for processing (9)
  • cmux-tui/crates/cmux-tui-core/build.rs
  • cmux-tui/crates/cmux-tui-core/src/platform.rs
  • cmux-tui/crates/cmux-tui-core/src/release.rs
  • cmux-tui/crates/cmux-tui/src/cli.rs
  • cmux-tui/crates/cmux-tui/src/localization.rs
  • cmux-tui/crates/cmux-tui/src/server_lifecycle.rs
  • cmux-tui/crates/cmux-tui/tests/cli.rs
  • cmux-tui/docs/protocol.md
  • cmux-tui/spec/commands.md

Comment thread cmux-tui/crates/cmux-tui-core/src/release.rs
@cursor

cursor Bot commented Jul 24, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

Comment thread cmux-tui/crates/cmux-tui-core/src/mux.rs Outdated
@cursor

cursor Bot commented Jul 26, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 26, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@cursor

cursor Bot commented Jul 26, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

2 similar comments
@cursor

cursor Bot commented Jul 26, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@socket-security

socket-security Bot commented Jul 27, 2026 •

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

2 similar comments
@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

3 similar comments
@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 29, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Aug 11, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

# Conflicts:
#	cmux-tui/bindings/ERGONOMICS.md
#	cmux-tui/bindings/RELEASING.md
#	cmux-tui/bindings/cpp/.cmux-sdk-manifest.json
#	cmux-tui/bindings/cpp/include/cmux/raw/generated/models.hpp
#	cmux-tui/bindings/go/raw/.cmux-sdk-manifest.json
#	cmux-tui/bindings/go/raw/README.md
#	cmux-tui/bindings/go/raw/generated_commands.go
#	cmux-tui/bindings/go/raw/generated_events.go
#	cmux-tui/bindings/go/raw/generated_metadata.go
#	cmux-tui/bindings/go/raw/generated_presence_test.go
#	cmux-tui/bindings/go/raw/generated_types.go
#	cmux-tui/bindings/java/src/com/cmux/raw/.cmux-sdk-manifest.json
#	cmux-tui/bindings/java/src/com/cmux/raw/IdentifyResult.java
#	cmux-tui/bindings/java/src/com/cmux/raw/Protocol.java
#	cmux-tui/bindings/python/cmux/raw/_generated/.cmux-sdk-manifest.json
#	cmux-tui/bindings/python/cmux/raw/_generated/_schema.py
#	cmux-tui/bindings/python/cmux/raw/_generated/metadata.py
#	cmux-tui/bindings/python/cmux/raw/_generated/models.py
#	cmux-tui/bindings/python/tests/test_protocol.py
#	cmux-tui/bindings/rust/src/generated/.cmux-sdk-manifest.json
#	cmux-tui/bindings/rust/src/generated/commands.rs
#	cmux-tui/bindings/rust/src/generated/events.rs
#	cmux-tui/bindings/rust/src/generated/metadata.rs
#	cmux-tui/bindings/rust/src/generated/mod.rs
#	cmux-tui/bindings/rust/src/generated/types.rs
#	cmux-tui/bindings/typescript/src/raw/generated/.cmux-sdk-manifest.json
#	cmux-tui/bindings/typescript/src/raw/generated/commands.ts
#	cmux-tui/bindings/typescript/src/raw/generated/events.ts
#	cmux-tui/bindings/typescript/src/raw/generated/index.ts
#	cmux-tui/bindings/typescript/src/raw/generated/metadata.ts
#	cmux-tui/bindings/typescript/src/raw/generated/types.ts
#	cmux-tui/bindings/zig/src/raw/generated/.cmux-sdk-manifest.json
#	cmux-tui/bindings/zig/src/raw/generated/presence_test.zig
#	cmux-tui/bindings/zig/src/raw/generated/protocol.zig
#	cmux-tui/crates/cmux-tui-core/src/lib.rs
#	cmux-tui/crates/cmux-tui-core/src/mux.rs
#	cmux-tui/crates/cmux-tui-core/src/server.rs
#	cmux-tui/crates/cmux-tui-core/src/surface.rs
#	cmux-tui/crates/cmux-tui-core/src/terminal_host_runtime.rs
#	cmux-tui/crates/cmux-tui-core/src/workspace_registry.rs
#	cmux-tui/crates/cmux-tui/src/app.rs
#	cmux-tui/crates/cmux-tui/src/cli.rs
#	cmux-tui/crates/cmux-tui/src/cli/wire.rs
#	cmux-tui/crates/cmux-tui/src/machine_provider_client.rs
#	cmux-tui/crates/cmux-tui/src/main.rs
#	cmux-tui/crates/cmux-tui/tests/cli.rs
#	cmux-tui/docs/protocol.md
#	cmux-tui/spec/commands.md
#	cmux-tui/spec/sdk-schema.json
# Conflicts:
#	Packages/macOS/CmuxTerminal/Tests/CmuxTerminalTests/TerminalSurfaceRestoreSpawnSchedulerTests.swift
@cursor

cursor Bot commented Aug 11, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Aug 12, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Closing this stale server-lifecycle branch. The server CLI and socket-lock intent are in current main and merged #11396; stale-listener cleanup is tracked by #11482. Re-cut only any missing release-identity or safe process-selection proof.

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