================================================================================
 Kvaser CanKing Service and CLI - Release Notes
 Copyright (c) Kvaser AB 2026
================================================================================

This file covers the CanKing Service (CanKingService), the CanKing CLI
(CanKingCli / CanKingCliService), the CanKing file service (CanKingFileService)
and the CanKing MCP server (CanKingMcpServer).

Releases are listed newest first.

When preparing a release, add the new section at the top of this file and change
the "In development" heading to the released version and date. Keep entries
short, user-facing and grouped under New / Improved / Fixed.


--------------------------------------------------------------------------------
 7.6.0 - 2026-09-25
--------------------------------------------------------------------------------

New
  * Offline data analysis: DataAnalysisService lets a client open a log file,
    run processing steps on it and read frames and signal envelopes without a
    running measurement.
  * Extensions can append computed signal values to frames, and data can be
    subscribed to using qualified message names.
  * Service extensions support an OnCommand entry point, so an extension can be
    driven from the CLI and the API.
  * Extension entitlement checking: the AppService exposes a CheckEntitlement
    RPC, and entitlement checks are injected into GUI extensions at build time
    (inject-entitlement.cjs / inject-entitlement.sh).
  * Debian packages are built for the stand-alone canking-service, including the
    EULA.
  * The CanKing MCP server is included, exposing the service to MCP clients.
  * Remote file handling: FileSystemService allows browsing, creating and
    deleting remote directories and files, and remote open/save dialogs.
  * CLI commands for configuring remote access to the service, plus a quickstart
    guide for remote access.
  * Device changes on Linux are detected through UDEV events instead of polling
    (polling is still available through appsettings).
  * "ck get event-log" can extract journal logs on Linux.
  * Queued transmissions: "ck send queue" and the send_queue MCP tool send a
    list of CAN or LIN frames on one channel, spaced apart in time. The frames
    are paced by the service, are given with --frame or read from a file with
    --frames-file, and a batch started with --no-wait can be followed with
    --list and stopped with --stop.
  * "ck send can", "ck send lin" and "ck send lin-update" accept the whole
    message as --frame ID[#DATA][:FLAGS], as an alternative to --id and --data.

Improved
  * Faster log file loading and faster loading of analysis files.
  * Signal values are returned with a number of decimals.
  * Extensions are unpacked into a persistent, discoverable folder instead of a
    temporary folder that disappeared on unload.
  * LIN signals are logged as LIN when writing MDF4 signal logs.
  * The Canlib SDK natives are downloaded from Artifactory at build time instead
    of being stored in the repository.
  * CanKingCli reuses a running CanKingFileService instead of spawning a new
    instance for every call.
  * Certificate/signature verification tolerates unknown revocation status.

Fixed
  * Frame reordering bug in the analysis processing steps.
  * Deadlock when sending messages from inside OnStartMeasurement or
    OnStopMeasurement.
  * Multiplexing issues with extension signals and with the envelope caches.
  * CAN FD databases are saved with the correct attributes.
  * Invalid frame flags are masked out before canWrite.
  * Streaming to the file server no longer includes a BOM; streaming tests on
    Linux are stable.


--------------------------------------------------------------------------------
 7.5.0 - 2026-05-20
--------------------------------------------------------------------------------

New
  * Log replay plays files directly instead of converting them to KME60 first.
  * Extension install accepts .wasm and .tgz files, and .ckext bundles use
    tar.gz instead of ZIP.
  * Data flow nodes expose FramePropertyNames.
  * Extension change event notifications from the AppService.

Improved
  * Upgraded to .NET 10; frame timestamps changed to microseconds.
  * Hardened security and configuration of the service, including named pipe
    rules that work when running as a Windows service and IPC socket file mode
    configuration on Linux.
  * File handling reworked: files are streamed to the user context through
    CanKingFileService, and log writing goes through ServiceLogFileWriter.
  * Client-specific subscriptions with explicit unsubscribe support.
  * JSON output from the CLI is formatted through a single JsonFormatter.
  * Bit timings are validated and bus speed matching improved in CanChannelNode.

Fixed
  * Frame order in log files, and log event flush order in the message and
    signal loggers.
  * Hanging log replay when the file contained no matching frames.
  * Deserialization of project data.
  * Handling of invalid and missing file paths.
  * Startup failure when no HTTPS endpoint was created.
  * "add extension" in the CLI accepts the extension display name.
  * Write in CanOutputChannel allows the maximum data length.


--------------------------------------------------------------------------------
 7.4.0 - 2026-02-24
--------------------------------------------------------------------------------

New
  * LIN logging and replaying.
  * Service extensions: WASM extension host with batching and subscriptions,
    extension packaging and .ckext bundle support in the CLI and service.
  * Interactive CLI mode with source-aware triggers and frame filtering; the CLI
    was rebuilt on System.CommandLine.
  * Japanese language support.
  * CanKingCliService, which handles CLI commands and is aliased as "ck".
  * Signal envelope caching for faster signal handling.
  * THIRD_PARTY_LICENSES generation and CLI documentation generation.

Improved
  * PKCS#7 signature handling for .ckext bundles.
  * Native memory handling uses NativeMemory for allocation and release.
  * Channels are addressed by identifier instead of by name.
  * Signals are ordered by start bit for consistent processing.
  * Bus parameters are written to the log file.

Fixed
  * canOpen flags and FD bitrate validation when XL error signalling is off.
  * Errors from named pipe access rules when running as a system service.
  * Path handling that used Linux syntax on Windows.
  * Error handling in the streaming logic.


--------------------------------------------------------------------------------
 7.3.1 - 2025-10-04
--------------------------------------------------------------------------------

Fixed
  * Error handling in the streaming methods of MeasurementManager and in
    StreamNode, and in the processing of streaming requests.


--------------------------------------------------------------------------------
 7.3.0 - 2025-10-01
--------------------------------------------------------------------------------

New
  * Remote connection port configuration for the service.
  * File system support for extensions, and a TargetExtensionNode with an
    ExtensionType property.
  * CLI command for fetching logs from both the service (Windows) and the GUI.
  * Linux ARM64 target for the extension host library.

Improved
  * Frame handling reworked for higher throughput in streaming.
  * Bus speed calculations for CAN FD, including interfaces with a maximum data
    propagation greater than zero; default bus clock frequency changed to 16 MHz.
  * Enum signals use a value-to-name dictionary, which also fixes lookups for the
    value zero.
  * Stop triggers are logged after the message that triggered them.

Fixed
  * Loading of Canlib on Linux.
  * Streaming stopping when a channel was disconnected.
  * Data phase bus speed calculation using arbitration phase limits.


--------------------------------------------------------------------------------
 7.2.0 - 2025-05-26
--------------------------------------------------------------------------------

New
  * Signal logger.
  * LIN message info.
  * CanKingFileService, which reads and writes files as the logged-in user.
  * Support for split log files and RTC events.
  * Filter settings for the message logger.
  * Option to include a specific bit rate when calculating available bus speeds.

Improved
  * CAN channels are guaranteed to be bus on before the traffic generator and
    log replay start.
  * Signal value conversion moved from kvadblib to C#, fixing rounding when
    casting from double to int.
  * Bus parameter handling falls back to the legacy functions when setBusParams
    returns not implemented.
  * CAN FD data rates are limited to the prescaler used by the selected
    arbitration rate.

Fixed
  * Bit timing calculator for classic CAN.
  * Language mix-up when interfaces were plugged in or out while using a language
    other than the current Windows language.
  * Writing files through CanKingFileService.
  * CSV removed from the supported log formats where read support is required.


--------------------------------------------------------------------------------
 7.1.0 - 2025-02-17
--------------------------------------------------------------------------------

New
  * LIN channel node with CLI commands for adding and removing the node and for
    sending LIN messages.
  * CanKingCli documentation, an "about" command and validation for CLI commands.
  * Data length and multiplex information in frame definitions, including the
    MUX_VALUE frame property.
  * Data bytes limit setting for the message logger.

Improved
  * Upgraded to .NET 9.
  * Periodic transmission settings can be updated while running.
  * The CAN Message Logger is now the Message Logger and can log LIN frames as
    CAN frames.
  * CAN database handling refactored with LIN support; database file names may
    contain dots.
  * The service info file is refreshed every 30 seconds.
  * Chinese resource strings updated.

Fixed
  * Signal value decoding now uses the actual data length.
  * The J1939 interpreter no longer blocks non-extended ID messages.
  * Disabled channels were incorrectly marked as failed when starting a
    measurement.
  * Callback delegates are held in member fields so they are not garbage
    collected.
  * Unknown CLI commands are caught, and log replay settings are validated.
  * The time domain is reset when the first channel starts.


--------------------------------------------------------------------------------
 7.0.2 - 2024-12-10
 7.0.1 - 2024-11-29
 7.0.0 - 2024-09-20
--------------------------------------------------------------------------------

First releases of the CanKing Service and the CanKing CLI, providing the gRPC
service, the measurement setup with CAN channels, message logging, log replay
and traffic generation, plus the command line client for controlling it.
