1.6.5 [2026-09-22] - Expanded BMCLI discovery and concurrent runtime capacity to 64 channels while preserving high-index logging, recording, replay, gateway, and device-mask behavior. - Hardened CANopen SDO validation, transmit correlation, cancellation, and route ownership so overlapping or uncertain transactions cannot consume the wrong response or retry unsafely. - Preserved device-owned LIN response quotas across live task updates and prevented gateway refreshes from queuing stale slave-response data. - Made Simulation retry transient daemon admission contention without recording a false transport failure or losing the pending generated frame. 1.6.4 [2026-09-15] - Added LDF-driven CAN/CAN FD-to-LIN signal gateways for master and slave nodes, including schedule/response handling and ready-to-run examples. - Added capability-driven offline configuration save/load/clear and host-to-device ASC/BLF download to `/REPLAY` files or a supported RAM replay buffer. - Made offline logging, replay, and file download safer across daemon and standalone use, with explicit save semantics, preflight checks, failure cleanup, retained errors, and replay recovery. - Improved LIN response round accounting, daemon JSONL streaming, cold-channel recording timestamps, CANopen SDO transmit confirmation, and ECU-simulator recovery after receive gaps. - Reported missing A2L module references as warnings while preserving usable A2L content. 1.6.3 [2026-09-10] - Fixed daemon transmit-task increment and random modes to preserve ID/data parameters and reject unsupported field settings consistently with standalone commands. - Fixed hexadecimal transmission-round parsing, including 0xFFFF for continuous sending. - Fixed successful Modbus latest/history queries returning failure exit codes when their results contain failed samples. - Fixed cold-channel ASC/BLF recordings using uninitialized device time, which could produce 1970-dated filenames and incorrect frame offsets. - Clarified transmit-task mode, field-width and round-count guidance in Help and the command reference. 1.6.2 [2026-09-10] - Fixed XCP disconnect through CLI and Web when the slave reply is sent by the same daemon, including orderly cleanup of active DAQ. - Preserved XCP request ordering through completion so concurrent commands cannot block replies or invalidate the next connection. - Clarified DBC decoding of observed out-of-range values versus validation of values supplied for encoding, and improved XCP disconnect guidance. 1.6.1 [2026-09-09] - Fixed daemon ASC/BLF replay to support multiple channels, channel mappings and strict validation consistently with standalone replay. - Improved concurrent CAN batch sending, replay, recording and gateway operation, with cooperative shutdown and no unintended interruption from read-only queries or invalid cleanup requests. - Fixed UDS unlock and download to inherit the daemon's configured endpoint defaults while preserving explicit command overrides. - Improved daemon-owned device discovery, required explicit channel opening before daemon receive, and clarified channel and Bench configuration errors. - Fixed relative Web-root paths and HTTP parameter error reporting, and clarified recovery from expired signal-history cursors. - Improved logging channel counts, gateway health reporting, and Help guidance for UDS setup, ECU simulation rules and LIN response events. 1.6.0 [2026-09-08] - Added configuration-based gateways between CAN/CAN FD channels and Modbus devices, with no routing code required. - Added a unified signal model with scaling, calculations and mappings, so values, validity and timeouts are handled consistently across protocols. - Added Modbus client polling and writes, plus server register and coil mappings for exchanging signals with external systems. - Added periodic and change-triggered CAN transmission, DBC multiplexed signals, and E2E checks and protection for gateway traffic. - Added portable .bmgw project files that keep gateway definitions separate from local device and channel bindings. - Added native plugins for custom codecs, transformations and E2E algorithms, with gateway control available through the CLI and REST API. - Connected Simulation to the same signal state and transmission services used by gateways. 1.5.3 [2026-09-07] - Restored high-throughput asynchronous ASC/BLF replay on Windows and Linux with transmit-completion-based sent counts and bounded end-of-file draining. - Made replay cancellation, NoACK, LIN error completions, and daemon terminal status fail closed instead of reporting partial or failed transfers as successful. - Hardened BMAPI CAN and ISO-TP timeout recovery so later writes remain blocked until the correct device and port queues are cleared, preventing stale traffic after failures. - Fixed Web database paths up to the documented limit and improved bounded LIN channel reopen and shutdown behavior. 1.5.2 [2026-09-05] - Improved analyzer discovery, AutoSet, and daemon reliability with serialized enumeration, stable physical and virtual channel identities, target-scoped AutoSet exclusion, accurate daemon-owned inventory, and Linux Active AutoSet timeout recovery. - Made automation output more consistent: explicit empty CAN payloads produce zero-length frames, reset-defaults returns one bounded JSON result, JSONL receive flushes promptly and ends with a summary, and invalid one-off UDS inputs report `invalid_argument`. - Made replay and conversion results more truthful with legacy RTR compatibility, classified conversion counts and errors, daemon timing-option parity, transmit-completion-based sent counts, and explicit lateness thresholds. - Hardened UDS, XCP, and ECU simulation with strict whole-file rule validation, fully offline download dry-run preflight, post-transmit XCP response correlation, and local DAQ validation before bus access. - Expanded A2L, DBC, and database compatibility and diagnostics, including common CANoe A2L syntax and calibration offsets, fast batch resolution for multi-symbol XCP DAQ, precise DBC range/path errors, and live database source status in REST. - Improved offline installation and runtime guidance with package-source reporting, complete packaged Help/Skill content, clearer Web/Bench listener and channel diagnostics, and earlier Modbus/EdgeX configuration errors. 1.5.1 [2026-09-03] - Improved installation and update workflows. Foreground updates now finish installation and verification before returning and clearly report the previous and installed versions. - Improved command-line guidance, diagnostics, error messages, and structured output consistency. - Improved DBC and simulation usability, including enumeration values, correct signal rounding, offline validation, and readable signal-source types. - Fixed ASC/BLF conversion so failures remain visible and timestamps are preserved correctly. - Hardened ISO-TP, UDS, and XCP timing and transport behavior, including layered deadlines, configurable flow control, CAN FD extended Single Frames, ECU simulation, and preflight validation. - Improved Web APIs and the Engineering Console with independent stream recovery, history-gap reporting, OpenAPI alignment, and accessible controls. - Fixed Linux analyzer firmware-update completion verification after USB re-enumeration. 1.5.0 [2026-08-31] - Added CAN/CAN FD node simulation with periodic transmission based on a DBC node or selected messages and signal updates while running. - Added constant, step, sine and sawtooth signal sources to simulate changing values such as vehicle speed and engine speed. - Added per-frame E2E protection with automatic Alive Counter progression and configurable CRC or additive checksums. - Added support for external E2E algorithm plugins to use manufacturer-specific message protection rules. - Added application-layer fault injection to simulate dropped frames, repeated frames, unprotected messages and checksum errors. 1.4.9 [2026-08-25] - Fixed standalone and daemon host replay retained-timestamp pacing to use one monotonic absolute origin per loop. Windows wait rounding, send cost, and an occasional late frame no longer re-anchor every later deadline. - Added host replay lateness, send-failure, and drop statistics while retaining the CAN transmit-queue backpressure contract: a full queue retries the same frame and may slow wall-clock playback without dropping or reordering it. - Added deterministic 26,227-frame fake-clock coverage plus equivalent ASC absolute, ASC relative, and uncompressed BLF deadline coverage at multiple speed factors. - Preserved bounded retained-timestamp pacing for repeated one-frame traces and synchronized daemon timing-statistic snapshots on 32-bit Windows builds. 1.4.8 [2026-08-24] - Added stable typed DBC encode diagnostics across direct encode, standalone message send, and daemon message send. - Reject unknown signals, out-of-range values, and invalid multiplex selections before send while retaining bounded, path-safe resource and parse details. - Preserved successful Classic CAN, extended CAN, and CAN FD/BRS encode output. - Fixed standalone and daemon DBC CAN FD send finalization so payload byte lengths map to wire DLC exactly once for all valid CAN FD sizes. 1.4.7 [2026-08-24] - Made CAN TX-task identities explicitly refer to stable physical slots, including sparse-table reuse and consistent standalone/daemon JSON fields. - Added daemon-instance handles with per-task random tokens so a handle from a deleted or reused slot is rejected without adding persistence, BMAPI, firmware, or TX-task update behavior. - Added local Classic CAN/CAN FD conversion between Vector ASC and uncompressed BLF. - Preserved CANFD FDF truth (including Classic DLC 9-F rows), Rx/Tx/TxRq, transmission-error/wake-up state, and legal CANoe v7.5/v8.5 Classic variants. Symbolic Classic rows now require a recoverable numeric ID instead of being silently skipped or guessed. 1.4.6 [2026-08-24] - Completed UDS ECU Reset Help with `hard`/`key-off-on`/`soft` mappings, command-local machine-readable argument metadata, the numeric 1..127 range, ECU-specific effect notes, a dry-run example, and consistent standalone/ daemon invalid-input diagnostics. 1.4.5 [2026-08-24] - Added CAN `--bitrate=N` shorthand with deterministic nominal=data timing; explicit nominal/data rates remain supported and conflicting mixed inputs are rejected before hardware or daemon access. 1.4.4 [2026-08-15] - Added safe host-side ASC/BLF segmentation by monotonic duration or projected final file size, with fixed, indexed, and UTC time-based path modes. - Made `--path` the canonical recording destination and retained `--output` as an input alias. Added explicit `--max-files`, recorded-slot `--wrap`, and exact-candidate `--overwrite` policies; overwrite authorizes replacement of the generated target path, while incomplete output remains under a `.partial` name. - Unified standalone, daemon, typed Web, Help, OpenAPI, and status behavior on one recording-session core. Host recording now uses 64-bit PTP timestamps in every execution mode and reports segment, counter, outcome, and I/O details. - Synchronized the maintained BLF writer copies with race-safe exclusive create and projected-size support, and added deterministic naming, boundary, collision, wrap, timestamp, failure-injection, and Web regression tests. 1.4.3 [2026-08-14] - Unified standalone and daemon host ASC output on explicit CRLF line endings across Windows and Linux while preserving existing Vector-compatible fields. 1.4.2 [2026-08-12] - Fixed standalone and daemon host replay so a temporarily full asynchronous CAN transmit queue waits and retries the same frame instead of dropping it. Replay may run slower than the source timestamps under sustained pressure, while Ctrl+C and daemon stop remain interruptible. - Fixed uncompressed BLF replay when a BLF object spans consecutive LOG_CONTAINER payloads. The reader now treats those payloads as one logical stream while excluding container headers and alignment padding. - Added deterministic boundary, empty-container, padding, timestamp-wrap, unknown-object, EOF/rewind, compressed-container, and truncated-container reader tests. This is a reader-only change; BLF/ASC writer bytes and online logging finalization/segmentation behavior are unchanged. 1.4.1 [2026-08-10] - Fixed CANopen Dashboard SSE delivery for dense, valid PDO mappings by using bounded dynamic JSON parsing instead of a fixed token array. - Preserved exact per-event cursors in batched CANopen SSE delivery so browser reconnects cannot skip or duplicate events. 1.4.0 [2026-08-09] - Added classic CANopen CC manager/client/observer support over the shared CAN Host Runtime, including node discovery and identity, NMT, Heartbeat, EMCY, expedited and segmented SDO, PDO mapping/decode/transmit, SYNC and TIME. - Added a tolerant read-only CiA 306 EDS/DCF resource model with Object Dictionary inspection, DCF Node-ID/bitrate/SDO endpoint validation, typed SDO values, source hashes and evidence-gated online PDO mapping verification. - Added bounded daemon observation epochs, opaque resumable cursors, typed event DTOs, REST history/actions and one-event-per-record SSE streaming. CANopen shares the existing RxBroker, route ownership, generation, deadline/cancel and daemon/standalone lifecycle with UDS, XCP, raw receive, logging, Web and Gateway. - Added pinned test-only canopen-python and CANopenNode v4.0 oracles, a raw CAN HIL mux with bounded per-client queues and explicit gap records, two-node physical acceptance, and CANopen/UDS/XCP coexistence regression. These test dependencies and fixtures are excluded from customer packages. - Preserved the BMAPI ABI, analyzer firmware, Gateway wire format and existing REST routes. CANopen FD, SDO block transfer, LSS, CiA 402 helpers and node implementation remain outside this first release. - Added executable acceptance ownership for TEST-001 through TEST-027, two five-minute bounded physical CANopen scenarios, deterministic 1 MiB history and raw mux overflow evidence, database fuzzing and USB disconnect recovery gates. - Preserved multi-channel daemon operation with BMAPI versions that hide or retype sibling USB functions after the first channel opens by resolving startup and dynamic opens against the initial physical-channel inventory. - Fixed loop replay timing so each repeated trace preserves its initial time offset and sub-millisecond Windows waits cannot collapse into a busy loop. 1.3.3 [2026-08-08] - Closed the second CAN-115 peer-review round by making each compound UDS route lease single-transaction exclusive. A concurrent request using the same lease is rejected instead of sharing independent cursors on one correlated response route. - Made explicit lease end, owner-process loss and lease expiry cancel the pinned software ISO-TP Host before releasing or reusing its route. - Added bounded physical regression coverage for direct lease-driven Host cancellation, immediate route reuse, and Web XCP lifecycle route/cursor cleanup. - Revalidated the candidate with BMAPI 1.14.1.1 from the current target branch. SSE protocol concurrency now proves exact UDS response counts, unique and contiguous global event IDs, and an unchanged route-drop counter while continuous XCP DAQ traffic is active. 1.3.2 [2026-08-08] - Hardened daemon protocol lifecycle handling after CAN-115 peer review. Channel close/claim/release now cancel only an operation on the selected channel, while daemon stop/restart and protocol reconfiguration cancel the active protocol transaction globally. - Moved ordinary daemon commands to bounded worker threads so stop, close and ownership changes remain responsive during long UDS or XCP transactions. Frontend process death and closed Web request sockets now release compound UDS leases and XCP work promptly instead of waiting for the configured protocol timeout. - Made daemon-owned software ISO-TP and XCP writes asynchronous at the BMAPI enqueue boundary; protocol deadlines, flow control and cancellation remain owned by their engines. Standalone blocking-write behavior is unchanged. - Added strict numeric validation for UDS download address, size, ALFID and maximum block length, including negative, overflowing and malformed input. - Added route-contention and physical single-/multi-channel lifecycle tests covering owner death, unrelated-channel isolation, channel close/reopen, claim release, Web disconnect and daemon stop. - Prevented a compound UDS route lease from being released or reused while an in-flight transaction still references it. Concurrent end/expiry now defers cleanup until the last pinned exchange drains. - Classified active Host operations by protocol so Web XCP disconnect and endpoint reconfiguration can cancel XCP before waiting on its mutex, without cancelling an unrelated UDS transaction on the same CAN channel. - Strengthened Web SSE concurrency acceptance to verify the expected UDS and DAQ event counts as well as per-stream order and uniqueness. - Restored the intended daemon-or-standalone policy for bounded Modbus operations so CLI, Web and polling reuse one endpoint session. Modbus exceptions and local value errors preserve a healthy connection; timeout, transport and response-integrity failures still force a safe reconnect. - Made XCP DAQ receive poll its Host validator in bounded slices so daemon stop, channel ownership loss and client disconnect cannot remain hidden behind a long DAQ receive timeout. 1.3.0 [2026-08-05] - Added a small protocol-neutral CAN Host Runtime and thread-safe route registry. Passive observers may overlap, while two correlated consumers of the same channel/ID/IDE/FDF response route are rejected with owner diagnostics. - Unified standalone and daemon UDS execution around the same software ISO-TP transaction and service planner for raw requests, semantic Helpers, DTC, SecurityAccess, download transfer steps and one-shot TesterPresent. Local security/image files remain frontend-owned while their bus transactions use the daemon whenever it is active. - Preserved the original UDS DTC aliases, including numeric subfunctions, and made them inherit the active daemon diagnostic endpoint instead of accidentally falling back to an unconfigured standalone session. - Kept file-backed `load/save/list`, `unlock` and `download` orchestration local; registered only daemon-capable transactions as runtime-either, and rejected daemon/client registry mismatches instead of silently changing execution mode. - Reserved the XCP CTO response route through the same registry and made XCP endpoint reconfiguration transactional, so a conflicting replacement does not discard the working configuration. - Added Windows/Linux coverage for in-flight cancellation, deadline and ownership loss, gap/epoch detection, route/cursor cleanup and isolation, standalone/daemon JSON parity, and a future CANopen SDO probe. BMAPI ABI, analyzer firmware, Web REST/OpenAPI and Gateway wire contracts are unchanged. - Made the cross-thread Host cancellation flag an acquire/release atomic so bounded cancellation has defined Windows/Linux synchronization semantics. - Kept compound daemon SecurityAccess and download steps under one bounded bidirectional transport lease, and made XCP reserve both request TX and response RX routes. NRC, timeout, client/lifecycle loss, broker gaps and shutdown now fail closed and release protocol ownership deterministically. - Added per-transaction timeout options to UDS unlock/download and corrected daemon error-envelope parsing so AI callers receive one clean message. - Corrected asymmetric UDS addressAndLengthFormatIdentifier handling to use the standard high=size, low=address nibble order; `0x44` remains unchanged. - Added physical-CAN simulator coverage for daemon unlock, download, NRC, timeout and immediate UDS-to-XCP route reuse after both failure paths. 1.2.14 [2026-08-04] - Unified standalone and daemon ASC recording on one Vector-compatible writer, including stable field widths, CAN FD flags, a BMCLI source marker, and consistent CAN/LIN logical-channel output. - Rejected malformed ASC replay records with invalid IDs, payload lengths, directions, CAN FD tail fields, or trailing tokens instead of transmitting partially parsed data. - Honored Vector `timestamps absolute` and `timestamps relative` replay modes. - Propagated BLF write, short-write, seek, flush, and close failures to logging command results and daemon status rather than reporting a damaged log as successful. 1.2.13 [2026-08-04] - Made Bamboo BMCLI builds resolve product and Git metadata before invoking MinGW Make, avoiding an intermittent MSYS shell hang in the Windows service session that could prevent compilation from starting. - Passed the same explicit product metadata into all Linux package builds so Windows and Linux artifacts cannot diverge because of shell environment differences. 1.2.12 [2026-08-03] - Required AI-generated Dashboards to resolve `/api/v1/bench` at runtime, including logical network names and project-relative database resources, instead of treating generation-time discovery as a substitute. - Added a deterministic Skill contract guard against embedding physical bench channel bindings in generated Dashboard source. - Documented the decoded-signal history and SSE wire contract explicitly, including `samples`, the `signal` event name, and independent gap recovery. - Bounded the AI Dashboard generation gate to artifact creation; the independent harness remains the sole owner of browser, service, simulation, and HIL checks. - Required generated Dashboard diagnostics to expose the same accepted, de-duplicated sequence set used by the plotted signal points. - Prevented generated charts from comparing bus/device `timestamp_us` directly to browser wall time, which could immediately evict every live point. 1.2.11 [2026-08-03] - Rejected raw UDS negative responses whose echoed service ID does not match the active request, in both daemon and standalone execution modes. - Added permanent ECU-simulator regression coverage for the mismatched-service response so it cannot be mistaken for a valid NRC in future releases. 1.2.10 [2026-08-03] - Kept semantic UDS dry-run independent of local/remote channel ownership while preserving claim protection for every transmitting diagnostic operation. - Restored structured ownership errors and standalone DTC failures to the JSON stdout contract used by daemon, Web, and AI automation. - Enforced the one-command timeout budget across verbose DTC responsePending handling and rejected malformed overlong UDS negative responses. 1.2.9 [2026-08-03] - Cleared slot-bound UDS, TesterPresent, XCP, and control state when an internal BUSOFF or daemon-restart reopen finally fails, preventing a later device from inheriting another ECU's diagnostic endpoint. - Rejected missing option values and odd-nibble hexadecimal payloads before daemon or BMAPI dispatch, while retaining documented separated option values. - Defined semantic UDS dry-run as endpoint-free request construction with validation of any explicitly supplied endpoint fields, and aligned DTC Help with configured-session transport inheritance. 1.2.8 [2026-08-03] - Rejected incomplete one-off semantic UDS endpoints before transport and invalidated slot-bound UDS/TesterPresent state when a channel is explicitly closed, preventing stale diagnostics after slot reuse. - Completed raw UDS and TesterPresent JSON error envelopes, rejected malformed short negative responses, completed suppressed raw requests immediately after successful transmission, and exposed DTC verbose enrichment in text output. - Corrected the raw hard-reset example and added permanent endpoint lifecycle, failure-schema, verbose-output, simulator, and regression coverage. 1.2.7 [2026-08-03] - Made raw UDS channel, CAN-ID, and CAN/CAN-FD overrides strictly one-shot in daemon mode so malformed or partial requests cannot corrupt persisted diagnostic configuration. - Rejected malformed timeout/data values, equal or out-of-range diagnostic IDs, and XCP route collisions before transport; initialized every shared UDS transaction result even when argument validation fails. - Unified daemon and standalone raw-request flag selection and dry-run evidence, tightened TesterPresent endpoint validation while preserving CAN ID zero, and added permanent standalone/daemon/simulator contract regressions. - Synchronized UDS reference, test identifiers, and bundled AI Skill guidance with the typed high-frequency Helpers. 1.2.6 [2026-08-03] - Rejected malformed or oversized DID, memory, and RoutineControl data instead of silently transmitting a parsed prefix to the ECU. - Made one-off UDS Helper/DTC endpoints honor the same UDS/XCP response-route collision rule as persistent configuration, and made UDS transport flags reject unknown values instead of silently selecting classic CAN. - Added standalone DTC CAN FD and ISO-TP padding options, preserved explicitly supplied CAN ID zero, and represented record selector `0xFF` as aggregate raw multi-record data without inventing a single response-record boundary. - Added permanent strict-parser, endpoint, multi-record, simulator, Help and full regression coverage for the corrected contracts. 1.2.5 [2026-08-02] - Fixed UDS ISO-TP configuration so omitted padding remains disabled and an explicit `--padding=0x00` is transmitted as byte `0x00` instead of silently falling back to enabled `0xCC` padding. - Made UDS Helper and DTC error retryability operation-aware: transient read failures remain retryable, while DID/memory writes, session changes, ECU resets, RoutineControl mutations, DTC clear and raw requests never advertise an automatic retry after completion becomes unknown. - Added permanent transport-contract and ECU-simulator regressions for padding disabled/zero and read-versus-write ResponsePending timeout behavior. 1.2.4 [2026-08-02] - Unified standalone and daemon DTC parsing, transaction handling, response decoding, bounded verbose enrichment, and text/JSON formatting on one shared core while preserving existing DTC aliases. - Fixed DTC snapshot-identification output, option-first `--verify`, strict helper positional arity, raw-request typed pending failures, pending transport error classification, and read-only command metadata. - Standardized bounded UDS Helper failures on the shared structured JSON error envelope and made text/JSON the explicit output contract; CSV and JSONL are rejected instead of silently returning text. - Documented every accepted named DTC status and added regression coverage for format matrices, nested errors, raw pending propagation, snapshot IDs, and daemon/standalone parity. The clean unified UDS runtime follow-up is tracked in CAN-115 for BMCLI 1.3.0. 1.2.3 [2026-08-02] - Fixed a semantic `uds memory write` request-buffer overflow and enforced the confirmed 4095-byte software ISO-TP payload boundary before copying or transmitting memory requests. - Fixed ResponsePending terminal handling so a missing final UDS response is reported as a typed pending timeout/limit instead of ordinary NRC 0x78. - Unified daemon DTC text and JSON commands on the same UDS transaction path, bounded verbose detail enrichment by count/time/response size, and tightened service, DID, DTC, and record echo validation. - Added strict 1..60000 ms timeout parsing, integer-overflow rejection, maximum ALFID/P0, malformed response, verification mismatch, TesterPresent overlap, large-DTC, and semantic multi-frame regression coverage. 1.2.2 [2026-08-01] - Added high-frequency, typed UDS helpers for DID read/write, diagnostic session changes, ECU reset, memory read/write, and RoutineControl while preserving the generic `uds request` path and existing UDS aliases. - Added strict positive-response echo validation, NRC 0x78 continuation, derived or explicit memory ALFID widths, optional DID write verification, P2/P2* reporting, and structured routine status records. - Added `uds dtc list` as the readable default/active alias, named ISO 14229 status filters, status-flag arrays, and corrected snapshot/extended record metadata and payload boundaries. - Expanded the canonical UDS ECU simulator and physical analyzer regression suite for stateful DID, memory, routine, reset, DTC, negative-response, and exact request-byte coverage. 1.2.1 [2026-07-31] - Added first-class Modbus master/client support over native Windows/Linux RTU, ASCII, and TCP transports without extending BMAPI or requiring BUSMUST analyzer hardware. - Added coils, discrete inputs, input/holding registers, single/multiple writes, File Record FC20/FC21, and FIFO FC24 with strict protocol limits, exception reporting, CRC/LRC/MBAP validation, and no automatic write retry. - Added lightweight Linux Foundation EdgeX Modbus Device Profile YAML/JSON import, Device Definition bench import, typed resource/command access, RTU/TCP/ASCII device bindings, scaling, bidirectional mappings, byte/word order, access/range validation, and readback. - Added bounded daemon-owned polling with latest/history, freshness, quality, gaps, missed deadlines, on-change retention, persistent endpoint connections with reconnect, REST/SSE endpoints, OpenAPI, and a Modbus engineering panel in the bundled Dashboard. - Hardened the Modbus service around one persistent session per physical endpoint shared by CLI, poll, and Web; added RTU t3.5 timing, wider Linux baud-rate support, exact 64-bit values, write-only EdgeX semantics, partial-command diagnostics, bounded dynamic history, resumable loss-aware SSE, concurrent-stop safety, and typed HTTP error status classes. - Added independent TCP and PyModbus interoperability peers, POSIX PTY RTU/ASCII tests, EdgeX fixtures, Web/daemon integration tests, and full BMCLI hardware and real-ECU regression coverage. - Added a narrowly triggered BMCLI Modbus Skill methodology that keeps protocol I/O in BMCLI and general Web authentication, durable storage, uploads, reporting, and reverse proxying in surrounding application services. - Added explicitly authorized installation of approved local F4L2/0083 HPM UF2 images through `device update --file= --force`, including fixed-block/application-range validation and same-UID/version re-enumeration. - Fixed Modbus endpoint/session lifecycle, exact numeric conversion, EdgeX compatibility, loss-aware polling/SSE behavior, HTTP error mapping, and a poll start/stop publication race found during the 1.2 release review. - Restricted local F4L2/0083 UF2 images to the physical application interval `[0x80020000, 0x80100000)` and synchronized the latest BMAPI, LIN schedule, replay, updater, and Bamboo build-compatibility baseline from BUSMASTER. 1.1.0 [2026-07-27] - Introduced first-class XCP on CAN/CAN FD support for ECU measurement, calibration, integration testing, and internal-state observation without a hardware debugger. - Added XCP connect/status/disconnect, external seed/key unlock, raw memory read/write/checksum, A2L-backed measurement and characteristic access, and bounded dynamic DAQ acquisition. - Added a BMCLI-owned software ISO-TP engine and migrated ISOTP/UDS receive paths onto RxBroker cursors so UDS, XCP, raw receive, logging, and Web can run concurrently without competing for the BMAPI receive queue. - Added a tolerant, read-only A2L subset for scalar measurement and calibration workflows, including MODULE scoping, byte order, COMPU_METHOD, RECORD_LAYOUT, BIT_MASK, access semantics, and duplicate-symbol handling. - Added the typed `GET/POST /api/v1/xcp` Web boundary for Dashboard and automation clients while keeping XCP lifecycle and safety rules in the shared BMCLI service layer. - Standardized XCP DAQ output as one bounded JSON document with a `samples` array; JSONL/CSV are rejected before execution instead of producing misleading output. - Hardened XCP endpoint safety: strict numeric/flag validation, raw-write dry-run and optional readback verification, bounded/escaped JSON, and capability-aware address/DAQ granularity handling. - Made UDS/XCP response-route collision checks symmetric and cleaned XCP sessions, DAQ state, receive cursors and BMAPI handles on reconfiguration, channel close, daemon stop and restart. - Decoupled the DAQ pump from the daemon command lock, protected XCP state with its own mutex, and made software ISO-TP timeouts restart for each N_Bs/N_Cr protocol phase instead of expiring one whole valid multi-frame transfer. - Corrected DBC/LDF/A2L registry mutation permissions and documented their shared generic unload lifecycle. - Made `ai status` detect stale installed Skill content byte-for-byte, and tightened Skill guidance for missing UDS/XCP bench IDs and complete XCP cleanup. 1.0.6 [2026-07-25] - Fixed daemon-backed channel lifecycle and host logging/replay lifecycle/status commands so `--format=json` always returns one bounded JSON document. 1.0.5 [2026-07-24] - Aligned runtime Help, the command Reference, option validation, examples, and machine-readable discovery so automation no longer relies on stale syntax. - Expanded real-world DBC and LDF compatibility and completed the revised BLF reader/writer contract used by recording, replay, conversion, and Web flows. - Verified physical CAN and LIN online recording and replay with ASC and BLF, including the daemon, REST API, engineering console, and Gateway paths. - Preserved LIN schedule slot phases when translating LDF tables into hardware TX tasks, including mixed master-read and master-write schedules. - Added deterministic local/remote claim and release arbitration for protected channel control while retaining compatible shared send and passive receive. - Improved Gateway session cleanup, BUSOFF recovery, logging lifecycle, replay channel mapping, and multi-consumer receive continuity. - Narrowed the BMCLI AI Skill activation boundary and added lightweight application-development guidance without triggering on generic dashboard, DBC/LDF, test-methodology, or source-review work. - Added compatibility regression coverage for supplied DBC/LDF corpora, BLF round trips, CAN/LIN online capture and replay, Web, Gateway, and shuffled HIL. 1.0.4 [2026-07-16] - Replaced the obsolete reverse-`BM_OpenRemote` Gateway path with a direct, GWR-compatible UDP control/data server over the daemon's physical handles. - Added typed REST resources for bench/device inventory, channel statistics, logging, replay, remote-BMAPI gateway lifecycle, and bounded firmware checks. - Added explicit CommandRegistry permissions and parameter type/range/unit/ mutual-exclusion metadata for runtime discovery and AI clients. - Added retained duration/byte sizing and per-consumer backlog/gap observability to RxBroker and Web metrics. - Hardened Windows package path symmetry, final-handle project containment, and single-setter-group channel PATCH semantics. - Added a packaged Nginx HTTPS-first profile for trusted Linux browser access while BMCLI remains bound to loopback HTTP. - Fixed daemon logging above slot 15 and idempotent same-value LIN mode updates. - Fixed Linux daemon startup so bounded JSON remains one document while child diagnostics are redirected to the private daemon log. - Fixed Windows-driven WSL worktree builds to embed the same Git commit metadata as release manifests and added Windows/Linux load, HTTPS, and Skill gates. - Hardened release-check so package lifecycle, runtime, hardware, Web, and Skill gates execute the Bamboo package whose metadata matches the release manifest. - Moved UDS DTC argument validation before BMAPI initialization so invalid commands return their stable contract even while hardware is being released. - Kept release package tests strict while capturing updater JSON and diagnostic stderr separately, avoiding false PowerShell NativeCommandError failures. - Made release-check native tool gates decide success from process exit codes, so non-fatal WSL and tool diagnostics on stderr do not abort verification. - Recognized standard equivalent wording such as "neither authentication nor encryption" in the AI gateway safety-boundary release rubric. - Fixed UDS request parsing so space-form option values such as `--channel 10356/1` cannot be appended to the diagnostic payload. 1.0.3 [2026-07-15] - Added project-local target and bench configuration with multiple named networks, nodes, databases, and machine-local channel bindings. - Added the daemon-owned Web automation service with packaged OpenAPI and an engineering console, typed message send, cursor history, SSE/WebSocket raw streams, and DBC signal plans. - Added typed REST lifecycle for daemon channels, engineering databases, hardware TX tasks, and message routes without exposing a shell executor. - Added the per-channel RxBroker so CLI receive, logging, remote BMAPI gateway, Web streams, and DBC signal decoding use independent cursors without competing for the BMAPI receive queue. - Hardened bounded JSON, daemon IPC, cross-platform resource paths, Web shutdown, package lifecycle, and Claude Code/Codex Skill behavior checks. Uninstall now terminates an active package-owned daemon before removing its executable and runtime state. - Added real-browser and configurable multi-consumer soak release gates; Windows HIL completed a 30-minute SSE/WebSocket run with exact active-cursor continuity. 1.0.2 [2026-07-15] - Added capability-aware LIN master/slave message workflows, channel power control, and runtime schedule/response management. - Added physical-device reset and identity-safe generation-3 firmware update handling for devices selected by serial number, UID, or channel name. - Completed DTC request construction, response parsing, action-level Help, and public command/alias contract cleanup. - Added a GWR-compatible CAN FD/LIN UDP gateway for unmodified remote BMAPI clients, including mixed-bus logical-to-physical channel translation. - Verified current Windows and Linux builds, firmware transfer behavior, and sequential plus shuffled hardware regression coverage. 1.0.1 [2026-07-13] - Added verified `bmcli update --check` release discovery and changelist output. - Added CID-based firmware checks and updates for generation-3 HPM BUSMUST devices. - Moved the Bamboo deployment implementation into a Git-managed PowerShell script. - Published BMCLI release notes and SHA-256 metadata with each version manifest. 1.0.0 [2026-07-12] - Initial product release of BMCLI as an independent BUSMUST command-line tool. - Supports CAN/CAN FD channel control, message traffic, TxTask, routing, DBC, logging, replay, ISO-TP, UDS diagnostics/flashing, checksum, and AutoSet. - Includes project bench profiles, structured Help/JSON contracts, offline packages, update support, and Claude Code/Codex skill integration.