cannet v0.9.0
Pre-release
Pre-release
Remote CAN servers
- New
cannet-server: run a CAN interface on another machine and connect the GUI to it over the network — every RPC relays verbatim to the upstream interface. Replay and virtual-bus tooling moved behind adebugsubcommand. - LAN discovery via mDNS (
_cannet._tcp): the GUI browses , holds the live server list host-side, and shows advertised host names. - Servers panel: per-server rows with connect/forget/token affordances, a dedicated row for a server the host is still waiting on, and the session clock offset shown per server. The app's own sidecar never appears as a row.
- The client tracks the peer's clock across the whole session and reconciles clocks across multiple servers with the client's clock for coherent message timing.
cannet-serverships inside every GUI bundle; standalone server archives are packaged per release platform (including a Linux-only leg).- Added command palette action to add
cannet-serverlocation to path - When server started with routable address, enables TLS and presents durable token a client can use to authenticate. Client is presented with server signature for trust verification.
MDF (MF4) support
- Import MDF captures: channel scan, an import dialog with a checkbox per content, and embedded DBCs that load with the capture.
- Signal-only (frameless) MF4 files import directly as signal files; DBC-decoded groups arrive as file-backed signals with provenance tracked in the signal cache.
- Coded channels keep their value tables — imported enums label their values just like DBC enums.
- Export: captures can write back out including marker/event annotations
Plotting
- Multi-select signal rows in plot panels: bulk hide/show/remove/recolor/add.
- Collapsible plot areas (persisted, with per-axis collapse); drag plot areas between plot panels.
- Selected series bolded; "hide others" for a series; hidden signal rows compact to swatch + name.
- Manual Y-range works under the normalized scale; plots recover cleanly after a DBC reload.
- Honest rendering of sparse and stale data: extrapolated stretches draw dashed and clamped to the sample grid, stale lane tiles are hatched, markers land only where a real sample exists, and a one-sample series draws as a horizontal line.
- Enum/categorical lanes: labels drawn in theme-legible ink over backing boxes, hover markers on every area (lanes included), and categorical data served by runs all the way to the live edge.
- Follow-live window width comes from the user (no self-widening), and follow-live no longer predicts past the newest frame.
Signals & filtering
- Generators: project-level regex rules derive signal attributes from names (stable colors).
- Solo filter redesigned: capture-group paging (All→1…N), checkable group subsets, captureless patterns filter flat per area, unmatched areas untouched; persists with the project.
- Undo/redo covers view edits — signals, plot areas, filters, renames, colors, columns; one gesture = one step. Actions that could impact the running system are not part of undo/redo (i.e. RBS value changes)
Capture & project workflow
- Trace-open: persistent busy feedback, cooperatively cancellable imports, and one trace-open at a time.
- Recent captures follow the project (both directions) and are reachable from the command palette.
- Added project directory concern - when a cannet project exists in a directory along with a .cannet dir, that becomes the project directory. The scratch is stored in .cannet, along with window state. In this mode, the project can be autosaved.
- Faster startup when restoring a saved capture; a forced cold pyramid rebuild announces itself and offers a way out.
- Unsaved project view state is no longer restored on next launch
UI & usability
- The DBC panel is now the Database panel; its value column covers file-backed rows.
- Theme menu: light / lighthk / dark.
- Ctrl+F focuses the current panel's find/filter box.
- Gridview: Escape leaves cell edit (and returns from row content to the grid), Shift+Up/Down extends selection, first-drive fixes.
- Assorted polish: keyboard/screen-reader affordances on trace rows, hit-target and alignment fixes, singleton-panel tab titles.
Performance & stability
- 100M+-frame BLF imports ingest, decode, and plot more smoothly, though still with some brief periods of interactivity
- Smarter signal cache: per-signal caches which should be dependent on message + scaling details to avoid expensive signal cache rebuilds which occasionally happened
- Fixes: multiplexed-signal decode, sidecar readiness race on connect, PCAN debug-logging throughput, plus many small stability and performance improvements throughout.