Changelog
Every release of the RoamTerm phone app and the desktop agent, newest first.
Phone app (iOS and Android) Desktop agent (Mac, Windows, Linux) Atom feed
Phone app (iOS and Android)
What is new in each version, as shown in the store.
-
Version 1.11.0
Released:
- New: remote help. Help a friend's computer from your phone with a one-time code. They approve every connection and see a bar while you are connected; end-to-end encrypted. Helping needs a Google or Apple sign-in; 15 min free per session.
- Paired computers show up on your other signed-in devices.
- Remote desktop: Android Backspace works, and text copied on the phone pastes on the computer.
- Clearer message and a retry button when a purchase fails.
-
Version 1.10.3
Released:
- Stability: connections to your computer now stay up when you close RoamTerm from the recent apps.
-
Version 1.10.2
- New Claude Code page on iPhone: get a notification when Claude needs you or finishes, with a one-step setup command for your computer.
-
Version 1.10.1
Released:
- Fewer permissions: RoamTerm no longer asks for access to your photos, videos or music.
-
Version 1.10.0
Released:
- New: a push when Claude Code needs you, and a tap opens that terminal session.
- Quick commands: Run or Insert, ask before risky ones, {{values}}, search, import and export.
- New: Quick Settings tiles to turn ADB on or off and open your computer's terminal (Android).
- New: "Service status" in Support & feedback shows whether RoamTerm is up.
-
Version 1.9.2
Released:
- New: keep ADB ready until restart (opt-in, on the ADB screen). Turn ADB on again later without Wi-Fi.
-
Version 1.9.1
Released:
- New: Support & feedback in Settings. Report a bug, suggest a feature or ask a question; we read every message.
-
Version 1.9.0
Released:
- What's new after every update, plus the full release history in Settings > About.
- In-app update notice: update straight from the app, no store trip needed on Android.
- Fixed: privacy policy, terms and support links now open the right page in your language.
-
Version 1.8.3
Released:
- More reliable connections when switching Wi-Fi and mobile data, and when the service is busy.
- Pairing links: no camera, clear message for invalid links.
- Damaged app data no longer locks you out.
- File transfers: cleaner cancel, storage-full message.
- Better layout with large text and in landscape.
-
Version 1.8.2
Released:
- Pro is now recognised by the relay for every subscriber: direct connection and full speed.
- Pro features are checked on every path (pairing links, ADB setup, file hand-off).
- When Pro ends, ADB, port forwards, remote desktop and AI access stop cleanly.
- No paywall flash for Pro users right after launch.
-
Version 1.8.1
Released:
- The setup card on the Machines screen disappears once AI access is on.
- Works with RoamTerm 0.11.1 on the computer: AI tool calls longer than 10 seconds, after a restart and in parallel are fixed. Update with: roamterm update
-
Version 1.8.0
Released:
- Data usage: mobile data and Wi-Fi used by RoamTerm, by feature and computer.
- Battery: estimated drain with ADB on vs idle, lock times, tips.
- Offline mode: RoamTerm makes no connections for an hour, until tomorrow or until you turn it off.
- Data saver on mobile data.
- New ADB notification icon; a green ADB dot on the computer card.
- A paused computer shows "paused by its user". Needs RoamTerm 0.11.0: roamterm update
-
Version 1.7.0
Released:
- ADB stays connected more reliably: Wi-Fi is kept awake while ADB runs, and the computer reconnects adb by itself.
- Choose the ADB connection path: Auto, Prefer direct or Relay only. On the same network it moves back to the direct path by itself.
- The ADB card shows which path is used and why.
- Needs RoamTerm 0.10.0 on the computer: roamterm update
-
Version 1.6.2
Released:
- Fixed: the ADB tunnel could stay stuck after the direct connection dropped (the computer showed ADB as off). It now notices within about 10 seconds and switches to the relay.
-
Version 1.6.1
Released:
- Fixed: the ADB tunnel kept dropping ("No internet, waiting for the tunnel") on direct connections; data over the direct path is now always sent in order.
- If a direct connection still fails, RoamTerm switches to the relay at once.
-
Version 1.6.0
Released:
- ADB setup: clearer QR step (the camera opens in Android Settings, not in RoamTerm), checks for Wi-Fi and Developer options, pictures of each screen.
- Remote desktop: if the Mac hasn't allowed Screen Recording yet, the Mac now shows its permission screen and the app tells you exactly what to switch on.
- Needs RoamTerm 0.8.0 on the computer: roamterm update
-
Version 1.5.0
Released:
- Files: fixed folders showing empty after reopening; new "Open terminal here".
- Remote desktop and ADB tunnel use a direct connection when possible (Pro), with Direct/Relay and latency shown.
- Remote desktop: low latency mode and smoother pacing over the internet.
- Needs RoamTerm 0.7.0 on the computer: roamterm update
-
Version 1.4.0
Released:
- Remote desktop (Pro): see and control your computer from your phone: trackpad or touch, every monitor, quality presets, sound on your phone.
- System: live CPU, memory, disks and network of your computer; processes and power actions with Pro.
- Needs RoamTerm 0.6.0 on the computer: roamterm update
-
Version 1.3.1
Released:
- Files: folders open right away with a loading bar, and sub-folders load in the background so opening them is instant.
- Even faster with RoamTerm 0.5.1 on the computer: roamterm update
-
Version 1.3.0
Released:
- Smarter terminal: suggestions while you type, your most-used folders first, and Claude Code / Codex commands after /.
- Send text and sync the clipboard between phone and computer (sync is Pro).
- Share text from any app to your computer.
- Needs RoamTerm 0.5.0 on the computer: roamterm update
-
Version 1.2.3
Released:
- Your computer now sees this phone's real name, model and Pro plan.
- Connection details show that the connection is end-to-end encrypted.
- Best with the RoamTerm desktop app 0.4.0 on your computer: roamterm update
-
Version 1.2.2
Released:
- A computer that removed this phone now disappears from your list by itself.
- Needs RoamTerm agent 0.3.2 on the computer: roamterm update
-
Version 1.2.1
Released:
- ADB tunnel reconnects by itself after the computer's agent restarts.
- New "Restart tunnel" button on the ADB screen.
- Works best with RoamTerm agent 0.3.1: roamterm update
-
Version 1.2.0
Released:
- Suggestions while you type in the terminal: folders after cd, files, commands, git branches and your recent commands.
- Command history: find and rerun recent commands from this phone and the computer.
- Command composer: type long commands comfortably, then send.
- Easier key bar: most used keys first, arrows repeat when held.
- Needs RoamTerm agent 0.3.0 for completions: roamterm update
-
Version 1.1.0
Released:
- ADB pairing without typing: scan a QR code shown on your computer.
- Typing the code in the notification now works while Settings is open.
- See when your computer's adb is connected.
- Clearer computer cards and a new machine hub.
- Send files between phone and computer.
- Remove terminal sessions easily.
- Needs RoamTerm agent 0.2.0: roamterm update
-
Version 1.0.4
Released:
- Remote ADB without Wi-Fi: set it up once with a USB cable to your computer.
- Clearer, shorter pairing step.
- Needs RoamTerm agent 0.1.3 on the computer for the cable setup.
-
Version 1.0.3
Released:
- Gift Pro from the RoamTerm team now turns on reliably.
- Signing in links this phone to your account right away.
- Stability fixes.
-
Version 1.0.2
Released:
- Premium you can receive: Pro granted by the RoamTerm team now unlocks the app.
- Remote ADB: without Wi-Fi the app now says at once that Wireless debugging needs Wi-Fi for a moment, and continues by itself when Wi-Fi connects.
- Settings are one tap away on the machines screen.
- Clearer plan errors on the paywall.
- Files: fixed New folder / Rename.
- Accessibility and stability fixes.
Desktop agent (Mac, Windows, Linux)
The desktop agent changelog is written in English.
-
Version 0.12.0
Released:
- Control center: the Claude Code notifications card no longer shows a stray "null" next to the Install button; the remote desktop permission hint and a consent request are never on screen together (consent first, the hint returns after the answer).
- Keep awake: the computer no longer idle-sleeps while a phone is using it (terminal, files, ADB tunnel, AI session, remote desktop), so the phone does not lose it. New setting "Keep awake while a phone is connected" (Settings -> Keep awake, default on): "while a session is open" (default) or "while any phone is online", plus "also on battery" (default off: a laptop on battery is not kept awake unless you opt in). macOS holds a system-sleep assertion (the screen can still turn off), Windows
SetThreadExecutionState, Linux a logind inhibitor lock. Released within seconds when the last session ends, the phone goes offline, you pause the agent or change the setting, and always when the agent exits or crashes. Closing the lid still sleeps the computer. - Indicator "Keeping this Mac awake - <what>" on Overview, in Settings, in the menu bar panel and the tray menu (11 languages).
- SSH sessions now report what is running right now (
SessionInfo.Active), not only what the connection did so far. - Claude Code notifications:
roamterm notify(the hook command) androamterm claude-hooks install | uninstall | status. When Claude Code asks for permission, waits for input (Notification hook) or finishes a turn (Stop hook), the phone that owns that tmux session gets a push; a tap opens the terminal attached to that session. The push never contains the prompt, command, file names, directory or any Claude text (only "Claude needs you on <computer>"). Throttled per tmux session (waiting 1 per 2 min unless answered, done 1 per 5 min); no push while the phone is attached to that session. The installer merges into~/.claude/settings.jsonwithout touching your other settings or hooks (backup, atomic write, refuses invalid JSON, uninstall removes only RoamTerm's entries). Control center: new "Claude Code notifications" card on the AI / MCP tab. Needs a relay that announcespush_claude(older relays are never sent the new events). Seedocs/claude-hooks.md.
-
Version 0.11.4
Released:
- Control center: new "Support & feedback" page (
#/support, sidebar entry "Support"). Pick a category (problem, feature idea, question, other), write the message (10-5000 characters), optionally leave an email for a reply, and tick "Include diagnostic info" (on by default) with a "What is sent" list. Nothing is sent until Send; a failed send keeps the draft (the agent holds it while the window is closed) and a retry of the same text reuses its ticket id, so a report is never duplicated. On success the page shows the ticket number. Rate limits show when to try again. Opens from About ("Report a problem / Send feedback"), the menu bar panel, the tray menu androamterm feedback(=roamterm open support). - The report goes over HTTPS straight to the RoamTerm backend (not through the relay), 15 s timeout,
docs/support/CONTRACT.mdv1. Diagnostics are counts and flags only (version, OS and OS version, architecture, language, relay online/offline, P2P on/off, paired phones, open sessions, ADB / tmux installed, update channel): never host or user names, paths, keys, tokens, phone names or terminal content.GET /api/support/diagnosticsreturns exactly that object. - No API key is needed or sent (the function is public,
VERIFY_JWT=false).ROAMTERM_SUPPORT_URLoverrides the endpoint for tests (https, or http to loopback only).
- Control center: new "Support & feedback" page (
-
Version 0.11.3
Released:
- Control center and menu bar: a USB cable or Wireless debugging link between this computer and a phone is no longer shown as the RoamTerm ADB tunnel. The chips read "ADB tunnel 2 min" only while the tunnel is up, and "Wi-Fi debugging · 2 min" / "USB · 2 min" for the computer's own adb link (no duration when it was already there at start).
GET /api/devices/linksand the ADB status carry it as a separatelocal {kind, serial, since};adb.methodis now onlytunnel. - ADB tab: a "On this computer" box with the serial and a working
adb -s <serial> shell; the tunnel's address and commands show only while adb lists the tunnel as a device; screenshot / APK / scrcpy say why they are disabled. - A local adb link is credited to a paired phone only when unambiguous (model suffix match, never two phones of one model).
- A Pro period that ended while the phone was away shows "Pro ended" instead of "Pro"; an offline phone's model / app version are marked "reported <when>" and its last route is not shown as current. Devices "ADB" filter counts local links.
- Control center and menu bar: a USB cable or Wireless debugging link between this computer and a phone is no longer shown as the RoamTerm ADB tunnel. The chips read "ADB tunnel 2 min" only while the tunnel is up, and "Wi-Fi debugging · 2 min" / "USB · 2 min" for the computer's own adb link (no duration when it was already there at start).
-
Version 0.11.2 ·
- Relay busy (HTTP 503/429 with Retry-After, E_LIMIT, close 4429): the agent waits as told (at least 3 s, with jitter) instead of retrying at once; an old agent answered with E_VERSION now says "update required".
- After the computer sleeps, the dead relay link is noticed within seconds of waking (wall-clock jump) instead of up to 90 s later.
- Phone sessions whose link died silently (Wi-Fi switch, lid closed, phone out of range) are closed after ~90 s (SSH keepalive), so the control center no longer lists sessions that are gone.
- A phone removed while its approval dialog was open no longer gets a shell.
- A damaged devices.json or config.json (power loss, full disk) no longer stops the agent from starting: the file is moved aside (
*.corrupt-<time>), the agent starts with defaults and logs a warning. Settings files are now fsynced. - Starting RoamTerm a second time opens the running agent's control center instead of a second menu bar icon.
- Started from the login item or Finder, the agent now finds Homebrew/Android SDK tools (tmux, adb, git), and phone shells start in your home folder instead of
/. An invalid$SHELLfalls back to/bin/sh.
-
Version 0.11.1 ·
- MCP: tool calls that run longer than 10 seconds (
shellwith a longtimeout_s,install_apk, slowui_tree) no longer fail with "RoamTerm agent error: EOF"; the IPC reply deadline now starts when the answer is ready. - MCP: after the agent restarts (update, crash), an open MCP session opens a new AI session by itself and repeats the call once, instead of answering "unknown AI session; restart the MCP server" until the AI tool was restarted.
- MCP: two AI tools calling
ui_treeat the same time no longer kill each other'suiautomator dump; dumps are serialized. - Test hook
ROAMTERM_ADB_TUNNEL_TEST_PORT(17555-17559 only) so a test agent can run next to the user's own; docs/mcp.md updated (refusal wording,0= default, restart behaviour).
- MCP: tool calls that run longer than 10 seconds (
-
Version 0.11.0 ·
- Go offline: pause this computer for 1 hour, until tomorrow 08:00 or until you turn it back on (menu bar panel and menu, Settings -> General,
roamterm pause [--for 1h | --until 08:00],roamterm resume). Phones are told first (agent_paused), then the relay link, direct (P2P) peers, open sessions and the ADB tunnel are closed and no new connection is accepted; the control center keeps working. The pause survives restarts and ends by itself; the menu bar icon turns grey ("Offline") and every page shows a banner. Protocol: docs/PROTOCOL.md section 14.
- Go offline: pause this computer for 1 hour, until tomorrow 08:00 or until you turn it back on (menu bar panel and menu, Settings -> General,
-
Version 0.10.1 ·
- Fixed: the menu bar panel froze on the data of its first load (e.g. a phone shown "Offline" while the control center showed it online with ADB connected): every later refresh threw because it removed the loading skeleton a second time.
-
Version 0.10.0 ·
- ADB link watchdog: while a phone's tunnel is on, the agent keeps adb attached to 127.0.0.1:16555 (retries 1, 2, 4, 8 s, then every 15 s; checks every 10 s and repairs an offline / missing entry). Before, one failed auto-connect right after the tunnel came up ("connection refused") was never retried.
- ADB tab "ADB link" card: the path (Direct / Relay) with the reason in plain words, how long it has been up, the phone's path preference (Auto / Prefer direct / Relay only, sent to the phone) and Reconnect; the watchdog state. The menu bar panel and the Devices card show the reason too. Protocol:
adb_statepath / path_reason / pref / since; agent → phoneadb_path_pref,adb_reconnect(docs/PROTOCOL.md section 13). - Fixed: the Devices card's action buttons overlapped the paired date and Overview "Quick actions" labels were clipped (two components shared the CSS class
.qa). -
roamterm updateasks a running agent to restart into the new version (IPCagent.restart) and ends its progress line.
-
Version 0.9.1 ·
- Fixed: when the agent stopped on its own (Quit from the menu bar panel, Restart after an update or a permission grant) the menu bar loop kept the process alive with its icon and window, and the restarted agent ran next to it. Two agents, the window bound to the dead one: the device showed offline and ADB off while the menu bar said ADB. The tray now ends with the agent, and the restart helper ends an old agent that is still there after 20 s (TERM, then KILL) before it starts the new one.
-
Version 0.9.0 ·
- New look for the whole control center: a refreshed design system (motion, elevation, components: modal, toasts, progress, skeletons), a sidebar with a gliding active indicator and collapsible rail, page transitions, light and dark.
- Overview: animated connection diagram (phone, direct P2P or relay, this computer, with the round trip), count-up stat cards and a live "Connected devices" strip (online for, ADB for, method, path, sessions).
- Updates: "Update now" shows progress (download, signature check, install) and then asks "Restart now / Later"; a background install never restarts while you work, it asks the next time the window is focused.
GET /api/update/status,POST /api/update/restart. - Menu bar (macOS): a click opens a panel with every phone's card (online for, ADB connected for, method USB / Wi-Fi / tunnel direct or relay, turbo, sessions, quick actions) and "Connection methods" with tips for a faster connection; right click keeps the menu. Windows / Linux: per-phone submenus with the same info.
GET /api/devices/links. - Devices, device page and every tab, Settings (two columns, scroll-spy navigation, Connection methods card), Pair a phone (animated QR, live waiting state, success animation), ADB QR, About and the remote desktop dialogs restyled on the new design.
-
Version 0.8.2 ·
- Direct (P2P) path: ICE gives a quiet phone more time (disconnected 10 s, failed 30 s instead of 5 s / 10 s; phones on Wi-Fi power save went silent for a few seconds and the path was dropped), and every closed P2P connection is logged with its reason.
-
Version 0.8.1 ·
- After an update the agent now restarts in every mode (Terminal / Finder: a detached helper starts it again with the same arguments; LaunchAgent:
launchctl kickstart -k) and opens the control center on Settings again. Before, an agent started from a terminal kept running the old version and its window showed the old page. - "Restart RoamTerm" after a permission grant works under the LaunchAgent too (KeepAlive only covers crashes since 0.8.0).
- A debug log line for every ended SSH connection (alive time, first read/write error) to diagnose dropped links.
- After an update the agent now restarts in every mode (Terminal / Finder: a detached helper starts it again with the same arguments; LaunchAgent:
-
Version 0.8.0 ·
- ADB turbo is now an opt-in, experimental setting (off by default;
adb_turbo_exp). A phone running 0.7.0's turbo saw truncated screenshots ("invalid PNG: unexpected EOF") and an ended mirror ("video stream ended: EOF"). The proxy no longer drops the whole connection for one stream's anomaly (only that stream is closed), tolerates A_OKAY without a payload, returns the buffer budget of ended streams, never sends A_CLSE ahead of unacknowledged data, writes each leg from its own goroutine, and shows the last turbo issue in the ADB tab. docs/adb/turbo.md - Pairing approval dialog (macOS): like the remote desktop consent, only the Deny button counts as Deny; a dialog that cannot be shown keeps the request waiting for an answer from the control center.
- Control center ADB QR page: clearer steps (the scanner is Android's own, in Settings -> Wireless debugging), 11 languages.
- macOS: RoamTerm is now a real app. The pkg installs
/Applications/RoamTerm.app(icon, version, copyright, usage descriptions; the executable is the agent itself, so permissions belong to RoamTerm.app), opens it after the install, and the window starts on "Pair a phone" while no phone is paired. First launch registers start at login. Double click / Spotlight / Launchpad always opens the control center (also while the agent runs). Upgrades replace the oldRoamterm.app. The curl installer creates~/Applications/RoamTerm.apptoo (--no-appskips);roamterm uninstallandinstall --uninstallremove it. - macOS: the login item no longer restarts the agent after Quit from the menu bar (launchd KeepAlive only on a crash).
- Remote desktop, first use on a Mac: when Screen Recording was never granted, a start from the phone now asks macOS (system prompt, RoamTerm appears in the Screen Recording list), shows a notification and brings the control center forward on a "Remote desktop needs permission" card that names the app to switch on (RoamTerm, or Terminal / iTerm / ... when started from a shell), opens the Privacy pane and can restart RoamTerm. The phone gets a specific "waiting for permission" state instead of a bare "permission not given". Accessibility (mouse and keyboard) missing: the session starts view-only and the same card explains it.
- Remote desktop consent: only the Deny button (osascript -128) counts as Deny. When the native dialog cannot be shown (-1713, no GUI session, osascript blocked) the request keeps waiting and the control center shows an Allow once / Always allow / Deny card with a notification; the dialog now opens in front. Protocol:
info.permission_assist, extra fields onno_permission_screen(docs/PROTOCOL.md).
- ADB turbo is now an opt-in, experimental setting (off by default;
-
Version 0.7.0 ·
- ADB turbo: the agent now speaks ADB's delayed-ACK flow control with the phone over the tunnel and classic ADB with the local adb server (split proxy on 127.0.0.1:16555). Screen mirroring over the internet arrives evenly instead of in bursts once per round trip, and bulk ADB (install, pull, exec-out) is ~14x faster at 120 ms RTT (emulator: 0.8 -> 11.3 MB/s). On by default; turns itself off for 10 minutes for a phone whose adbd lacks the feature or on any protocol error (Settings -> ADB turbo). docs/adb/turbo.md
- Screen tab: new "Fast" preset (960 px, 3 Mbit/s, 30 fps), the default over the tunnel; preset explanations; the link (USB / Wi-Fi / internet tunnel) and a Turbo badge in the stats; a collapsible Logs panel next to the phone (shares the Logs tab's stream); screenshot dialog with Copy image, Save, Show in folder, Open and Cmd/Ctrl+Shift+S.
- Remote desktop: the flow window follows the measured round trip (up to 12 frames, drop age 300 ms-1.2 s) and the bitrate no longer drops on a steady long link; "low latency" (default) vs smoother buffering chosen by the phone.
- New "AI / MCP" tab per device: status (AI access on the phone, ADB tunnel, roamterm on PATH), copy-ready setup for Claude Code, Codex CLI, Claude Desktop, Cursor, VS Code / Copilot, Windsurf and generic JSON, and the full tool list generated from the MCP server (grouped, searchable, read-only vs acts). Overview card "Connect an AI tool".
- Appearance: System / Light / Dark theme (Settings and a sidebar toggle), applied before first paint; the native window follows it.
- Devices page: the device card no longer overflows with long names; the rename pencil sits next to the name.
-
Version 0.6.0 ·
- Remote desktop from the phone (Pro on the phone): see and control this computer's screens over the end-to-end encrypted link (SSH subsystem
roamterm-desktop). macOS: ScreenCaptureKit + hardware H.264 (VideoToolbox), mouse / keyboard through CGEvent, system sound as AAC (macOS 13+). Windows and Linux (X11): screen capture + input with RoamTerm's tiles codec (no sound yet). Every monitor, quality presets with adaptive bitrate, sound off / on the phone / on the phone with the computer muted (restored afterwards, also after a crash), keep-awake during a session. - Consent per phone: ask every time (Allow once / Always / Deny on this computer), always (unattended, turned on in the control center with a warning) or off. While a session runs the menu bar shows it with "Stop screen sharing", a notification appears and the audit log records start / stop (never pixels or typed text). New "Remote desktop" tab on the phone page and a Settings section with the macOS Screen Recording / Accessibility permissions and Grant buttons.
- System monitor for the phone (
roamterm-ctl): CPU (per core), memory, disks, network, battery, uptime, model; process list and ending your own processes; power actions (lock, display off, sleep, keep awake, restart, shut down, log out) without sudo; audit logged and rate limited.
- Remote desktop from the phone (Pro on the phone): see and control this computer's screens over the end-to-end encrypted link (SSH subsystem
-
Version 0.5.1 ·
- Phone file browser: folders open faster over the relay: one directory reply now carries up to 250 entries (was 100), so a big folder needs fewer round trips.
-
Version 0.5.0 ·
- Phone screen in the desktop app: the new Screen tab mirrors and controls an Android phone over ADB (scrcpy server v3.3.4 built in, H.264 decoded in the window): mouse = touch, wheel = scroll, right click = back, keyboard + paste, home / recents / power / volume / rotate, quality presets (Smooth 720p by default over the relay, Sharp, Data saver), full screen.
- Logs tab: live logcat with 50 000 lines, level / tag / app filters, text or regex search with highlight, crash and ANR cards, follow / pause, copy selection, export to ~/Documents/RoamTerm Logs, clear the phone's buffer.
- Clipboard tab: send text to the phone, texts from the phone, clipboard sync per phone and per direction (Pro on the phone; off by default; password-manager content is never synced; text is never logged).
- Smarter terminal suggestions for the phone: folders ranked by how often and how recently you use them (zoxide / z / autojump, shell history, the folders your phone visited), jump to frequent folders from anywhere; inside Claude Code, Codex or Copilot CLI
/suggests their commands plus your own commands, skills and plugins read from disk; npm / pnpm scripts, make targets, ssh hosts. - New MCP tools: logcat_search, crash_report, ui_tree, tap, swipe, input_text, press_key, launch_app, stop_app, list_packages, app_info, open_url (same AI access switch, audit log and rate limits).
- The control center fills wide windows; a phone's page is split into tabs (Overview, ADB, Screen, Logs, Clipboard, Files).
-
Version 0.4.0 ·
- RoamTerm desktop app: the control center opens in RoamTerm's own window (macOS WebKit, Windows WebView2) with a Dock / taskbar icon instead of a browser window; opening it again brings the same window to the front (one window only). Browser window as fallback.
- Menu bar / tray: green when phones are connected, the phone's name (or the count) next to the icon on macOS, connected phones in the menu (click opens the phone), Settings, "Update available". OS notifications for files received from a phone and new versions.
- Settings: start at login, approval policy, ADB auto-connect (all / chosen phones / off), folder for files from phones, screenshot folder + auto-save + auto-copy, notifications, updates (check now, install in the app, optional automatic install), license & Pro (plan, renewal / expiry date as the phone reports it), security & privacy.
- ADB screenshots work over the relay: own 90 s deadline (was 20 s, a 2-5 MB PNG over the tunnel timed out), 32 MB capture cap (busy screens were cut at 8 MB), progress with seconds and Cancel, errors shown. Copy to clipboard, Save, Show in folder, Download, strip of recent screenshots.
- Phones report their real name, model, OS, app version and Pro state (
device_info, mobile 1.2.3); rename is a visible pencil on phone cards and the phone page. - "End-to-end encrypted" shown on Overview, phone pages, pairing and About, with the host key fingerprint.
- macOS binaries run on macOS 13 and later again (earlier builds required the build machine's macOS version).
-
Version 0.3.2 ·
- Fix: after a relay restart the agent could stay offline until restarted ("got 421"): a failed handshake left its TLS connection in the pool and every retry reused it; websocket handshakes now always open a fresh connection.
- Removing a phone (control center,
roamterm devices revoke) now also removes this computer from that phone's list: the agent sends the removed phones with the allowlist (allowlist_set.revoked), the relay answers that phone's presence query withremoved: true.
-
Version 0.3.1 ·
- Control center ADB panel: "Reconnect" also works while adb shows the phone as offline: it clears the stale entry and, when the phone's tunnel is down, says so; a step-by-step note tells what to do on the phone.
- When a phone's ADB tunnel comes back and adb still lists 127.0.0.1:16555 as offline, the agent reconnects adb by itself.
- A phone's newer link takes its own reverse-forward listener over at once (the old, half-open link no longer blocks the port).
-
Version 0.3.0 ·
- Fix: the ADB QR page of the control center stayed blank (black) when no QR was pending, when the window opened in the background or when a request failed. It now always shows something (loading, the QR, "no QR is waiting", or an error with Retry), content no longer waits for an opacity animation, and an expired window or reloaded one-time link shows a styled "This window expired" page with
roamterm open <page>instead of a plain error text. On Linux the control center also opens when the agent runs as a user service withoutDISPLAY(X / Wayland sockets are detected). - Control center, ADB panel on the device page: live state of
127.0.0.1:16555(device / unauthorized / offline / absent), tunnel and adb client count, Connect / Disconnect / Reconnect (disabled with a reason when adb is missing or the phone's tunnel is off, with the install command), phone info (model, Android, battery, screen), screenshot (inline + download), APK install (<= 1 GiB, progress), scrcpy, copyable commands. Only fixed operations exist; one action at a time; timeouts 20 s / 5 min. - Devices: rename (local label, <= 64 characters, shown everywhere), "End sessions now", open connections with kind and route (relay / P2P), last connection route, readable timeline with copy buttons. Overview: cards for devices, ADB, pending QR codes, AI sessions, file hand-offs, P2P, and update status with "Update now" for self-managed installs (package-manager installs show their command).
- New ctl messages
term_complete(tab completion: commands,cddirectories, git, paths in the tmux pane's cwd) andshell_history(zsh / bash / fish / PowerShell, secrets filtered), seedocs/PROTOCOL.md. - Fix: the phone's ADB report was cleared when ANY ctl stream of the device closed; now only the stream that reported it owns it.
- Fix: the ADB QR page of the control center stayed blank (black) when no QR was pending, when the window opened in the background or when a request failed. It now always shows something (loading, the QR, "no QR is waiting", or an error with Retry), content no longer waits for an opacity animation, and an expired window or reloaded one-time link shows a styled "This window expired" page with
-
Version 0.2.0 ·
- Desktop control center: the two bare tray pages became a local web app (Overview, Pair a phone, Devices and device detail, ADB QR, About; Night/Day theme from the design tokens, 11 languages, polling live updates). Same security model as before (127.0.0.1, random port, one-time token -> HttpOnly SameSite=Strict cookie, Host + Origin checks, now a strict CSP with no inline code or external resources). It opens in an app-style window (Edge / Chrome / Brave / Chromium
--app=, default browser as fallback) and runs whenever there is a desktop session, with or without the tray. -
roamterm open [overview|pair|devices|adb-qr|about]and a tray item "Open RoamTerm". The macOS app now opens the control center when started from Finder (a launcher script hands over to the agent; double-clicking while the agent runs opens the window instead of doing nothing). - QR pairing for Android Wireless debugging:
adb_pair_qr(roamterm-ctl) shows the QR in the control center, orroamterm adb qrprints it in the terminal. In memory only, never logged, valid 5 minutes. -
tmux_kill(roamterm-ctl): the phone can remove a terminal session. - File hand-off:
files_info,files_ackand the pushedfiles_offer. Drag files onto a device in the control center (up to 2 GiB each); the phone downloads them over SFTP from a hidden outbox inside the SFTP root; files from phones land in~/Downloads/RoamTerm("Show in Finder / Explorer"). - The control center shows when the computer's adb is connected through a phone's tunnel (
client connected). -
roamterm runhints are OS-specific (macOS no longer says "Ctrl+C": "Control-C (⌃C)", ⌘T, menu bar), in all 11 languages, plus a "Control center: roamterm open" line. The tray hint is now shown on every OS. - The update check also runs for package-manager installs, only to show "update available" in the control center.
- Desktop control center: the two bare tray pages became a local web app (Overview, Pair a phone, Devices and device detail, ADB QR, About; Night/Day theme from the design tokens, 11 languages, polling live updates). Same security model as before (127.0.0.1, random port, one-time token -> HttpOnly SameSite=Strict cookie, Host + Origin checks, now a strict CSP with no inline code or external resources). It opens in an app-style window (Edge / Chrome / Brave / Chromium
-
Version 0.1.3 ·
-
adb_usb_tcpip(roamterm-ctl): switches a phone plugged in by USB to TCP mode for the no-Wi-Fi ADB setup; slow ctl requests are answered asynchronously.
-
-
Version 0.1.2 ·
- Messages follow the macOS interface language (System Settings) instead of the region-based
LANG(English UI with a Turkish region now gets English; launchd/terminals withoutLANGno longer fall back to English on a Turkish Mac). Order: ROAMTERM_LANG, LC_ALL, LC_MESSAGES, macOS UI language, LANG, English.
- Messages follow the macOS interface language (System Settings) instead of the region-based
-
Version 0.1.1 ·
-
roamterm runnow says when it is connected and what to do next (pair the phone, start at login, stop), in the system language; it no longer looks stuck after the first line.
-
-
Version 0.1.0 ·
- First public release, served from https://dl.roamterm.com/agent/ (the GitHub repo is private).
-
curl https://roamterm.com/install | shworks on stock macOS: without OpenSSL 3 the downloaded binary verifies the manifest and itself (roamterm verify-download, key from the installer). - macOS self-update and install use per-arch binaries (the universal one stays in the .pkg).
- ADB reverse tunnel: the newest link of a phone takes over (Wi-Fi to mobile data).