cmux NEXT: Cloud Diagnostics shows one readable line; the JSON report is behind Copy details and returned to the CLI
Cloud Diagnostics' toast, and the text its Copy button put on the clipboard, printed each machine's daemon connection state with Swift's default description. On a connected machine that is a raw DaemonIdentity(..., capabilitySet: Set([...])) dump; Leo hit it on 2026-10-21. A CLI or MCP run (cmux cloud diagnostics) also showed that toast in the person's window and returned only {"ran":true}.
Now:
- A person sees one line naming the first thing that needs them: Cloud is unavailable, they're signed out, a machine's creation failed, or a machine runs a cmux-tui that needs an update (
<machine>: This machine runs cmux-tui 0.1.0 (a9b104f3cb7d). Update it to turn on every feature of this app.). When nothing does, it saysSigned in as <email>. No Cloud problems found.Copy details copies the full report as JSON, and only on a click. - A CLI or MCP caller gets
summaryanddetails(the same JSON) as the run'sresult, and nothing shows in the window. - The per-machine JSON rows come from the same helper as the
cloud.machinescontrol method (AppControl.cloudMachineRow), so the two can't drift. The report addslink_pid, the account, the backend, andlast_error.
Two new strings (cloud.button.copyDetails, cloud.result.diagnosticsAllWell) are in Cloud.xcstrings for every locale that catalog carries. scripts/localize-changes imported them; the catalog parity count is unchanged from base.
Validation: scripts/cmux-next/prepush-gate.py passes. The Swift compile runs on CI; nothing was built on the Mac.
No capture: the toast only appears when a cloud call a person started fails, and no tour state reaches a failing cmux Cloud call. The change is the toast's text (a one-line summary from CloudStrings) and a "Copy details" button in place of the clipboard dump.
๐ค Generated with Claude Code
Agent session: cosmic-gray
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes Cloud Diagnostics so the toast shows one readable line and the full JSON report is only copied on request. CLI and MCP callers now get summary and details back in the run's result instead of {"ran":true}; nothing shows in their window.
The old toast printed each machine's daemon connection state using Swift's default description, so a connected machine dumped a raw DaemonIdentity(..., capabilitySet: Set([...])) on screen and on the clipboard. Now a person sees the first thing that needs them โ Cloud unavailable, signed out, a failed machine, or a machine running a cmux-tui that needs an update โ or "Signed in as . No Cloud problems found."
Details
- Per-machine rows come from the same helper as
cloud.machines, so the two reports can't drift. - The report now includes
link_pid, the account,team_id, the backend, andlast_error. - Two new strings (
cloud.button.copyDetails,cloud.result.diagnosticsAllWell) are translated for every locale in the catalog.