0.51.0
本頁內容尚未翻譯。
Released 2026-11-01.
Upgrading
Section titled “Upgrading”- The first pi session after the update restarts the sb server. The control socket speaks a new protocol (below), and a server of the earlier protocol cannot take it, so a newer session ends that server by signal and starts a new one. The GUI drops for a few seconds and its token changes;
/boss guigives the new address. - A net sidecar of an earlier version is ended by
jointhe same way. Until then it answers the new commands with “no net sidecar”. - While
server.jsonnames a process that runs and does not answer, no session starts a second sb server and none marks it stopped: pi leaves it, says so once, and names the command that ends it (taskkill /F /PID non Windows;kill n, thenkill -9 n, elsewhere).
Control socket handshake (protocol 2)
Section titled “Control socket handshake (protocol 2)”- The control socket of the sb server and of the net sidecar never carries the secret. Both sides prove they know it with a mutual challenge bound to both nonces and to the direction, and the client sends its request only after the server has proved itself.
- A program that takes the socket’s name while the real server is down receives only the opening hello: no secret and no request. Before the peer has proved itself, nothing it sends is echoed into an error.
- A mismatched version fails closed in both directions; nothing falls back to the old hello.
- A close or timeout after the request was written is reported as “may still be carried out”, not as “no sidecar”.
server.jsongainsproto.
Tower runs: a tool list and a closed state folder
Section titled “Tower runs: a tool list and a closed state folder”- A local tower run gets only the file tools it needs and no shell. Its file tools cannot read the sb server’s state folder (
server.json,memory.json, the GUI and pairing secrets, the Straw Link key, pi’sauth.json), however the path is written:file://URLs,~, the Windows forms/c/,/mnt/c/,/cygdrive/c/, and~\, upper case, or a symlinked parent. Windows network paths are refused. - A hand run (a tower run in the boss’s standing pi) keeps every tool in the turns the boss’s own typing starts. A turn that a main’s, a peer’s, or the board’s event starts gets the local run’s tool list.
- An ally run gets the same state-folder denial at every trust level. At
dispatchit keeps its shell, which can still read those files:dispatchgives the peer this computer’s user authority, the sb server’s boss credentials included.
- Geek view, set per device;
/boss gui viewsets the server’s default view, which a device that follows the server shows. Only the pi command changes the server’s default. - Phone layout: the log takes the screen, Quit and Leave/New move into
⋯menus. - A settings page replaces the settings popover and the Phone, Teams, and Server tiles.
- Fixes from the acceptance pass: the Wi-Fi off state keeps its full warning above the turn-on button; a persistent specialist on a new task shows working; the question card scrolls with a cue; forced colors, 360 px layouts, and the dialog hints.
Boss commands in pi
Section titled “Boss commands in pi”Typed twins of actions that were only on the page:
/boss close <name>,/boss close all <workspace>,/boss stash --workspace <ws>,/boss dismiss;/boss gui devices,/boss gui unpair <id>|all,/boss server logs;/boss open base <dir> [label],/boss open member [dir],/boss open main <dir> [prompt];/boss link [status]and/boss link decide <id> approve|refuse(approving compares the safety words in pi).
They are refused in tower and ally runs.
A paired device’s composer, and the first message of a session it opens, refuse the commands that manage pairing, remote access, Wi-Fi, the server, the default view, and join decisions, nested /boss open prompts included. Those commands’ dialogs, when relayed to the GUI, can be seen but not answered from a paired device. This is a guard against slips, not a boundary: a paired device with the terminal’s key pad types like the boss’s own keyboard, ! shell commands included.
Other fixes
Section titled “Other fixes”cli.mjs up --timeoutis documented with its bound; a denied start-time read clears its timer; setup says “not set up” instead of “ask again”; the Windows profile requirement is documented.- Tests fail when a run leaves a new entry at the top of the checkout or a
~there.