Releases: garacil/superterm
Release list
superterm 3.5.1
A daemon that blocks on nothing, panes that may spread across cores, and a
viewport that belongs to each client alone.
Nothing in the session daemon blocks any more
The detached daemon is a single poll(2) reactor now. The listener, half-made
connections, attached clients and the pane PTYs are all nonblocking and
served from one fpPoll loop with per-tick budgets, so no single peer can
park the process. A connection that sends half a header expires after a
second; a client that keeps half a megabyte waiting and makes no progress
for ten seconds is cut loose while everyone else continues; input queued for
a program that stopped reading its terminal waits for its own POLLOUT
without delaying another pane or socket; a frame header promising more than
the protocol allows drops that peer on sight; and descriptors above the old
select() ceiling of 1023 are simply descriptors.
Panes may spread across cores
[session] multithread=1 -- the default -- keeps the daemon exactly as it
was: one thread, one reactor. multithread=auto, or a total thread cap,
lets busy panes run on their own fpPoll workers, created when a pane
appears and removed when it closes, while the socket reactor remains the
single owner of every client and session structure. The effective cap never
exceeds the CPUs available to the process, SUPERTERM_MULTITHREAD overrides
the file for one launch, and a running daemon keeps the mode it started
with. GNU/Linux and macOS.
Each attached client owns its geometry
Attaching or resizing a smaller terminal no longer changes the one real PTY
size and reflows every other client. The default resize_policy=session
keeps one canonical daemon screen and gives each UI a private viewport into
it, including cursor following and translated mouse/copy coordinates. Window
geometry and focus stay local; shared titles and explicit CLI window commands
still propagate. resize_policy=smallest retains the former common-minimum
behaviour. The pane menu can explicitly fit the shared PTY to the current
window when that is what the user wants.
An interactive exit is now client-local while other viewers remain attached.
Alt-X still saves and Alt-Q still skips saving, but neither can terminate
another active UI; the last client closes the session. Explicit CLI kill
remains session-wide.
Smaller notes
- F5 passthrough stays geometrically safe when the attached clients use
different terminal sizes, and the FreeVision cursor repaint no longer
leaks into raw mode. - The macOS build is back to zero compiler hints: the darwin libproc buffers
are initialized where the data-flow analysis cannot seeMoveand
proc_pidinfofilling them. - Every push now builds and runs the full suite on GNU/Linux x86_64, macOS
Apple Silicon and macOS Intel. - The daemon's new manners have their own coverage: fragmented frames,
stalled peers, pending-slot overflow, oversize headers, descriptors past
1023, the per-client viewports, and the multicore reactors under load.
macOS
Native builds for macOS (same 3.5.1 sources):
superterm-3.5.1-macos-arm64.tar.gz— Apple Silicon (M1/M2/M3/M4)superterm-3.5.1-macos-universal.tar.gz— universal (Intel + Apple Silicon)
Install:
tar xzf superterm-3.5.1-macos-arm64.tar.gz
cd superterm-3.5.1
xattr -dr com.apple.quarantine superterm # unsigned build: clear Gatekeeper quarantine
sudo install -m 0755 superterm /usr/local/bin/superterm # optional: put it on PATH
./supertermNotes: mouse works in Terminal.app/iTerm2 (enable "Use Option as Meta key" for Alt/menu shortcuts). Local shells and SSH panes both supported.
superterm 3.5.0
Text that moves between panes, a pane that keeps its colours when you look
away, and the tracing written down at last.
Clipboard history across local and SSH panes
The new Clipboard / Portapapeles menu keeps the ten most recent items in
memory and lets one be selected for paste. Ctrl-Q [ enters pane copy mode,
Ctrl-Q ] pastes the newest item, and Ctrl-Q h opens the history. Host
terminal paste is captured atomically with bracketed-paste mode, while pane
copies and pane-generated OSC 52 writes reach the host clipboard without
allowing a pane to query and read it. UTF-8, scrollback, attached sessions,
and mouse selection use the same client-local history.
Focus changes the border, not the terminal
An unfocused pane no longer has its terminal cells darkened into greyscale.
Every pane keeps the application's exact foreground, background and text
attributes whether focused or not; only the window border/title and terminal
cursor indicate focus. Because the pane interior is unchanged, focus switches
also leave those cells out of the terminal delta instead of retransmitting
content over a local or SSH connection.
Minimize or restore every window
The Windows / Ventanas menu now contains Minimize all windows and
Restore all windows. Both commands update the complete workspace together;
individual minimize and restore entries remain in Panes / Paneles.
How to trace superterm, written down
docs/DEBUGGING.md is new. It says what SUPERTERM_DEBUG and
SUPERTERM_DEBUG_FULL turn on, that a debug build traces by itself while a
release build only traces when asked, and how to read a line of trace and the
prefixes it uses. It documents the crash report -- reason, role, pid, uptime,
a backtrace with file and line, and the last of the trace -- and that the
release build keeps -gl so that backtrace still names a line. It explains
how to trace a session someone else is attached to, and how to drive a
reproduction from a script with test/stlib.py, the same harness the suite
runs on. It ends with three ways of measuring that quietly lie: a shell that
echoes the marker you are waiting for, a line ending in a carriage return that
the next prompt paints over, and a picture read from where it is installed
rather than from the tree you just edited.
macOS
Native builds for macOS (same 3.5.0 sources):
superterm-3.5.0-macos-arm64.tar.gz— Apple Silicon (M1/M2/M3/M4)superterm-3.5.0-macos-universal.tar.gz— universal (Intel + Apple Silicon)
Install:
tar xzf superterm-3.5.0-macos-arm64.tar.gz
cd superterm-3.5.0
xattr -dr com.apple.quarantine superterm # unsigned build: clear Gatekeeper quarantine
sudo install -m 0755 superterm /usr/local/bin/superterm # optional: put it on PATH
./supertermNotes: mouse works in Terminal.app/iTerm2 (enable "Use Option as Meta key" for Alt/menu shortcuts). Local shells and SSH panes both supported.