Skip to content

v0.3.0

Choose a tag to compare

@hexsecs hexsecs released this 20 Apr 22:44
· 257 commits to main since this release

Fixed

  • Fixed --jsonl output for j1939 spn, j1939 tp, and j1939 dm1 commands to emit one line per observation/session/message instead of falling back to full JSON payload. The JSONL emitter now checks for observations, sessions, and messages in addition to events.
  • Fixed j1939 dm1 --json and --jsonl to keep deprecated SPN conversion-mode warnings out of plain-text stdout output. DM1 now reports that condition once through structured warnings while preserving the parsed conversion_method field per DTC.

Changed

  • Introduced a J1939 decoder abstraction between the CLI and the current curated helper implementation so j1939 decode, j1939 spn, j1939 tp, and j1939 dm1 can move to a library-backed decoder in follow-on work without changing the command surface.
  • Switched J1939 identifier decomposition and DM1 DTC parsing to use can-j1939 helpers under the existing command surface, and routed file-backed j1939 pgn through the new decoder abstraction.
  • Moved j1939 spn, j1939 tp, and j1939 dm1 execution into the can-j1939 decoder adapter so all file-backed J1939 decode commands now run through the same backend boundary even though SPN coverage and TP semantics remain intentionally limited.
  • Added optional J1939 DBC enrichment for j1939 decode, j1939 pgn, and j1939 spn, including dbc_source provenance, extra decoded dbc_events, and a reusable default J1939 DBC setting via CANARCHY_J1939_DBC or [j1939].dbc in ~/.canarchy/config.toml.
  • Expanded j1939 spn beyond the curated starter map by resolving non-curated SPNs from J1939 DBC signal SPN metadata when a matching DBC is supplied or configured as the default J1939 database.
  • Extended the same J1939 DBC coverage idea into j1939 dm1 so DTC names and units can be enriched from DBC signal SPN metadata, with the same --dbc and default J1939 DBC config path used by other J1939 decode workflows.
  • Deepened the J1939 transport and DM1 path beyond the earlier BAM-only starter behavior so j1939 tp and j1939 dm1 now handle RTS/CTS sessions in addition to BAM, including reassembly and session-level acknowledgement metadata.
  • File-backed J1939 decode paths now stream candump input line-by-line instead of reading the whole capture text into memory up front, and the hot j1939 decode, j1939 pgn, j1939 spn, j1939 tp, and j1939 dm1 paths now use single-pass iteration where DBC enrichment does not require a retained frame list.
  • File-backed j1939 decode, j1939 pgn, j1939 spn, j1939 tp, and j1939 dm1 now accept --max-frames and --seconds bounds so operators can scope large-capture analysis to an initial frame window or time window without scanning the entire file.
  • Added j1939 summary for capture reconnaissance, including top PGNs and source addresses, DM1 and TP presence metrics, timestamp coverage, and candidate printable TP payload identifiers when completed sessions contain obvious ASCII text.
  • Enhanced j1939 tp to expose heuristic printable-text decoding and known identification-style payload labels alongside the existing raw reassembled TP payload hex.

Documentation

  • Added planned design and test specs for moving J1939 onto a first-class library-backed decoder with optional J1939 DBC enrichment, documenting the intended can-j1939 integration path and CLI/test expectations.
  • Added dedicated design and test specs for the provider-backed DBC workflow, covering provider listing, catalog search, fetch, cache management, provider-ref resolution, dbc_source provenance, and auto_refresh behavior.
  • Updated the command reference to document the shipped generate command plus current --stdin and --ack-active command-surface details where the docs had drifted from the implementation.
  • Corrected several requirement-to-test traceability tables so the current spec set no longer overstates coverage for transport, UDS, J1939, shell, gateway, and generate workflows.
  • Updated the J1939 heavy-vehicle tutorial so its jq example matches the current j1939 spn --jsonl output shape and no longer queries stale .payload.* fields.