fixPlot: fix a 500 error when opening /plot directly (hard refresh or a pasted link) β the zoom/pan plugin was being loaded during server-side rendering, where its browser-only dependency has no window and crashed. It now loads in the browser only; zoom/pan is unchanged
v1.4.5
2026-06-03
fixPlot: fix derived-signal formulas (e.g. delta = a β b) showing phantom spikes β signals sampled in the same frame are now evaluated together, so each timestamp produces one correct value
v1.4.4
2026-05-31
featPlot: Formulas β define derived signals as arithmetic expressions (a*0.1, aβb, (a+b)/2, β¦); formulas can chain (reference other formulas) and expand per-node via an "N*" placeholder
featPlot: formulas persist locally and export with the chart-layout YAML
v1.4.3
2026-05-28
featPlot: CSV export β toolbar format selector (long / wide node:signal / wide signal:node) plus an "All signals" option; export stays available whenever data exists
featPlot: live signal recording β stream decoded samples to a .csv as frames arrive, with a "Selected only" toggle; recording buttons are now "Record raw frames" / "Record signals"
featProgram: "custom (raw frame)" Send option β enter raw hex bytes to send arbitrary CAN frames without defining a YAML message first
v1.4.2
2026-05-26
featMessages: per-signal unit picker β pick a display unit (rad/s β rpm, K β Β°C β Β°F, m/s β km/h, β¦) that propagates to Decode, Plot and Encode; preferences persist per signal
fixCodec: disambiguate messages sharing the same base ID and DLC by matching `constant: true` signal bits (e.g. the vesc.yaml messages all at base 0x000 / DLC=8). Python and TS codecs updated
v1.4.1
2026-05-19
featPlot: "Load File" button in paste mode β pick a candump .log or ZLG USBCAN(FD) .csv export from disk; CSV is auto-detected by header and converted in-browser to cansend-format lines, then run through the existing decode path
v1.4.0
2026-05-17
featProgram: new page for building and running multi-step CAN command sequences β statements (send, wait, repeat, every, sweep, group, set, bind, read), notebook-style cells with persistent variables, expressions in any field, closed-loop Bind/Read control, and per-node broadcast editing
featWeb: site-wide EN / δΈζ i18n with a nav language toggle (defaults to the browser language)
featPlot: human-friendly zoom/pan gestures β scroll, Shift/Ctrl+scroll, drag, double-click-to-fit and pinch β with a ? cheat-sheet
featPlot: TX frames from Program / Encode are tagged separately from RX in the raw log and tooltips
featEncode: shared bus connection across Plot / Program β connect once, all three pages see live frames
v1.3.0
2026-05-12
featPlot: Timeline t=0 origin β right-click any data point to set as the time reference; all charts shift accordingly
featPlot: A/B timeline markers with Ξt readout β click to place up to two markers on the timeline chart and see the time difference
featPlot: Apply timing origin and markers to all views simultaneously via the "Apply to all" toggle
fixCodec: corrected 0xFF broadcast decode disambiguation between WriteRegUint8 and SwitchMode messages sharing the same node_id
v1.2.0
2026-05-06
featWeb: per-message signal filtering β expand any message row to filter by node ID, signal name, or enum value
featWeb: enable/disable all configs or all messages per device in one click
featPlot: live data controls β Clear, pause/resume, and panel/series/layout state that persists across navigation
featPlot: export/import chart layout as YAML, plus a "Matched only" record filter that skips undecodable frames
fixConfig: resolve $parameter references in signal min/max/scale/offset fields
v1.1.0
2026-04-20
featPlot: Timeline and Interval views (per-message event timing and per-signal delta-time), with drag-to-reorder panels
featPlot: raw CAN frame log with click-to-copy candump lines, and streaming to a .log file during capture
featServe: --source LAN relay and --interface USB-adapter support (SLCAN CAN FD, PCAN, β¦), now on a zero-dependency stdlib WebSocket + candump backend
featWeb: candump-to-cansend converter page
featWeb: mux_signal support to disambiguate register-based messages in the plot
v1.0.0
2026-04-01
featInitial release
featBrowser-based CAN/CAN-FD encode/decode with YAML config files
featLive plot page with WebSocket streaming from can_ws_server.py