Repository navigation
Releases: St0neWan9/cmux-remote
Release list
CmuxRemote 0.1.7
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.listto its key
window, so the phone and the owner's approval page only saw one window's
workspaces. Calls that name no window now readwindow.listand 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
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
onPauseand stopped in
onStart. A configuration change does both in quick succession, so Android
could reportForegroundServiceDidNotStartInTimeExceptionand 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 EXCEPTIONand noForegroundServiceDidNotStartInTimeException. - 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
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
CmuxRemote Android 0.1.21
The session list no longer shows the cached-at timestamp above the Mac pills.
Conversation list
- The
缓存于 hh:mmline 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
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-tuisession 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
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-tuisession 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 theEditTextfocus 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
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-tuisession 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
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
LiveUpdatessockets. 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-tuisession 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
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'sOutgoingPromptMatcher: 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 declaresadjustResize, 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
.taskdoes, 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
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.shafter the iOS filter-pill change.- Exercised against a real
cmux-tuisession 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.