Repository navigation
Releases
v3.3.1-rc1 (test build)
v3.3.0 — Beyond Herdr
[3.3.0] - 2026-11-09
Milestone v3.3.0 "Beyond Herdr": always-on foreground RPC, first-class agent/pane/workspace CLI, semantic agent introspection, worktree swarm DAG runner, Mission Control HUD, and hierarchical D:(W,S,Y,P) coordinates (Phases 65–71, 71 phases total).
Added
- Phase 65 — Architectural Guardrails (
GUARD-01..03):SignalablePidnewtype for all signaling,PaneTransportenum (Local/Remote/None), and focus-and-raise mouse isolation. - Phase 66 — Always-On Foreground RPC & Instance Discovery (
LIVE-01..04):0600RPC socket in TUI and GUI, child PTY env injection (BILTERM_SOCKET,BILTERM_INSTANCE_PID,BILTERM_WORKSPACE_ID,BILTERM_PANE_ID) withfrom_paneattribution, multi-instance registry with--instance <pid|all>, OIA[RPC:LIVE]and:rpc. - Phase 67 — Agent/Pane/Workspace CLI (
HERDR-01..04):w<N>:p<M>and semantic selectors (@claude,@idle,@blocked, ...),bilterm agent|pane|workspacesubcommands, smart prompt injection (bracketed paste aware), zero-polling server-sideagent wait. - Phase 68 — Semantic Introspection & Context Bus (
BEYOND-01..04):agent.last_turn, permission-gate interceptor with approve/deny, per-pane FIFO prompt queue, cross-agentbilterm contextbus. - Phase 69 — Worktree Swarm & DAG Runner (
SWARM-01..04): atomic worktree agent spawner,:swarm run <plan.toml>DAG waves, diff/merge/clean, self-healingverify_cmdretry loop. - Phase 70 — Mission Control HUD & Time-Travel (
HUD-01..04)::agents hud, per-turn replay scrubber, stall/loop watchdog, fullUNI-R01parity. - Phase 71 — Hierarchical Coordinates (
COORD-01..04): 5-levelD:(W,S,Y,P)addressing, universal parser/resolver, title-bar coordinate badge,:coords,coords.resolve/coords.formatRPC,bilterm_coords_resolveMCP tool,[coords]config, tmux pane ids.
v3.2.0: Phases 61–64, Daemon Supervisor & :ssh-tmux TDD Overhaul
Highlights of Release v3.2.0
Phase 61: Classic Drawer Two-Line Rows & Zoom Invariants
- Classic drawer two-line rows (
classic_row_lines) with[R:n]header chips and:drawer rowstoggle. - Effective zoom derived strictly from
z_stack.top(), ensuringtoggle_zoomis an idempotent toggle and preventing mouse hit-testing from falling through hidden layers. - Inactive window focus clicks preserve OIA and prompt chrome (
was_activegate); prompt mode, raw mode, copy mode, and scrollback offsets survive stack switches and column reflows.
Phase 62: Nested TUI Selection Override & Vi Copy Mode Ergonomics
Shift/Altmouse drag local selection override when inner TUIs (vim,htop,tmux) capture mouse events.- Reassembled split-read inbound OSC 52 sequences across buffer boundaries; added OIA
MOUSE->APPand[COPY]badges. - Scrollback-absolute selections with Vi/Emacs motions (
w,b,e,0,^,$,gg,G,H,M,L,/,?,n,N), double/triple-click word/line selection, and dynamic copy mode hotkey hint bar (src/ui/copy_hints.rs).
Phase 63: Cross-Platform Primary Modifier, Sticky Window Mode & Key Conflict Engine
- Cross-platform
Primarymodifier (Cmdon macOS GUI,Ctrl+Shifton Linux/Windows) and per-OS key profiles (mac,windows,linux,portable,legacy). - Fixed macOS
Optiondead-key navigation and WindowsAltGrcompose handling; replaced conflictingAlt+Mglobal chords. - Sticky Window mode (leader
w/Primary+O) with which-key visual overlay (src/ui/which_key_ui.rs). - Keyboard-operable top menu bar across all 9 categories with mnemonics, hotkeys, and computed accelerators.
- Key collision detection engine (
src/input/keyconflict.rs),:keys check|list|explain|profilecommands,keys.*JSON-RPC methods, andbilterm_keysMCP tool.
Phase 64: Byte-Boundary Traffic Telemetry & Traffic Monitor
- Leaf module
src/traffic/providing lock-free zero-allocation ring-buffer metrics across all 33 byte boundaries (H01..H33). - Live classification of escape sequences, control bytes, and printable text payloads.
- Floating
TRAFFIC MONITORwindow in TUI and GUI (src/ui/traffic_monitor_ui.rs). :trafficcolon commands,traffic.*JSON-RPC methods, andbilterm_trafficMCP tool.
Daemon Supervisor & Process Fixes
- Fixed
spawn_daemon/ensure_startedreturningPID 0; now tracks real child OS process IDs, acquires lockfile, and registers inDaemonRegistryunder-d/--headlessflags. - Floating
DAEMON SUPERVISORmanagement window in both TUI & GUI (src/wm/daemon_window.rs,src/ui/daemon_window_ui.rs). - Wired
:daemon list|status|start|stop|switchand the top menuDaemonitems to open and refresh the supervisor dialog.
:ssh-tmux Remote Pane Overhaul (TDD)
- Remote panes now run PTY-less, eliminating local shell double-echo and unintended local command execution.
- Added
link_raw_inputto mask SSH passwords and credentials from echoing on screen or recording into shell history. - Implemented immediate fallback binding (
primary_pane <-> %0) with backgroundlist-panesreconciliation on idletmux -CCattach, eliminating"Link down"errors. - Fixed
:ssh-tmux prefillto close active modals, exit raw/copy modes, and force open the prompt populated with:ssh-tmuxand cursor at the end.
Bilterm v3.1.0
Feature release delivering Drawer Window Peek & Live Preview (Phase 56), Smart MIME-Aware Clipboard Paste & Filterable Clipboard Viewer Window (Phase 57), Local AI Speech-to-Text (STT) Dictation (Phase 58), Embedded Chrome CDP Browser & 60fps Video Player Canvases (Phase 59), and the Multi-Surface Web Frontend Backend & @agent-manager/protocol v1 Bridge (Phase 60).
Added
- Phase 56 — Drawer Window Peek & Live Preview Pane (
DRW-PEEK-01..03, #31): Highlighting any live window or saved session in the Classic or Navigator drawer renders a zero-copy, zero-SIGWINCHfloating preview pane (:drawer preview [on|off|toggle|focus|dismiss]/:peek,Pin Classic drawer,vin Navigator drawer, JSON-RPCdrawer.preview, MCPbilterm_drawer_preview) withEnter/click-to-focus andEsc/outside-click dismissal. - Phase 57 — Smart MIME-Aware Clipboard Paste & Filterable
CLIPBOARDViewer Window (CLIP-01..04, #31): PressingCtrl+VinRawPtyPassthrough/ALT_SCREENmode probes OS clipboard MIME types and wraps text inDECSET 2004bracketed paste (\x1b[200~...\x1b[201~), fixing"No image or video found in clipboard"in Herdr and Claude Code while passing0x16through for image/video clipboards. AddedShift+RightClick/Shift+MiddleClickSGR mouse bypass, inboundOSC 52decoding, a 200-entry multi-sessionClipboardRegistrywithpane::redactsecret masking, and a floating, pinnable, dockableCLIPBOARDviewer window (Ctrl+Alt+V, Leader;,:clipboard/:clips, JSON-RPCclipboard.*, MCPbilterm_clipboard). - Phase 58 — Local AI Speech-to-Text (
STT) Optional Module (STT-01..03, #33): Independent zero-bloat voice dictation subsystem (src/stt/) supporting OpenAI-compatible Whisper endpoints (whisper.cpp,speaches,LocalAI,vLLM,LM Studio), Ollama audio models, and local CLI pipes (whisper-cli,mlx_whisper) with two-tier audio capture, push-to-talk/VAD, OIA[🎙 REC]telemetry, and safe staging intoFloatingCommandPrompt(Ctrl+Alt+S, Leader,,:voice, JSON-RPCvoice.*, MCPbilterm_voice). - Phase 59 — GUI Chrome Engine Web Browser Canvas & 60fps Video Player Canvas (
WEB-01..02,VID-01..02, #33): Embedded Chromium engine web browser canvas via CDP Screencast (CdpBrowserEngineunder private0700profile sandboxing) with interactive mouse/keyboard/URL/history/zoom navigation (Ctrl+Alt+B, Leader.,:browser, JSON-RPCbrowser.*, MCPbilterm_browser), plus a 60fps RGBA hardware-accelerated video player canvas (VideoCanvasEngineviaffmpegpipe with OSD transport controls and audio sync:Ctrl+Alt+Y, Leader',:video, JSON-RPCvideo.*, MCPbilterm_video) across GUI (GuiTextureQuad) and TUI (Kitty/Sixel/HalfBlock). - Phase 60 — Multi-Surface Web Frontend Backend &
@agent-manager/protocolBridge (WEB-FE-01..04, #33): RFC 6455 WebSocketGET /wsserver implementing@agent-manager/protocolv1 (hello/hello_ack,agent:init_list,agent:outputdelta streaming withseq/resumeFrom,agent:input/resize/create/kill/update/broadcast/history/approve), atomicworkspace.view_modelRPC & REST routes (GET /agents,GET /agents/:id,GET /logs/:id,POST /search,GET /tokens.css), multi-clientClientViewRegistrydecoupling browser viewports from local TUI/GUI state, andSEC-R01-confined--web-dirstatic SPA serving with opt-in--cors-origin(Ctrl+Alt+W, Leader@,:web, JSON-RPCweb.*, MCPbilterm_web_surface).
v3.0.5
Bug-fix release. Thanks to @kitsumiko for the key-repeat fix.
Fixed
- Holding a WM toggle key no longer flickers it (supersedes #20, thanks @kitsumiko). Key auto-repeat (
KeyEventKind::Repeat) of a chord the window manager consumes as a toggle (F7 drawer, Ctrl+P palette, the leader key, user[keybindings]toggles, ...) is now ignored, so a held key fires once. The filter only applies to keys the WM actually handles: keys forwarded to the pane, includingAlt+h/t/c/l/x,Ctrl+Space,F2andF5in alt-screen apps, keep their auto-repeat.
Bilterm v3.0.4 — agent.wait non-blocking, macOS verify.sh, Linux release script
Bug-fix and tooling release. Thanks to @kitsumiko for the agent.wait, macOS verify.sh and docs fixes.
Fixed
agent.waitno longer blocks the JSON-RPC server (#26). Previously, a client waiting for an agent message stopped every other client's requests until the wait ended, which took up to 10 s. Waits that have no message yet are now parked and checked every 50 ms while the serve loop keeps handling other requests. This applies to the Unix-socket, TCP and HTTP endpoints. The 10 s timeout cap is unchanged, and at most 64 waits can be parked at once.scripts/verify.shruns under macOS/bin/bash3.2 (#25). It no longer usesmapfile, empty arrays no longer tripset -u, an unknown--onlygroup or--tierexits 2, and the summary line no longer picks up the extra spaces BSDwc -ladds. The macOS CI job is green again and is now a required check.
Changed
scripts/build-release-assets.shbuilds only the Linux targets, and builds the tag (#24). It used to try to cross-link the macOS targets, which fails without the Apple SDK, so it aborted before packaging anything. It also copied its windows-gnu zip over thebilterm-x86_64-pc-windows-msvc.zipalias, which an upload would have used to replace the native Windows installer. macOS and Windows archives come from therelease-binariesworkflow. The script now builds the tag in a clean worktree, and adds--upload, which merges its checksums into the release'sSHA256SUMS, and--no-build.
Documentation
Bilterm v3.0.3 — Security Release
Security and hardening release. Thanks to @kitsumiko for reporting and fixing all of the issues below.
⚠️ Breaking: TCP listeners now require --token-file
bilterm --headless --listen 127.0.0.1:PORT (also [::1]:PORT and localhost:PORT) no longer starts without a bearer token. Loopback TCP can be reached by every local user and, cross-protocol, by any web page you visit, so it now needs a token just like remote listeners.
To migrate, create a 0600 token file and pass it with -t/--token-file (or BILTERM_TOKEN_FILE):
umask 077; mkdir -p ~/.config/bilterm
head -c 32 /dev/urandom | base64 > ~/.config/bilterm/token # >= 16 chars, mode 0600
bilterm --headless --listen 127.0.0.1:7370 --token-file ~/.config/bilterm/token
bilterm ctl --token-file ~/.config/bilterm/token 127.0.0.1:7370 workspace.statusCustom clients must send auth.login with the token before any other request. Alternatively, use the default private Unix socket, which checks the peer UID and stays tokenless.
Security
- GHSA-637v-r3qr-rm5x (high): a tokenless loopback TCP control listener could be driven cross-protocol from a web page or by any local user (#22).
- TCP listeners now require a token (see above).
- The JSON-RPC line reader now replies once and closes the connection on any non-JSON or HTTP-shaped line, so an HTTP body is never dispatched. This applies to both TCP and Unix sockets.
- GHSA-6269-rw3f-9hr4 (high):
:record pane <path>wrote to any path and followed symlinks, so a file could be overwritten via RPC/MCP (#23).- Under automation confinement,
:record paneonly accepts a plain file name inside the confine directory, the same as:recordand:record workspace. - User-chosen recording paths are written atomically with mode
0600. A symlink at the final path is replaced, not followed.
- Under automation confinement,
- OSC 52 clipboard passthrough is sanitized (#16).
- Each sequence ends at its own terminator, and only well-formed set-clipboard payloads are forwarded.
- Clipboard read queries are dropped.
- Kitty graphics and VT side-channel state are bounded (#17).
- Images are limited to 512 px per side, size arithmetic is checked, and the payload size is capped.
- Retained notification and image lists drop their oldest entries once full.
- Session and layout state files are written privately:
0600files in0700directories (#18). - The daemon stop command only signals a PID that still holds the daemon lock (#19).
- PIDs ≤ 1 and PIDs that don't fit in a
pid_tare rejected. - A stale lock is cleaned up without sending any signal.
- PIDs ≤ 1 and PIDs that don't fit in a
Fixed
- Ctrl/Alt/Shift with arrows, Home/End, Insert/Delete, PageUp/PageDown and F1–F12 now send standard xterm modifier sequences (
CSI 1;m X/CSI n;m ~), so word-jump and selection work in shells and editors. Unmodified Insert now sendsCSI 2~(#21). - Fixed 21 broken or invalid rustdoc intra-doc links.
CI
Bilterm v3.0.0 — Agent Messaging, Session & Window Management, Session Packing Viewer & Daemon Supervisor
Added
- Agent-to-Agent Messaging & Coordination (Phase 52, AGT-01..03, UNI-R01):
- Addressing & Bounded Mailboxes (
AGT-01): Stable per-pane agent names (:agent name [id] <name>,agent.name, envBILTERM_AGENT) mapped inAgentMailRegistrywith ordered per-recipient mailboxes (MAX_INBOX_DEPTH = 64,MAX_BODY_BYTES = 8192). - Three Delivery Modes (
AGT-02):mailbox(default queued delivery),nudge(one-line notification injected into the target pane only when idle/waiting and automatically suppressed during!ECHOpassword lock orALT_SCREEN), andfile(0600private payload file written viasecure_fsunderagent-mail/<to>/msg-<id>.txtwith path attached), plus blocking/polledagent.waitwith reply matching and timeout. - Coordination, Safety & Surfaces (
AGT-03)::agent <name|send|broadcast|inbox|ack|list|enable>, JSON-RPCagent.{name,send,broadcast,inbox,ack,list,wait}, MCP toolbilterm_agent_mail, dynamic MCP resourcebilterm://agent/<name>/inbox,/eventsAutomationEvent::AgentMessage, unread mail badges (✉N) in theAGENTSlist window and Navigator drawer, opt-in[api] allow_agent_messaginggate, per-sender rate limit (32/min), andreply_tohop-count loop guard (MAX_HOPS = 8).
- Addressing & Bounded Mailboxes (
- Session & Window Management (Phase 53, SES-01..05, UNI-R01):
- Cross-Session Window Move (
SES-01): Live window migration between sessions (:window move <session>, Navigatormkey, and right-click context menu) preserving the live PTY process, scrollback buffer, running command, and z-order/focus invariants. - Window & Session Rename (
SES-02)::window rename [id] <new>and:session rename <old> <new>withvalidate_safe_name/sanitize_displayenforcement and deterministic duplicate disambiguation. - Multi-Select & Atomic Bulk Operations (
SES-03): Multi-select windows in the Navigator (Space,Shift+Up/Down,Ctrl+A,Ctrl+Click,:window select <toggle|range|all|none|invert|id>) with visual[✓]badges and all-or-nothing bulk actions (:window bulk <move|close|force-close|rename-prefix|tile|pin>) honoring exit-guard protection. - Single-Step Topology Undo & Persistence (
SES-04):TopologyUndoEntryundo stack (:window undo, Navigatorukey) restoring placement, name, order, and selection across moves, renames, and bulk operations, persisted across TOML session save/load. - Automation API Parity (
SES-05): JSON-RPCwindow.{move,rename,select,bulk,undo}andsession.rename, plus MCP toolbilterm_window_manage.
- Cross-Session Window Move (
- Session Packing Viewer & Drag-and-Drop (Phase 54, VIEW-01..04, UNI-R01):
- Deterministic 2D Squarified Treemap (
VIEW-01): Pure layout engine (pack_sessions_treemap) packing sessions and nested sub-sessions into proportional 2D containers with character-cell aspect ratio compensation and zero-panic tiny-rect fallback. - Non-Modal
SESSION MAPWindow (VIEW-02): First-class floating, pinnable ([•]), and dockable ([□]) window (:sessions map,:packing) rendering packed session containers and window cards in both TUI (Borland box-drawing) and--guivector mode. - Mouse Drag-and-Drop & Keyboard Equivalents (
VIEW-03,VIEW-04): Drag window cards across session containers by mouse (highlighting valid drop targets,Escto cancel) or via keyboard pickup/target/drop (Space/mpickup,Tab/arrows target session,Enterdrop,Esccancel), plus JSON-RPCsession.mapand MCP toolbilterm_session_map.
- Deterministic 2D Squarified Treemap (
- Daemon Supervisor & Multi-Daemon Awareness (Phase 55, DAEM-05..08, UNI-R01):
- Singleton Lock & Auto-Dispatch (
DAEM-05): Exclusive flock/PIDDaemonLock(daemon-singleton.lock) under0700secure_fsruntime dir with stale-PID verification (kill(pid, 0)) and automatic stale socket recovery;bilterm ctlauto-spawns the singleton daemon on first need. - Opt-In Multi-Daemon Isolation (
DAEM-06):--daemon --name <name>and[daemon] mode = "multi"isolate each named daemon with its owndaemon-<name>.sock,daemon-<name>.lock, and metadata entry. - Live Peer Registry, Handshake Safety & Cross-Daemon Find (
DAEM-07,DAEM-08):DaemonRegistrywith atomic0600JSON metadata and dead-peer pruning,CARGO_PKG_VERSIONwire handshake check,:daemon <list|status|start|stop|switch|prune>, leader chordsCtrl+X D <L|S|N|Q|W>,Tools > Daemonsmenubar dropdown, JSON-RPCdaemon.*, MCP toolbilterm_daemon, and cross-daemon:finddiscovery (Origin::Daemon).
- Singleton Lock & Auto-Dispatch (
Bilterm v2.9.0 — Persistent SSH+tmux, First-Class Utility Windows, Script Studio & Retro/Google Font Engine
Added
- First-Class Utility Windows & Script Studio (Phase 51.2, WIN-01..03, UNI-R01):
- FONTS Utility Window (
WIN-01,:fonts,:font list,:font presets,:font scan): First-class floating, pinnable, and dockable window for live typography configuration. Unpinned mode dismisses on Enter apply; pinned mode (*or[•]) stays open for instant real-time A/B visual comparison while cycling font presets and custom TTF files. Includes+/-point-size stepping,[/]scale percentage stepping,aapply-to-all toggle,sdirectory rescan, and menubar integration (View -> Fonts Window). - Pinnable COMMAND PALETTE Window (
WIN-02,:commands,:palette): Searchable command window supporting one-shot execution and persistent workbench mode. PressingAlt+Por*or clicking[•]insideModal::Palette(Ctrl+P) promotes the search modal intoCommandWindowStatewith query retained. Records command executions, timestamps, exit status, and return messages into a scrollableOUTPUT / HISTORYbottom pane. - SCRIPT STUDIO Window (
WIN-03,:script,:studio): Multi-line:colonand shell script editor with live single-step debugging ([⏭ Step (F10)], program counter▶), full script runner ([▶ Run (F5)]), debugger reset ([↺ Reset]), live action recorder ([● Rec (Ctrl+R)]capturing executed Bilterm commands into the buffer), and secure persistence ([💾 Save]/[📂 Load]under~/.config/bilterm/scripts/*.btviasecure_fs0600/0700). - Mutual Focus Exclusivity: Opening any utility window or focusing terminal panes automatically blurs other utility windows and releases keyboard ownership cleanly.
- FONTS Utility Window (
- Bundled Retro Fonts & Online Font Installers:
- Bundled retro fonts:
Lazenby Computer(Smooth & Liquid variants) and Google FontVT323classic DEC pixel terminal font. - On-demand Google Fonts installer:
:font google <name-or-url>downloads and activates Google Fonts dynamically. - ZIP / URL font archive installer:
:font add <path.zip|url>unpacks and loads custom font archives into~/.config/bilterm/fonts/.
- Bundled retro fonts:
- Persistent SSH +
tmux -CCsessions (:ssh-tmux, Phase 51.1, PST-01..04, UNI-R01):- Real PTY transport & macOS PATH:
:ssh-tmux <user@host> [session]spawns a dedicated PTY runningssh -ttintotmux -CC new-session -A -s <name>wrapped in a login shell (exec $SHELL -lc ...) that includes macOS Homebrew and MacPorts paths (/opt/homebrew/bin,/usr/local/bin,/opt/local/bin). - Honest status & password safety: Status honestly reports
connectinguntil theESC P 1000 psentinel arrives. Host-key questions and password prompts render interactively in the primary pane with raw keystroke pass-through, bypassing command prompt history, undo/redo buffers,history.log, and Find search indexing. - Supervisor & auto-reconnect with exponential backoff: Deterministic, capped exponential backoff (1s, 2s, 4s, 8s, 16s, 30s; max 20 attempts) automatically reconnects after network drops or transient
%exitreasons (server exited unexpectedly,lost tty,too far behind,connection). Never retries fatal auth errors, missingtmux, user disconnects, or cleanly ended sessions. - Topology hydration: Reconnecting panes settle 300 ms, run
refresh-client -C, and hydrate screen buffers withcapture-pane -p -e -J -S -2000 -t %N, holding live output during hydration to prevent interleaved text corruption. Stale unmapped panes are tagged with orphan banners. - Held exit banners: Exited remote SSH and tmux panes persist with an interactive status banner displaying return code, exit cause, and last diagnostic output lines rather than closing abruptly; click or
rrespawns in-place. - Honest restore labels: Restoring a saved workspace session no longer marks local shells with remote badges; displays
(not connected)until reconnected. - SSH keepalive & fresh TCP policy: Passes
ServerAliveInterval=15,ServerAliveCountMax=3,TCPKeepAlive=yes, andConnectTimeout=15. SetsControlMaster=noandControlPath=nonefor persistent links so every reconnect establishes a fresh TCP connection. - Structured tracing: Structured
bilterm::linktracing events (link.connect,link.up,link.down,link.retry,link.give_up,link.control_exit,link.spawn_failed,link.hydrate,pane.exit) with redacted argv (redact_ssh_argv) and zero secret leakage inbilterm.log. - Unified verbs, chords, menu items & API:
- Verbs:
:ssh-tmux reconnect,:ssh-tmux disconnect,:ssh-tmux info,:ssh-tmux prefill. - Keybindings:
Ctrl+Alt+R(reconnect, reserved in raw passthrough), leaderCtrl+X U(reconnect),Ctrl+X Q(disconnect),Ctrl+X u(prefill). - Banner keys:
Enter/r(reconnect),x(disconnect),d(detach), left-click on banner row (reconnect). - Menu bar: Top menu Tmux dropdown items for all four verbs.
- Automation: JSON-RPC method
remote.link(op: "status" | "reconnect" | "disconnect"), and MCP toolbilterm_remote_link(14th tool).
- Verbs:
- Behaviour changes to note:
remote.connect_tmux/remote.connect_ssh{tmux_session}returnsstatus: "connecting"rather thanconnected_ssh_tmux.TmuxControlBridge::new()starts empty (no longer pre-seeded with%0 -> pane 1).- One persistent remote tmux link can be active at a time; starting a second returns an error instructing to disconnect first.
:sshpane OpenSSH connection multiplexing usesControlPersist=10s(shortened from 60s).
- Real PTY transport & macOS PATH:
- Graph edges trace real communication. Edge brightness is a pure function of how often and how recently a pair talked (terminal braille and GUI vector alike). After
agents_window.edge_fade_secs(default 60, also:agents fade [secs]) it decays to a floor and never disappears once the pair has spoken. - Communication topology. A bounded, session-long record of which pairs communicated (count, first/last event) that survives the 512-event ring:
:agents topology(data over RPC/MCP) and:agents topology export <name>(private0600file). - Find window:
:find agent|session|historyandCtrl+Alt+F(Phase 50.1). One fuzzy, ranked search over open agents and panes, live and saved sessions, and command history (View > Find Agents / Find Sessions / Find Command History). Every row shows its source ([live],[saved:<name>],[log:<name>]). Secret-looking commands are never stored or indexed; secret-lookinghistory.loglines are masked on read and only counted (n masked).:finderdrives the open window. Read-only automation: RPCfind.agents,find.sessions,find.history, and MCPbilterm_find(MCP now has 11 tools). Coverage limits (SSH and tmux, raw-mode input, thetmux -CCbridge not reachable from any command) are documented in user guide chapter 12. Bare:find <text>and:searchare unchanged except for the three reserved first words.
v2.8.0
Added
- Pin the MCP window:
:mcp pin|unpinor*in the console. A pinned window stays open and stops grabbing the keyboard: Esc (or a click elsewhere) returns focus to the panes, a click inside takes it back,:mcp closeunpins and closes. The title shows[PIN]. - Pin the drawer from the keyboard/commands:
*in the focused drawer toggles Fixed/OnDemand;:drawer unpinadded (:drawer pinalready existed). - Interactive panel scale (GUI): Ctrl+wheel over the drawer or MCP window,
[/]in either,:drawer scale N,:mcp scale N(each panel scales independently;:panel scale 75..200still sets both).