Unreleased
0.14.3 - 2026-06-25
Changed
- Hardened MAVLink XML generation by rejecting reserved identifiers before source generation.
Tests
- Added router coverage for subscriber cleanup and independent outbound signing state across multiple UDP connections.
- Added a downstream compatibility smoke fixture and CI coverage for docs and example workflows.
0.14.2 - 2026-06-25
Added
- Added MAVLink XML parser hardening for include cycles, conflicting include paths, file-size limits, include-depth limits, and include-count limits.
Changed
- Utility cache ETS tables now store typed cache structs for visible systems,
latest messages, and parameter values. Use
XMAVLink.Util.CacheManagerquery APIs instead of relying on direct ETS payload shapes. - Clarified the public HexDocs API surface and hid internal transport delegate modules from generated documentation.
0.14.1 - 2026-06-25
Added
- Added public utility cache query APIs for listing cached systems, reading the latest cached message, and reading a cached parameter without direct ETS access.
- Added a
0.14.0migration guide and a deployment safety checklist.
Tests
- Added deterministic malformed-frame parser coverage and parser resynchronization coverage.
- Added connection worker lifecycle coverage for close and reconnect behavior.
0.14.0 - 2026-06-24
Breaking Changes
- Formalized utility scoping around
XMAVLink.Util.Context. Utility callers that need non-default ETS table names should passcontext: contextinstead of relying on hard-coded global table names. - Direct utility ETS table access should migrate from fixed names such as
:messages,:systems,:params, and:sessionstoXMAVLink.Util.Tables.name/2orXMAVLink.Util.Context.tables.
Added
- Added
XMAVLink.Router.send_message/1..3, a synchronous send API that returns delivery metadata while preserving the existingpack_and_sendAPIs. - Added
XMAVLink.Util.Contextandcontext: contextutility options so cache, focus, parameter, arm/disarm, and SITL helpers can be scoped by router, dialect, and table namespace. - Added internal router architecture modules for configuration normalization, connection-string parsing, route selection, transport behaviour contracts, shared inbound frame parsing, and generated dialect behaviour contracts.
Fixed
- Fixed local MAVLink sequence numbers to wrap after the full
0..255range. - Preserved utility focus independently for each scoped utility context.
- Deduplicated targeted route recipients when multiple learned MAVLink addresses resolve to the same connection.
- Updated the
XMAVLink.Messageinvalid-term fallback to stay compatible with warnings-as-errors while preservingProtocol.UndefinedErrorfor unknown message structs.
0.13.0 - 2026-05-11
- Added
remote_forwarding: falserouter/application configuration for endpoint or GCS use cases that should receive remote MAVLink traffic locally without forwarding it between remote links.
0.12.2 - 2026-05-11
- Hardened MAVLink XML generator validation for duplicate or conflicting message module names.
0.12.1 - 2026-05-08
- Added router route invalidation when a
SYSTEM_TIME.time_boot_msdecrease indicates a remote system rebooted.
0.12.0 - 2026-05-08
- Added MAVLink 2 signed-frame parsing and signature trailer representation.
- Added a low-level MAVLink 2 frame signing helper for already packed frames.
- Added reusable MAVLink 2 signature validation and inbound replay-policy helpers.
- Added inbound router and connection signing policy wiring so configured receive paths can verify signed MAVLink 2 frames, reject replayed signatures, and reject unsigned MAVLink 2 frames by default while signing is enabled.
- Added outbound router signing for unsigned MAVLink 2 frames sent over signing-enabled connections, with per-connection timestamp increments.
- Added MAVLink 2 signing timestamp load/save callbacks so applications can persist local signing timestamps across restarts.
- Made inbound
SETUP_SIGNINGframes local-only so key material is not forwarded between MAVLink links by generic routing.
0.11.1 - 2026-05-08
- Made generated MAVLink 2 packers use zero-equivalent defaults for omitted extension fields while preserving MAVLink 1 packing behavior.
- Added generator coverage for omitted and provided MAVLink 2 extension values, including scalar, array, enum, bitmask, float, double, and char fields.
0.11.0 - 2026-05-08
- Added the MAVLink 1.0 spec alignment checklist and support statement, with MAVLink 2 as the primary compatibility target.
- Made generated MAVLink 2 unpackers ignore future extension bytes for forward compatibility with dialects that append extension fields.
- Preserved MAVLink 2 zero-length payloads, consumed unsupported signed-frame
signature trailers on stream transports, and aligned generated bitmask fields
with XML
bitmask="true"declarations.
0.10.2 - 2026-05-08
- Dropped unsupported MAVLink 2 frames with incompatible flags on UDP receive paths instead of crashing while attempting to validate a nil frame.
- Added
auto_param_request: falseutility configuration for deployments that need to discover vehicles before automatically requesting parameter lists. - Documented security reporting, MAVLink trust boundaries, and trusted-input expectations for dialect XML generation.
0.10.1 - 2026-05-07
- Made generated dialect source deterministic and formatter-compatible by removing timestamp/path churn, combining parsed XML inputs in stable order, formatting the generated output before writing it, and including generated Common output in the formatter gate.
0.10.0 - 2026-05-07
- Made utility supervision opt-in and documented how to start utilities for the configured router or an explicitly supervised named router.
- Clarified that the current utility layer is scoped to one selected router per VM while the core router API remains the multi-router integration surface.
- Changed utility focus and cache helpers to return normal
{:error, reason}results when utility state or MAV data is missing. - Added bounded retry behavior and cleanup for arm/disarm, parameter request, and parameter set helpers.
- Changed parameter query results to use MAVLink parameter names as string keys instead of creating atoms from vehicle-provided input.
- Added configurable SITL RC forwarding destination addresses.
0.9.1 - 2026-05-07
- Strengthened CI release gates with formatting, warnings-as-errors, xref, tests, and Dialyzer coverage across the supported toolchain checks.
- Clarified supported transports and MAVLink 2 limitations in public docs.
- Fixed utility process lifecycle issues in
CacheManagerandFocusManager.
0.9.0 - 2026-05-07
- Moved configured connection startup and reconnect behavior under supervised per-router connection workers with explicit retry delays.
- Added documentation and coverage for connection worker retry/reconnect behavior.
0.8.0 - 2026-05-07
- Added named router instance support while preserving the default
XMAVLink.Routerconvenience process. - Added targetable
subscribe,unsubscribe, andpack_and_sendrouter APIs for named or pid router instances. - Isolated local subscription restart caches per named router.
0.7.1 - 2026-05-07
- Fixed TCP outbound forwarding to send MAVLink frames over the TCP socket instead of attempting to use UDP send calls.
- Added TCP forwarding regression coverage for MAVLink 1 and MAVLink 2 frames.
- Reduced expected test-suite noise from generated task output and runtime logs.
0.7.0 - 2026-05-07
- Added per-message
source_systemandsource_componentoverrides toXMAVLink.Router.pack_and_send/3. - Added heartbeat source identity options and
:heartbeatssupervisor config for multiple local MAVLink identities sharing one router. - Fixed outbound local sequence tracking so each local source identity uses an independent MAVLink sequence counter.
- Preserved the existing default router identity behavior for callers that do not pass source overrides.