Upgrade Notes
Most of this release runs on the Lager Box, not in the CLI. Update every box you use, or none of the fixes below reach you. See Installation.-
lager logicnow exits non-zero when a command fails. Earlier versions printed nothing and exited 0 when the net name was wrong, or when the box rejected the call. A script that reads the exit code can now fail where it passed before. That failure is real, and it was always there. -
LogicDisplaySize.MediumandLogicDisplaySize.Largenow set the sizes they name. The two values were swapped. Code that passesLargeto get a medium display must swap the value back. - The box refuses a probe serial it cannot bind to. It used to fall through to whichever probe the backend picked. A script that relied on that fallback will now see an error that names the serial.
-
A failed
/invokereturns an error message without the box’s stack trace. The trace goes to the box log. Code that parses a traceback out of the response must read the log instead.
Bug Fixes
-
lager logic <net> enableanddisablefailed on the Rigol MSO5000. The mapper called ten methods that no driver defined, so each one returnedFunction not foundat runtime. The driver implements them now. -
lager logic <net> disablewaited on a query the scope never answers. An MSO5204 accepts:LA:DIGital<n>:DISPlay?and returns nothing, and reports no error when asked. The driver uses a form the instrument answers. -
lager logicreported success after the box failed. The worker returned no status, so the command printed nothing and exited 0. It prints the box’s error and exits 1. -
POST /debug/connectvalidates the probe serial and port overrides it accepts. A malformed request returns 400 instead of a 500 from deeper in the stack. -
GET /download-filebuilds itsContent-Dispositionheader safely. A crafted filename can no longer inject header lines.
Improvements
- The box checks that every path it builds from a client-supplied name stays inside the directory that name belongs to. This covers binary names, probe serials, detached job ids, device-lock keys, debug scripts, OpenOCD config files and tty names. Each check sits beside the join it guards.
-
SECURITY.mdgains a Threat Model. It records which behavior is deliberate, and it states that network reachability is the security boundary. The host firewall does not filter the ports the box’s containers publish. Treat the network as the control, and put the box on a VPN or an isolated LAN. -
The Architecture page corrects three claims about box internals, and the
troubleshooting page documents
[Errno 16] Resource busy.
Known Limitations
-
The MSO5000 trigger-configuration and bus-decode surfaces are incomplete.
115 mapper methods call driver functions that do not exist, across pulse,
UART, I2C, SPI and CAN triggers and every bus decode type. Each one fails at
runtime with
Function not found. The defaults paths work; anything past them can fail. Tracked in issue #418. -
lager usb <net> cyclecannot confirm re-enumeration on every hub. On Acroname and YKUSH hubs it reportsno device on this port to watch foreven when the port holds a device that does re-enumerate. The power cycle itself works. Only the Plugable driver observes the reconnect. Tracked in issue #423.

