Releases: tchitim/macmoba
Release list
MacMoba 3.5.2
tmux is found even when it is not on the default PATH. Turning on "Run
inside tmux" did nothing on many servers: SSH runs the launch command in a
non-login shell whose PATH is the bare system default, so a tmux installed by
Homebrew (/opt/homebrew/bin, /usr/local/bin) was invisible to the probe and
the session quietly fell back to a plain shell — tmux looked broken though it
was installed, and a chosen session name never attached. The probe now runs
through a login shell, so your profile has set PATH before "is tmux installed?"
is asked.
The session name matches exactly. To join a session you started by hand,
the name in the field must equal the session's name in tmux ls — so a session
made with tmux new -s work (named work) is joined by typing work, but one
made with tmux new -t work (grouped, which tmux names work-2) is not: it
needs work-2, or rename it with tmux rename-session. A name that matches
nothing opens a new, separate session rather than attaching.
MacMoba 3.5.1
Choose which tmux session to attach to. "Run inside tmux" now has a
session-name field. Leave it blank and MacMoba picks a stable name of its own,
as before; type a name to join a session you started by hand on the server
(tmux new -s work → type work). Two MacMoba sessions pointed at the same
name share one tmux session.
安裝:下載 MacMoba-3.5.1.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 3.4
MacMoba is an MCP server now. claude mcp add macmoba -- macmoba mcp and
Claude Code can list your tabs, read a terminal's screen, open saved sessions
and web tabs, and raise notifications — as tools, not shell-outs. It is the
same control socket the CLI has always spoken, with an MCP front on it.
Typing is different from reading: send_text acts as you at a shell, so it
stays disabled until you enable Allow agents to type into terminals in
Settings. The gate lives in the app at the socket — every client crosses it
there, so it cannot be skipped by talking to the socket directly.
Performance now has budgets, not adjectives. ./measure.sh times a
release build from launch to control-ready, round-trips the control channel,
and reads idle memory; the numbers and their budgets live in STATUS.md, so a
regression is an event rather than a drift.
安裝:下載 MacMoba-3.4.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 3.3
A file panel shown again now re-lists, instead of showing what it saw last
time. Reverting a VM snapshot underneath one left the old files on screen,
looking current, with nothing to say they were not. Both the two-pane transfer
panel and the file browser connected once and then kept that listing for as
long as the connection lasted.
A listing that fails to load now clears. It used to leave the previous rows
in place, so a panel that had lost its connection went on looking live. Stale
rows are worse than none: they name files that may be gone, and acting on one
fails in a way that reads as MacMoba being broken rather than the listing being
old.
安裝:下載 MacMoba-3.3.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 3.2
Switching away from a terminal tab and back no longer empties it. In a
libghostty pane the screen and its scrollback were lost — the connection stayed
up, the title stayed right, and everything that had scrolled past was gone.
The pane's view was being rebuilt from scratch every time SwiftUI remounted it,
and switching tabs is a remount. A new view means a new terminal surface, and a
new surface starts empty. The view is now created once and kept for the life of
the pane, which is where the screen actually lives.
安裝:下載 MacMoba-3.2.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 3.1
A terminal that had lost keyboard focus now takes it back when you type.
Reported as a third-party input method (OpenVanilla) producing only Latin
letters in a libghostty pane. The shape of that is telling: the keys arrive, so
the pane is reachable — but an input method talks only to the window's first
responder, and if that is something else, it is never given the chance to
compose. A key reaching the terminal down the responder chain while something
else holds focus is a broken state on its own, and it now corrects itself.
The keystroke in hand is not rescued — it has already been dispatched, and
re-sending it risks entering it twice — so the first character stays Latin and
composition works from the second.
Honest about what this is: the failure was intermittent and had already stopped
reproducing before this was written, so this fixes the cause that fits the
report rather than one seen in the act. It also adds a trace — off unless
defaults write dev.macmoba.MacMoba ghosttyDebugLog -bool YES — that records
the first responder and input context on every keystroke, so a recurrence can
be read rather than guessed at.
安裝:下載 MacMoba-3.1.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 3.0
libghostty draws the terminals now. The engine behind Ghostty replaces
SwiftTerm as the default. It parses faster — 2.3x into a local shell — though
it is worth being plain about where that shows up: over a real SSH link the
difference was not measurable at all, because the network runs out long before
either parser does. The win is local shells, serial consoles, and anything that
dumps a lot of output at once.
SwiftTerm is still here, in Settings ▸ Appearance ▸ Engine, and is not
deprecated. If something misbehaves, switch back; your choice then outranks the
default permanently, and no update will move you again. The change applies to
terminals opened from now on — an open terminal keeps the engine it was built
with, because swapping it would take the scrollback with it.
What this fixes, compared with 2.30's opt-in version: ⌘F and screen-reading now
cover the whole scrollback rather than just the visible screen, themes apply,
Select All works, ⌘V pastes text and images, ⌘T opens a tab instead of being
eaten by the terminal, and mouse tracking no longer sticks on after a program
that enabled it exits.
Host overrides for a web tab. An internal name that neither your Mac nor
the jump host can resolve now has an answer: name = address, one per line,
under the URL in a Web session. A port may be included — name = 10.0.0.1:8443.
This is Chrome's --host-resolver-rules, and it works the same way for the same
reason: only the address dialled at the far end of the tunnel changes, so the
name still travels, and TLS certificates and name-based virtual hosts go on
working. Typing the address into the URL instead breaks both.
Newest first. Each release published to GitHub takes its notes from the section
matching its version, and make-app.sh refuses to publish a version that has no
entry here — release notes that can be forgotten are release notes nobody writes.
安裝:下載 MacMoba-3.0.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 2.30
An alternative terminal engine, off by default. Terminals can now be drawn
by libghostty — the engine behind Ghostty — instead of SwiftTerm. It parses
faster, though only where nothing slower is in the way: measurably on a local
shell, and not at all over a typical SSH link, where the network is the limit
long before the terminal is. Nothing changes unless you ask for it:
defaults write dev.macmoba.MacMoba terminalEngine -bool true
New tabs use it; existing ones keep the engine they were built with, and
macmoba list-tabs reports which is which. Two things are missing on it so
far — Select All, and the GPU-rendering toggle, which it does not need because
it always draws on the GPU.
Everything else in this release is the groundwork: the app now talks to its
terminal through one seam instead of to SwiftTerm directly, which is what let
a second engine exist at all.
多了一個可選的終端機引擎,預設不啟用。終端機現在可以改由 libghostty(Ghostty 背後的引擎)繪製,
而不是 SwiftTerm。它的解析速度較快,但只有在沒有更慢的東西擋路時才看得出來:本機 shell 上量得到,
一般 SSH 連線上完全沒有差別——網路遠在終端機之前就成為瓶頸。不主動開啟的話,什麼都不會變:
defaults write dev.macmoba.MacMoba terminalEngine -bool true
新開的分頁會使用它,既有分頁維持原本的引擎;macmoba list-tabs 會顯示各分頁用的是哪一個。
目前它還少兩樣:全選,以及 GPU 算繪開關——後者它不需要,因為它一律使用 GPU。
這一版其餘的部分都是為此鋪路:App 現在透過單一接縫和終端機溝通,而不是直接對著 SwiftTerm,
那正是第二個引擎得以存在的原因。
安裝:下載 MacMoba-2.30.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 2.29
Large SFTP downloads are much faster, and no longer look frozen. A download
asked for 32 KB and waited for it before asking again — nearly seven thousand
round trips for a 214 MB file, which on a 20 ms link is over two minutes spent
purely waiting. Sixteen reads now travel at once.
Transfers show a percentage and a real progress bar. The two-pane transfer
panel showed a spinner and "(1 of 1)" for as long as a file took; folder
transfers had a bar that moved without meaning anything, because their size was
never measured. Both now report where they actually are.
Pasted screenshots go to a folder per session. Two tabs onto one host shared
~/.macmoba, so a screenshot pasted in one sat among screenshots from every
other with nothing to say which was which. The upload notice also says a file
was created and that it expires after seven days.
大型 SFTP 下載快得多,也不再像卡住。原本每次只要 32 KB 並等它回來才要下一段——
214 MB 的檔案要將近七千次往返,在 20 ms 的連線上光是等待就超過兩分鐘。現在同時有十六個讀取在傳輸中。
傳輸會顯示百分比和真正的進度條。雙面板傳輸畫面原本只有一個轉圈和「(1 of 1)」,
一直持續到檔案傳完;資料夾傳輸的進度條會動但不代表任何進度,因為從來沒有量過大小。現在兩者都會回報真實進度。
貼上的截圖會依 session 分資料夾。兩個分頁連到同一台主機時共用 ~/.macmoba,
於是在一個 session 貼的截圖和其他 session 的混在一起,無從分辨。上傳提示現在也會說明產生了檔案,以及七天後會清除。
安裝:下載 MacMoba-2.29.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。
MacMoba 2.28
Fix: a right-click in a terminal could upload a screenshot to the remote
machine. Right-click and middle-click paste, and pasting an image into an SSH
session uploads it as a file and types its path — so a screenshot still sitting
on the clipboard from earlier, plus one right-click where a menu was expected,
quietly wrote a file on the far machine. Mouse paste now handles text only;
images still upload from ⌘V and the Paste menu item, where they were asked for.
Pasted images on the remote are now kept for seven days. Nothing had ever
removed them, so ~/.macmoba on a machine you paste into grew without limit.
Only files this app wrote are touched, and only past the seventh day.
修正:在終端機裡按右鍵有可能把一張截圖上傳到遠端主機。右鍵和中鍵是貼上,而在 SSH
分頁貼圖片會把它上傳成檔案並把路徑打進提示字元——所以只要剪貼簿裡還留著稍早的截圖,
在你以為是開選單的地方按一下右鍵,就會在遠端悄悄寫下一個檔案。現在滑鼠貼上只處理文字;
圖片仍然可以用 ⌘V 或選單的 Paste 上傳,那才是你真的要求它做的時候。
貼到遠端的圖片現在保留七天。先前沒有任何清理,所以你貼進去的那台機器上的 ~/.macmoba
會無限成長。只會刪掉這個 App 自己寫的檔案,而且只刪超過七天的。
安裝:下載 MacMoba-2.28.dmg,拖進「應用程式」。已 Developer ID 簽名 + Apple 公證。
需求:macOS 13+、Apple Silicon。
已安裝的版本會透過 App 內更新自動取得這一版。