Releases: GordonBeeming/myterm
Release list
MyTerm v0.41
Companion
The Mac list is the whole screen while no Mac is chosen, instead of a narrow column beside two panes whose only content was a reminder that nothing had been chosen. Pick one and the three-column layout arrives; collapse the machine column and it stays collapsed next time on that device.
A Mac you have starred, when it is the only one reachable, opens without asking. Anything else still shows the list. Opening a Mac lands on the workspace you were last on there, or its first, so you are not looking at an empty terminal pane while a Mac is connected.
Macs can be renamed on the phone or iPad, and starred. Each row shows the name you gave it, the name the Mac calls itself when the two differ, and the relay it reaches — so one machine paired through a dev relay and a prod relay is finally two rows you can tell apart. The name is yours and stays on your device; the pairing itself is untouched.
Sending diagnostics to the Mac now says what happened. It reports the size once sent, says when no Mac is connected or nothing has been recorded, and gives the reason verbatim when the Mac refuses — including a Mac running a version too old to accept them.
MyTerm v0.40
Makes a disconnect say why it happened, stops the composer resizing the terminal, and lets a phone or tablet send its diagnostics to the Mac.
Diagnostics reach the Mac
A companion can now send what it has collected to the Mac it is paired with, which files it beside its own data. Settings → Companion → Diagnostics has Show in Finder.
Sending is a separate switch from collecting and is off until you turn it on, with a Send now button and otherwise a five minute timer. What the Mac accepts is bounded: one upload per device every thirty seconds, a size limit on the compressed log and on what it expands to, and each device's folder pruned to its newest twenty files.
A disconnect says what happened
Every failure used to close the connection the same way, so the relay recorded "protocol error" whatever had gone wrong. The close now carries the real reason, and the Mac records why its own connection ended, which it never did. A report can now describe both ends.
The composer no longer resizes the terminal
Opening the composer takes the keyboard away, and the terminal reported its new size to the Mac. A program drawing the whole screen repaints on every resize, and the burst that followed suspended input, so opening the composer looked like losing control. A size the app changes to make room for a sheet is no longer sent.
Install
brew install --cask gordonbeeming/tap/mytermApple silicon only.
MyTerm v0.39
Fixes control being handed straight back on a tablet, and adds a diagnostics log you can send in when something goes wrong.
Control survives a resync
Asking for control could return it immediately. A gap in the terminal output, or a burst larger than the buffer had room for, resynchronised the screen, and that path gave up the lease outright. Applying the fresh screen did not restore it, so control had to be asked for again, which resized the terminal, which made a program drawing the whole screen repaint, which produced the next gap. With the same pane open on the Mac at a different size, that loop kept going.
The lease is now kept through a resync. Input is still suspended while the screen is stale, and control returns with the fresh screen. A lease that genuinely expired while the screen was catching up is given up rather than used, and renewal after a resync accounts for how much of the lease is left.
Diagnostics
A new Diagnostics screen under Settings, off until you turn it on. It records connections, drops and their reason, reconnect attempts, terminal attachments, output gaps and control changes, and shares them as a file.
It never records what a terminal shows or anything you type. Identifiers are written as short prefixes, entries are kept to a bounded size on the device, and nothing leaves the device unless you share it.
Install
brew install --cask gordonbeeming/tap/mytermApple silicon only.
MyTerm v0.38
Fixes connections being dropped on a timer while in active use, and terminals that never finished attaching afterwards.
Connections no longer expire while you are using them
The relay closed each connection when the access token it was opened with ran out, so a busy session was dropped roughly every 15 minutes however much was flowing through it, and a connection opened late in a token's life could last seconds. A connection now renews itself in place: the peer presents a refreshed token before the current one lapses and the relay extends the connection after revalidating it. A device that can no longer obtain a valid token still stops at its last validated expiry, so revocation is unchanged.
A burst of terminal output could also overflow the relay's send queue and cost the reader its connection. The queue is deeper and briefly-full queues now slow the sender instead of disconnecting the receiver.
This half only takes effect once your relay is redeployed. The apps negotiate the capability, so they are safe to update first.
Terminals re-attach after a reconnect
On a narrow screen the companion could sit on "Attaching terminal" indefinitely after reconnecting, and only leaving the workspace and returning would load it. Three separate causes are fixed: the attach was never retried once a connection came back, a failed attach left nothing behind to retry, and the lock guarding attachment could be left holding a permit that was never released.
Diagnosability
The relay now records why a connection ended, including slow receivers and rejected renewals, which it did not before. protocol.md documents the renewal exchange.
Install
brew install --cask gordonbeeming/tap/mytermApple silicon only.
MyTerm v0.37
No changes to the Mac app in this release. It is v0.36 rebuilt with Xcode 27.0 against the macOS 27 SDK, then signed and notarised through the same chain as before.
Build
- Both workflows now run on GitHub's
xcode-27image, so the app is compiled with the same toolchain used for development rather than Xcode 26.6. - The macOS jobs install the Metal toolchain explicitly. That image ships without it, and SwiftTerm's shaders need it.
iPhone and iPad companion
These ship through TestFlight, not this download.
- A workspace opens on its first pane. It used to follow whichever pane was focused on the Mac, which from the phone looked random.
- The pane you pick is remembered per workspace and survives leaving the workspace and relaunching the app.
- A strip of pane chips sits under the navigation bar, with a second row for that pane's terminals when it holds more than one. Both switch on a tap.
Install
brew install --cask gordonbeeming/tap/mytermApple silicon only.
MyTerm v0.36
Programs you run in a MyTerm pane can now use the microphone, the camera, Apple Events and the other resources macOS protects. Until this release the app was signed with an empty entitlements file, so voice input in a coding agent recorded silence and osascript was refused without a prompt.
Settings has a new Permissions tab. It lists each permission with its current status and a button to grant it, and links to that permission's page in System Settings. Nothing is requested when the app starts or when the tab opens, so you decide what to turn on and when.
Folders, local network and automation have no status macOS will report without asking, so they read "Not checked" until you use the button. A permission you have already denied can only be changed in System Settings; macOS does not ask twice.
Install or upgrade:
brew install --cask gordonbeeming/tap/myterm
brew upgrade --cask gordonbeeming/tap/myterm
Apple silicon only, macOS 14 or later. An upgrade replaces the app on disk, so a running MyTerm keeps the old build until you restart it.
MyTerm v0.35
Companion
The companion terminal is usable by touch.
- Swiping the terminal reports wheel lines while an application is tracking the mouse, so pagers and TUIs scroll their own content the way a trackpad scrolls them on the Mac. Hold Shift to keep the pan local, and the gesture is declined up front rather than claimed and dropped.
- Tapping a link opens it, without focusing the terminal first. Only
http,httpsandmailtoopen; a printed custom scheme stays in the terminal and cannot launch another app. A tap stays on the row it hit, since the desktop confirms a wrapped URL by hovering and touch has no hover. - Double-tapping selects a word and offers Select, Select All, Copy and Paste. The menu no longer needs focus, so the keyboard stays down and the selection survives.
- A Hide keyboard button gives the terminal the whole screen. Tapping the terminal brings the keyboard back.
The companion build is with internal testers in TestFlight 0.33 (62).
Mac
No behaviour change. The shared terminal picks up two refactors that keep their existing behaviour: mouse events are encoded through a new encodeMouseEvent that returns the same bytes sendEvent already sent, and link lookup takes a flag for joining a soft-wrapped row that stays on for the desktop.
Installation
Download the signed and notarized Apple Silicon DMG below, or update through Homebrew:
brew upgrade --cask gordonbeeming/tap/mytermLinux amd64 and arm64 relay archives are included with SHA-256 checksums.
Full changes: v0.34...v0.35
MyTerm v0.34
Fixes
- The notifications popover under the bell opened with a header and no rows. The list sized itself from the heights its rows reported, and before any row had reported it collapsed to zero height, which is what stopped the rows from laying out and reporting in the first place. It now holds a fixed height until the first row measures.
Companion
- Companion tabs show the same stirring cook as the Mac, in the same colours: neutral while the agent works, blue when a turn finishes, purple when a question is waiting. It replaces the grey dot and the orange question badge, and VoiceOver still reads the state the dot used to carry.
The companion change is with internal testers in TestFlight 0.33 (60).
Build
- The Mac app is built, signed, and notarized with Xcode 26.6 on
macos-26, the same toolchain the companion jobs use. The version is pinned in the workflow, so the compiler behind a release cannot change without a commit.
Installation
Download the signed and notarized Apple Silicon DMG below, or update through Homebrew:
brew upgrade --cask gordonbeeming/tap/mytermLinux amd64 and arm64 relay archives are included with SHA-256 checksums.
Full changes: v0.33...v0.34
MyTerm v0.33
Companion terminal improvements
- Follow live output in view-only mode using the phone or tablet’s visible height. Scroll up to pause, then use Jump to live to resume.
- Keep your reading position through checkpoint restores and keyboard changes, and keep short prompts visible when the Mac has a taller terminal grid.
- Coalesce remote output while typing to reduce repeated redraws.
- Use Compose for longer prompts and commands, with Insert into terminal and Insert + Enter actions. Drafts are kept separately for each terminal until cleared while the app window remains open.
- Keep history swipes available to spectators when a terminal application enables mouse reporting.
Other fixes since v0.32
- Restore missing workspace activity badges for Claude sessions.
- Avoid a crash when completing a web-link action off the main thread.
- Keep the companion pairing camera upright across device orientations.
If activity badges were missing, open MyTerm Settings after updating to refresh the installed hooks, then restart the affected agent sessions.
Installation
Download the signed and notarized Apple Silicon DMG below, or update through Homebrew:
brew upgrade --cask gordonbeeming/tap/mytermThe companion improvements are available to internal testers in TestFlight 0.33 (58).
Linux amd64 and arm64 relay archives are included with SHA-256 checksums.
Full changes: v0.32...v0.33
MyTerm v0.32
Companion improvements
- Create automatically named workspaces and folders from the Add menu. New workspaces use the folder and directory context of the workspace you’re viewing.
- Return to a cached terminal screen while it refreshes, keep connections through temporary focus changes, and compact rendered output locally to reduce repeated full refreshes during long sessions.
- Maximise a pane with its button or Shift–Command–Return, then restore the split layout.
- Paste clipboard images with Command–V without saving them to Photos first. Copied text still takes precedence over image previews.
- Distinguish workspace and browser actions, with browser controls kept inside the browser pane.
Update the Mac host for automatic workspace and folder naming. The companion improvements are available in TestFlight build 0.28 (52).
Installation
Download the signed and notarized Apple Silicon DMG below, or update with Homebrew:
brew upgrade --cask gordonbeeming/tap/mytermSelf-hosted relay archives are available for Linux amd64 and arm64, with SHA-256 checksums. See the proxy setup guide.
Full changes: v0.31...v0.32