v0.5.17
Released: 2026-05-12
Parity cleanup release plus three multi-probe / device-switch UX fixes from the 2026-05-11 capture session. Every setting in package.json is now actually consumed by the code, every setting consumed by the code is declared, and the sidebar finally tells you which probe is talking.
- Search filter no longer carries over to a new connection. Disconnecting from board A and connecting to board B used to keep the previous search filter active, hiding entries on the new board (the status bar would say “4 entries” while only 1 was visible). The webview now clears its search state on every new
connectedmessage, so filters are scoped to the current session. - No more fake “Device Reset Detected” banner on initial connect via the
Reconnected OKpath. The Python helper’sfull_reconnect()recovery routine emits “Reconnected OK” when it completes, and on a first-attach scenario this could fire before any user data has flowed.NrfutilRttTransportnow gates theresetevent behind afirstDataReceivedflag that flips true only after the first chunk of log data is parsed. A second path (the parser’s*** Bootingdetection firing on historical RTT buffer drain) is tracked in TODO.md as a follow-up. - Sidebar now shows the active probe serial when connected via J-Link RTT. Multi-probe workflows (Bluetooth LE central+peripheral, mesh, board farms) previously had no way to tell from the sidebar which of several attached probes the current session was talking to: the “Device” row showed the chip name (
nRF54L15) only. A new “Probe” row sits next to “J-Link Device” and shows the probe serial.
- Column-width persistence. Resizable log-viewer column widths now survive panel closes and VS Code restarts via the new
logscope.columnWidthssetting (set automatically when you drag a column edge). - Double-click a column edge to auto-fit the column to the widest visible content. Useful after applying a filter, or whenever a long module name or message is being clipped.
logscope.jlink.remoteHostsetting is now declared inpackage.json. The remote-RTT plumbing for connecting to a J-Link Remote Server was already in the code (read via-ip <host>arg in the helper), but the setting was not surfaced in the VS Code Settings UI. Marked experimental; full UI for remote-RTT is in progress on a worktree.- CI parity check (
scripts/check-runtime-config-keys.mjs) uses the TypeScript compiler API to verify everylogscope.*setting declared inpackage.jsonis actually read at runtime, and every runtime read corresponds to a declared setting. Wired into.github/workflows/ci.yml; PRs that drift either direction now fail. - Privacy & Telemetry docs page at
docs.novelbits.io/logscope/reference/privacy-telemetry/. Documents the eight event types LogScope reports to Application Insights, the anonymous install ID model, what is never collected, and how to opt out via VS Code’stelemetry.telemetryLevelsetting.
Removed
Section titled “Removed”- Six dead settings that were declared in
package.jsonbut never consumed in code:logscope.rtt.address(its “auto” Zephyr-ELF detection module was never wired in),logscope.rtt.host,logscope.rtt.port(referenced a “jlink-telnet” transport that does not exist),logscope.jlink.interface,logscope.jlink.speed,logscope.jlink.autoStart(their only consumer was aJLinkManagerclass that was never imported anywhere). Users who set these previously saw no behavior change. The default debug interface remains hardcoded SWD inrtt-helper.py, which is what every shipped version has always used. - Two dead source modules:
src/rtt-detect.ts(orphan Zephyr ELF auto-detection helper) andsrc/transport/jlink-manager.ts(orphan J-Link manager class). Combined ~350 lines of code that no production code path imported.
reference/settings.mddocs page now matchespackage.jsonexactly. The three high-severity “documented but not real” entries flagged in the 2026-05-12 parity audit are gone.