cannet v0.10.0
Pre-release
Pre-release
Opening a capture
- Fixed: a BLF written relative to capture start no longer draws
negative times. - Fixed: an import now keeps every frame inside the range you asked
for.- Previously it stopped at the first out-of-range frame and never
resumed. - On the measured file that lost 90 of 121 frames, including the two
earliest.
- Previously it stopped at the first out-of-range frame and never
- Fixed: a capture is anchored at its true earliest timestamp, not
at whatever arrived first. - Fixed: the import dialog shows a file's real earliest and latest
times, not the first and last objects in file order. - Fixed: a BLF whose writer crashed now opens. One missing trailing
byte used to discard the whole file.- 16,387 frames recovered from the measured fixture; the file itself
is never modified. - A system message says what was recovered, and that the absolute wall
clock was lost.
- 16,387 frames recovered from the measured fixture; the file itself
- New: loading shows real progress — bytes scanned, then frames
imported, then frames decoded. - New: a Cancel button sits beside the progress bar and works during
both load phases. - Fixed: cancelling a large MDF import now actually stops. It used
to keep building caches for the capture you discarded. - Fixed: a signals-only MDF (signal data, no CAN frames) now plots.
It used to import fine and draw nothing. - Fixed: clearing and re-importing the same file updates the view.
It used to leave the trace stuck showing raw epoch seconds. - New: the channel-map dialog takes the keyboard — Enter accepts
the defaults, Escape cancels, Tab stays inside it. - New: an example set at
examples/time-origins/shows how each
kind of time origin behaves.
Saving a capture
- Changed: the toolbar button reads Export and sits beside
Import, wearing the mirror of its icon. - Fixed: a capture interrupted mid-write now leaves a visible file
where you asked for it, and a BLF one still opens. - Fixed: Save Capture no longer rewrites out-of-order timestamps. A
saved BLF now matches what was captured.- The measured error was 500 ms of invented delay on one frame.
- Fixed: a saved BLF's header now states the capture's true end
time, rather than its last-appended object. - Fixed: MDF event blocks now carry the ASAM-correct marker type.
Files already written stay mislabelled. - Changed: an event's colour now fills a BLF marker's label instead
of colouring its text.- Other tools will draw a solid coloured block where they drew thin
coloured glyphs.
- Other tools will draw a solid coloured block where they drew thin
Databases and decoding
- Fixed: a signal's enum labels now come from the database that
actually decodes it. - Fixed: a trace row and a plot no longer disagree about the same
signal's value. - New: a database assigned to no bus decodes nothing anywhere,
instead of silently decoding every bus. - New: unchecking a bus parks that database's caches; assigning it
back brings the samples straight back. - New: where two databases define one signal, you can pick which one
wins. The pick is saved in the project. - New: one pick also re-points every reference to a signal that was
renamed in a newer DBC. - Fixed: the Database panel no longer claims an unassigned database
"applies to all buses". - New: two databases defining the same id now warn on the losing
row, naming which one wins. - Fixed: a database edited on disk now reaches the plot, the
filtered trace and the by-id view. - Fixed: renaming a
VAL_label updates the pickers and the plot
without reopening the view. - Fixed: the ingest verifier no longer borrows a counter or CRC
designation from a database that does not supply the message. - New: a plot series from a project older than per-bus binding is
flagged as undecoded and can be re-pointed. - New: the Database panel groups a multiplexed message's signals by
mux arm, named from the selector's own labels.- Dragging an arm plots that arm's signals in one gesture; search
finds arms and reaches into them. - Single-signal arms stay flat; extended multiplexing stays a flat
list with a note.
- Dragging an arm plots that arm's signals in one gesture; search
The signal mapping panel
- New: a View Signals panel lists every signal your open views
reference, and what currently decodes each one. - New: its toolbar badge counts the signals needing attention, live,
whether or not the panel is open. - New: filter by status or by bus, wash rows by status, and sort by
bus. - New: an RBS signals grid shows every field's encoder status, so an
override the encoder dropped is visible. - New: a drifted row — scale changed, or gone stale — carries a
one-click Accept that adopts the database's current definition
across every referencing view. - New: RBS values clamp to the signal's physical range on entry,
with out-of-range entries highlighted. - Fixed: a hex value typed into the RBS panel goes out as raw bits,
not as a decimal physical value.
Plots
- Fixed: a signal on a shared axis renders at its real amplitude —
the −200 A drawn as −1.5 is gone.- Changed:
unifiedmode no longer stretches each unit group to
fill the canvas. Useper-unitorindividual.
- Changed:
- Fixed: enum y-axis ticks are bare numbers now; the quoted label
beside every tick is gone. - Fixed: a 300-value enum no longer draws 300 ticks. The count
follows the axis's height. - Fixed: a long enum label on a lane tile is ellipsized and drawn.
It used to be omitted entirely. - Fixed: a plot on a stopped capture re-reads after a database
change, instead of holding the old decode. - New: set a plot's visible range from the palette — two numbers for
min and max, one for a width. - Fixed: measurement statistics over a span no longer drop a sample
when two samples share a timestamp. - Fixed: a long event label wraps to two lines and ellipsizes
instead of running over its neighbours; the highlighted marker draws
on top instead of under them.
Long names
- Fixed: long signal, message and enum names render correctly on
sixteen surfaces instead of overflowing or being cut.- Names ellipsize in the middle, so two names sharing a prefix stay
distinguishable. - The full name is a tooltip everywhere it is shortened.
- One pathological name can no longer reflow a whole panel.
- Names ellipsize in the middle, so two names sharing a prefix stay
- New: the shipped example databases carry long names and
44-character enum labels.
The trace and the grid views
- Fixed: clicking a signal inside an expanded row selects it instead
of collapsing the message you were reading. - New: disclosed signals are real rows — arrow keys, Shift+click
ranges and drag-select all work inside them. - Fixed: a timeline event now lands on the right trace row on an
ordinary multi-bus capture.- The anchoring search assumed sorted timestamps; real captures dip
several times a minute. - A marker could land on the wrong row, or be dropped with nothing
said.
- The anchoring search assumed sorted timestamps; real captures dip
- Fixed: arrow-key navigation no longer rings the whole grid
viewport with a browser focus outline. - New: Space on an event row jumps to it; F2 renames it inline, in
both the events view and the trace. - Fixed: finishing an event rename hands the keyboard back to the
grid. The arrow keys used to go dead. - Fixed: an invalid palette prompt shows an inline error and stays
open, instead of closing silently. - New: jump the whole session to a time with
Mod+T; go-to-event
gainsMod+E.
Events
- New: an event can say what it is about — signals, messages, or
other events, mixed in one event. - New: event rows carry subject chips naming the message or signal
the event points at. - New: Shift+click a plot area with signals selected to create an
event about exactly those signals. - New: right-click a trace frame row to create an event about that
message, at that frame's time. - New: hovering or selecting an event lights up what it points at
and fades everything else. - New: link two events, and the pair draws its extent as a coloured
wash while either end is hovered. - New: events have kinds, and every view has a per-kind checklist to
show or hide each one. - New: each event carries an editable description and a tag; the
events view filters on both. - New: subjects, links, tags and descriptions survive a save and
reopen, in both BLF and MDF. - Fixed: a BLF full of another tool's comments now survives a
re-save. cannet used to drop every one. - Fixed: deleting an event removes every other event's reference to
it, so no chip points at nothing.
Transmit and RBS
- New: Space sends a one-shot transmit row, or starts and stops a
periodic one. - Fixed: Space in the RBS panel enables or disables the row. It used
to scroll the panel instead. - New: the RBS signals list is a real grid — visible cursor,
click-to-focus, arrow keys and Space. - Fixed: opening a project can no longer put frames on a bus. RBS
Run is no longer saved with the project. - Removed: the kill switch. There is now one answer to "how do I
stop transmitting". - New: an RBS message row says whether it will transmit, and reads
Muted when it cannot. - Fixed: a counter or CRC declared in a DBC now populates the fields
editor. The controls used to be empty. - New: each populated field says whether it came from the DBC or
from an override in this project. - Fixed: a malformed
CannetCounterattribute now names the text it
choked on. - Fixed: unassigning or reloading a database stops the RBS elements
and periodics it was driving. - Fixed: a transmit row's Start is no longer disabled by a
disconnected bus, so it matches what Space does. - New: every customization an RBS file carries can be removed where
it shows — a trash column in the grid, a × beside the tree's
summaries. Removing a value asks twice; the rest are one click. - New: a fresh RBS grid opens showing only customized rows. Check
Default back on to see the whole simulated bus.
Undo
- New: undo now covers your project edits — the mapping panel's
picks, remaps and re-points, RBS enables and period overrides, event
links — in one history with layout and element changes, under one
Mod+Z. - Changed: undo never touches what goes out in frames. An RBS value
override applies immediately and stays outside undo — which is why
removing one asks for confirmation.
Bus health and connections
- New: a bus health panel shows per-bus controller state, TEC and
REC, bus load, error rate and adapter. - Fixed: an imported BLF's error frames read "Bus error" instead of
looking like empty data frames. - New: an error storm is summarised as one timeline event with a
count and a time span. - New: the trace holds an error-frame flood behind a Collapse
Errors toggle, on by default once a bus errors. The capture keeps
every frame; the toggle only hides rows. - New: a transmit the adapter refused to take reads Tx ✗ in the
trace, with the reason on hover. - New: a remote server's refused transmits are tallied into the
system log with the server's own words, instead of being discarded. - Fixed: the status bar's frame rate no longer reads 0 while two
adapters stream frames. - Fixed: Kvaser adapters are now discovered. Installed builds never
found them before. - Fixed: Connect refuses when a project bus has no binding, naming
the bus, instead of silently connecting around it. A new project
starts with one bus ready to bind. - New: the status bar shows live bus load for the worst bus while
connected.
Servers
- New:
cannet-serverwith no flags now serves every interface on
0.0.0.0:50051. - New: startup prints the address, certificate fingerprint and
token, ready to paste into the GUI. - Fixed: a server no longer advertises LAN addresses it does not
serve, so discovery stops offering dead endpoints. - New: the project panel always offers a way into the Servers panel,
not only once a binding exists. - New: a trusted server's row is live without a bus bound to it —
its interfaces, "no interfaces", or "discovering…". - New: a server counts as online while it is streaming to this
host, even where mDNS cannot cross the subnet to say so. - Fixed: accepting a server's identity or pasting its token dials
at once, so a wrong token is refused immediately instead of the next
time the server is needed.
Projects
- New: a New button at the head of the top bar, available even
with no project file open. - New: a Projects menu and palette entries reopen recent
projects, most recently used first. - New: Save is a split button — pressing Save saves the project and
every unsaved RBS file, and Save As sits behind the caret beside it. - Fixed: a project or RBS file edited outside cannet is noticed
instead of being silently ignored.- Clean and idle, it reloads itself; dirty or transmitting, you get a
notice with Reload and Dismiss.
- Clean and idle, it reloads itself; dirty or transmitting, you get a
- Fixed: cannet's own Save is no longer mistaken for someone else's
edit. - New: the log says what became of an outside edit — applied, or
held behind the notice, and why. - Fixed: on macOS, watching files on disk now works at all — it had
been silently dead for projects, RBS files and databases alike. - Fixed: a broken or half-written file on disk is parsed before
anything is applied, so your copy survives. - Fixed: setting a recent-items limit to 0 now remembers nothing. It
used to keep the newest entry.
GUI
- New: toolbar redesign.
- One compact button style throughout — the top bar and every panel
toolbar. - Buttons combined under menus to save space: one Add ▾ menu for
panels, overflow menus where a bar runs out of room. Bars no
longer wrap. - A connection status bar: per-bus connection state on one control,
live bus load, and the session counters.
- One compact button style throughout — the top bar and every panel
- New: one drawn icon set across the app — the same glyph means the
same thing everywhere. - Removed: the Connect all / Disconnect all button and the plot's
catalog-reload button. Both were redundant. - Removed: the measurements strip.
Packaging
- Changed: Windows ships the NSIS
.exeinstaller only. The MSI is
gone.- Per-user and silent install without admin; anyone scripting the
.msihas to switch.
- Per-user and silent install without admin; anyone scripting the