Added
zurm-server— standalone headless PTY session daemon (cmd/zurm-server). Sessions persist independently of the zurm GUI. Communicates over a Unix socket using a length-prefixed binary protocol (zserverpackage). Zero Ebitengine dependency.Per-pane opt-in server mode — server-backed panes are created explicitly. Regular tabs/panes always use a local PTY. No global toggle.
Keybindings:
Cmd+Shift+B— new server tabCmd+Shift+H— split horizontal (server pane)Cmd+Shift+V— split vertical (server pane)Command palette: “New Server Tab”, “Split Horizontal (Server)”, “Split Vertical (Server)”, “Attach to Server Session”
Auto-start — zurm-server spawns automatically on first server pane creation. Located next to the zurm binary or via PATH. Detached via
Setsid; survives GUI close. Log:~/.config/zurm/server.log.CLI flags:
--list-sessions/-ls— print active server sessions and exit--attach <id>/-a <id>— attach to a server session by ID or short prefix (Docker-style matching)Status bar:
[SERVER]indicator (cyan) when the focused pane is backed by zurm-server.Output replay: 64KB ring buffer per session. On reattach, recent terminal output is replayed so you see context immediately.
[server]config section:address— Unix socket path (default~/.config/zurm/server.sock)binary— path to zurm-server executable (default: sibling of zurm or PATH)make build-server— Makefile target for the server binary.
Changed
Server sessions are NOT saved in
session.json. Local session save/restore is completely independent of zurm-server.pane.New()reverts to original 5-parameter signature. Server panes usepane.NewServer()exclusively.PtyBackendinterface interminal/abstracts PTY I/O.PTYManager(Mode A) andServerBackend(Mode B) both implement it.