Skip to content

Releases: St0neWan9/cmux-remote

CmuxRemote 0.1.7

Choose a tag to compare

@github-actions github-actions released this 04 Nov 10:54

CmuxRemote 0.1.7

The Mac companion now lists workspaces from every open cmux window, and two
pairing-page details are fixed.

Mac companion

  • Workspaces from every open window. cmux scopes workspace.list to its key
    window, so the phone and the owner's approval page only saw one window's
    workspaces. Calls that name no window now read window.list and merge each
    window's own listing in order, skipping a window whose read fails. Paired
    devices can now see and filter across all open cmux windows.
  • Pairing QR code alignment. The code on the pair-with-this-Mac page is
    centred in its card again.
  • Workspace rows toggle. Tapping a workspace row on the pairing page can
    expand and collapse it instead of only selecting it.

Android

The latest Android build remains
CmuxRemote Android 0.1.21;
this release changes the Mac side only.

Install

Download CmuxRemote-0.1.7.dmg, open it and drag CmuxRemote to Applications.
The app is Developer ID signed and notarized for macOS 14 or later. This build
is universal (Apple silicon and Intel).

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.23

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 12:56

CmuxRemote Android 0.1.23

Rotating a phone or tablet no longer crashes the app.

Background connection

  • The foreground service used to be started in onPause and stopped in
    onStart. A configuration change does both in quick succession, so Android
    could report ForegroundServiceDidNotStartInTimeException and close the app.
  • The service is now tied to the app having connected Macs: the page starts it
    once the shell is connected and leaves it running until the setting is turned
    off, the last Mac is removed, or the app is finished. Rotations, permission
    dialogs and short pauses no longer start and stop it.
  • The ongoing connection notification is therefore shown while the app is open
    as well; Android requires it for the service that keeps the links alive.

Verification

  • Reproduced the crash on an emulator by rotating; after the change, repeated
    rotations at phone size and at a 1067dp tablet layout (two panes) leave no
    FATAL EXCEPTION and no ForegroundServiceDidNotStartInTimeException.
  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (529 Swift tests).

Install

Download CmuxRemote-Android-0.1.23.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.22

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 12:04

CmuxRemote Android 0.1.22

Background task rows now align the tool type and the task title the way the
iPhone does.

Conversation

  • In the expanded background-task bar, the bullet, the tool name (Bash,
    Shell, …) and the task title now share the title's first text baseline.
    A wrapped title therefore starts under its own first line instead of the
    bullet and tool name floating in the middle of a two-line row.
  • The tool name uses the same medium weight as iOS, and the chevron stays
    centred against the full row.

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (529 Swift tests).
  • The existing background-task Compose test covers the collapsed summary and
    the expanded rows.

Install

Download CmuxRemote-Android-0.1.22.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.21

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 08:23

CmuxRemote Android 0.1.21

The session list no longer shows the cached-at timestamp above the Mac pills.

Conversation list

  • The 缓存于 hh:mm line is gone. The Mac pills and the list already show the
    live state once the first read answers, and a cached timestamp on top only
    added noise.

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).

Install

Download CmuxRemote-Android-0.1.21.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.20

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 08:18

CmuxRemote Android 0.1.20

Tool calls inside an expanded operation group sit together.

Conversation

  • Consecutive tool calls in an expanded N 项操作 group no longer get an extra
    gap between them; the rows carry their own padding, so adjacent calls touch
    as they do on the iPhone while reasoning keeps its paragraph break.
  • The group opens with the same small gap under its summary as before.

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).
  • Rendered on a task-owned emulator against a real cmux-tui session with an
    isolated Bridge.

Install

Download CmuxRemote-Android-0.1.20.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.19

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 06:04

CmuxRemote Android 0.1.19

Conversation layout and keyboard behavior now match the iPhone.

Conversation

  • The running row (运行中 6m 41s) sits directly above the composer, where the
    iPhone's bottom inset draws it, instead of at the end of the transcript.
  • The jump-to-latest circle keeps its 44dp shape on short screens when the
    keyboard is up; a small viewport can no longer squeeze it into an oval.
  • Tapping empty conversation space hides the keyboard, clears the field's focus
    and collapses the composer back to its one-line bar. Taps on messages and
    buttons keep their own behavior.

Conversation list

  • Entering the app shows each saved Mac's connecting indicator while its first
    link is dialled, then the green or red dot (included from 0.1.18).

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).
  • Task-owned emulator, real cmux-tui session through an isolated Bridge:
    the running row renders above the composer; on a 1080x1600 window with the
    composer expanded the jump-to-latest circle stays round; tapping empty space
    clears the EditText focus and restores the one-line bar.

Install

Download CmuxRemote-Android-0.1.19.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.18

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 05:49

CmuxRemote Android 0.1.18

Entering the app now shows that the Macs are being connected, instead of
looking idle while the first links are dialled.

Conversation list

  • On launch, every saved Mac's filter pill turns its connecting indicator while
    its first link and read are in flight, matching the iPhone's .connecting
    state. The indicator becomes a green or red dot when the read answers, so a
    slow relay dial is no longer silent.
  • A background read still does not turn any pill, so returning to the app does
    not flicker the status dots.
  • A first install has no saved pairing, so it opens the pairing page and starts
    LAN discovery (and the relay directory when an address is added); a link can
    only be opened after the Mac owner approves the device.

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).
  • Task-owned emulator with a real cmux-tui session behind an isolated Bridge:
    cold start restores the saved Mac, dials the link and reads the list, with the
    pill's state moving from connecting to green. A hung listener on the Mac's
    port resolves to the red dot after the read fails.

Install

Download CmuxRemote-Android-0.1.18.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.17

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 05:30

CmuxRemote Android 0.1.17

The connection now stays up in the background instead of being torn down every
time the app leaves the screen.

Background connection

  • A foreground service (specialUse, stopped with the task) keeps the process
    and the already-authenticated links alive while the app is away. Live session
    updates and the bounded slow poll keep running, so replies and pending
    requests keep arriving.
  • No second connection is created: background and foreground share the same
    LiveUpdates sockets. Returning to the app reuses them and only refreshes the
    data, so the page no longer redials every Mac and no longer shows "正在重新连接"
    on every return.
  • A network change in the background (Wi-Fi to cellular or back) redials at
    once, as it does in the foreground.
  • The 15-minute WorkManager pass remains as a fallback if the process is
    reclaimed by the system.

Permissions and settings

  • Android 13 and later asks for the notification permission; the foreground
    service shows an ongoing, silent notification.
  • 连接 → 后台保持连接 (on by default) controls the foreground service. When
    it is on, a 去允许 action opens the system battery-optimization exemption
    prompt; aggressive battery managers can otherwise stop the connection.
  • Turning the setting off restores the previous behavior: links pause while the
    app is away and are redialled on return.

Verification

  • 117 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).
  • Task-owned emulator with a real cmux-tui session behind an isolated Bridge:
    pressing Home starts the foreground service with its ongoing notification,
    returning stops it and removes the notification, and the links are not
    rebuilt. The battery exemption was granted through the new action and
    verified in the system's allowlist.

Install

Download CmuxRemote-Android-0.1.17.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.16

Choose a tag to compare

@St0neWan9 St0neWan9 released this 04 Nov 01:10

CmuxRemote Android 0.1.16

The conversation list keeps its Mac status current again, and a sent prompt no
longer stays at the end once the transcript records it.

Conversation

  • A prompt sent while the Agent is running disappears from the end of the
    conversation as soon as the Mac records it, instead of appearing twice. The
    matching now follows the iPhone's OutgoingPromptMatcher: whitespace is
    collapsed, the prompt is compared against messages recorded after the send,
    and an Agent-rewritten prompt (image placeholders, a paste summary) still
    counts when a new user message arrives in the same history.
  • The composer stays above the keyboard on short screens and split windows.
    The activity now declares adjustResize, so the system no longer pans the
    whole page up on top of the IME inset.

Conversation list

  • Entering the list reads once quietly, as the iPhone's .task does, so the
    Mac status dots are filled without a spinner or a visible refresh.
  • A Mac that was reachable and then goes away now turns red after three
    consecutive failed reads instead of keeping its last green dot forever.
  • The red "unreachable" sentences under the list, next to a single Mac and in
    workspace headings are gone; the pill's red dot carries that state alone.

Verification

  • 117 JVM tests (6 new for the outgoing-prompt matcher), 15 Compose tests and
    scripts/verify.sh (527 Swift tests).
  • On a task-owned emulator with two real Macs behind isolated Bridges: both
    status dots turn green after entering the list, stopping one Bridge turns its
    pill red after three refreshes with no red text, and restarting it clears the
    dot back to green.

Install

Download CmuxRemote-Android-0.1.16.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.

CmuxRemote Android 0.1.15

Choose a tag to compare

@St0neWan9 St0neWan9 released this 03 Nov 10:40

CmuxRemote Android 0.1.15

The conversation page now follows the iPhone more closely: no stray loading
indicator, queued prompts stay in the transcript, and drafts live inside the
composer.

Conversation

  • Opening a conversation no longer shows the pull-to-refresh spinner; only a
    pull the reader makes spins it, while earlier pages load quietly at the top.
  • A prompt sent while the Agent is still running appears at the end of the
    conversation, continuing it, instead of being pinned over older messages.
  • The running row's indicator is 12pt, matching the text beside it.
  • Prepared image thumbnails are drawn inside the composer's rounded field,
    above the text, and scroll sideways when there are several, as on iOS.
  • Tool titles keep the Agent's description while output streams, never the raw
    command; the command lives in the opened card.
  • The composer stays usable on short and split screens, and the expanded field
    keeps its side margins.

Connection

  • The "this Mac cannot be reached" pill no longer repeats the device name.
  • Intermittent read failures no longer add up into a false offline state: a
    successful read clears the count, and three consecutive failures are
    confirmed with a separate signed status probe before the pill appears.

Devices

  • Filter pills for Macs can be long-pressed and dragged into a new order on
    Android and iOS; the order survives relaunch.
  • Approving a Mac again keeps its place in the list instead of moving it to the
    end.

Verification

  • 111 JVM tests, 15 Compose tests and scripts/verify.sh (527 Swift tests).
  • scripts/build-ios.sh after the iOS filter-pill change.
  • Exercised against a real cmux-tui session through an isolated Bridge on a
    task-owned emulator: opening a conversation, the running row, image drafts
    inside the composer and the inline queued prompt.

Install

Download CmuxRemote-Android-0.1.15.apk, open it on Android 10 or later. Same
signing key; installs as an update.

CmuxRemote is not an official cmux product.