Skip to content

Releases: FreeTAKTeam/LXMF-rs

LXMF-rs v0.4.0

14 Jun 12:20
2393131

Choose a tag to compare

LXMF-rs v0.4.0 Release Notes

Date: 2026-06-14
Release ref: v0.4.0

This is the ZeroMQ SDK integration release for REM 1.1.1 and RCH pre-3.0
Rust consumers. It promotes the typed lxmf-sdk ZeroMQ path through
ZmqPipelineBackendClient so clients can rely on SDK methods instead of raw
RPC/HTTP calls for the release scope below.

This release is not a claim of complete drop-in Python Reticulum/LXMF
replacement parity. The maintained parity source of truth remains
docs/status/current-roadmap.md.

Scope

  • Typed ZeroMQ SDK foundation for REM/RCH client integration.
  • Basic LXMF wire field preservation through the SDK send and batch-send paths.
  • Peer discovery, saved-peer lifecycle, capability announce metadata, display
    names, callsigns, stale-peer filtering, and reconnect-oriented peer state.
  • Durable direct-chat SDK flows for one-to-one messages, conversation summaries,
    receipt visibility, retry/cancel status metadata, restart-recovered history,
    link-bearing message bodies, and burst-send result stability.
  • Propagation-first SDK coverage for peer sync, remote fetch/download/sync,
    unpeer, node selection, local propagation status/config, delivery policy,
    payload ingest/fetch, sync acknowledgement, recovery state, retry/timeout,
    denial, queue cleanup, and persistent queue visibility.

Highlights Since v0.3.0

  • Added typed ZeroMQ SDK peer identity, directory, stale-filter, saved-contact,
    peer lifecycle, and capability announce surfaces.
  • Preserved documented LXMF custom field keys and _lxmf_fields_msgpack_b64
    through the typed SDK send path for REM/RCH payload compatibility.
  • Treated payload body as direct-chat message content when content is
    absent while still preserving the original body field for client renderers.
  • Added typed batch-send, cancel, status retry metadata, receipt terminality,
    local delivery-destination lookup, durable history, and conversation summary
    flows over the SDK envelope path.
  • Added typed propagation SDK methods and result projections for peer sync,
    remote transfer lifecycle, propagation node lifecycle, local propagation
    lifecycle, payload store access, recovery state, policy metadata, transfer
    accounting, queue snapshots, retry/postponement, denial, timeout, and
    restart-recovery diagnostics.
  • Updated roadmap and parity status to describe the ZeroMQ SDK release path
    while keeping application-level REM/RCH schemas out of scope.

Current Version Train

GitHub release version: v0.4.0

Crate/package versions intentionally remain per the publish plan rather than one
blanket workspace version:

  • lxmf: 0.3.0
  • reticulum-rs-rpc: 0.3.0
  • lxmf-sdk: 0.2.1
  • lxmf-wire: 0.2.0
  • reticulum-rs-core: 0.2.0
  • reticulum-rs-transport: 0.2.0
  • app/tool crates remain unpublished and are distributed through GitHub bundles

Validation Record

  • Main integration PR for the ZeroMQ SDK stack:
    #340
  • PR #340 required checks passed: quality, correctness,
    build-matrix (stable), test-nextest-unit, and contracts.
  • Focused local checks before integration included:
    • cargo test -p lxmf-sdk --features zmq-pipeline-backend zmq_pipeline -- --nocapture --test-threads=1
    • cargo test -p reticulum-rs-rpc sdk_propagation -- --nocapture
    • cargo fmt --all -- --check
    • cargo check -p lxmf-sdk --features zmq-pipeline-backend
    • cargo clippy -p lxmf-sdk -p reticulum-rs-rpc --lib --all-features --no-deps -- -D clippy::manual_assert -D clippy::redundant_clone -D clippy::iter_cloned_collect
    • C:\Program Files\Git\bin\bash.exe tools/scripts/check-module-size.sh

Known Limits

  • Propagation interoperability and operational substitutability are still marked
    partial in docs/status/current-roadmap.md.
  • Full Python surface parity is not achieved.
  • Application-level REM/RCH schemas are out of scope for this release; LXMF-rs
    provides the basic LXMF fields and typed SDK transport behavior those clients
    need.
  • External-client compatibility claims for Sideband, MeshChatX, and Columba
    require separate external-client interop gate evidence.
  • Hardware and prepared-host evidence for all interface paths remains broader
    than the automated CI evidence.

What's Changed

Read more

LXMF-rs v0.3.0

12 Jun 22:40

Choose a tag to compare

LXMF-rs v0.3.0 Release Notes

Date: 2026-06-12
Release commit: b86482412846c4f39f091c1d0c3e2718226881b4

This is a usable sub-1.0 LXMF-rs product and daemon bundle release. It promotes
the v0.3.0-rc1 line after additional propagation reliability, interop, and
operator-observability fixes landed on main.

This release is not a claim of complete drop-in Python Reticulum/LXMF
replacement parity. The maintained parity source of truth remains
docs/status/current-roadmap.md.

Scope

  • Usable Rust implementation of core Reticulum and LXMF behavior with repeatable
    compatibility evidence against pinned Python Reticulum and LXMF references.
  • GitHub binary bundle release for lxmd and reticulumd.
  • Focused propagation-node, peer-sync, remote transfer, retained payload, and
    operator-status improvements over v0.2.0 and v0.3.0-rc1.
  • Known partial parity for broader Python router lifecycle, external clients,
    and hardware/interface breadth.

Highlights Since v0.2.0

  • Expanded propagation peer and router behavior, including restored queue
    replay, unpeer cleanup, duplicate receive accounting, peer cost restoration,
    admission gates, throttling, transfer limits, retained haves, and
    payload-backed peer queue snapshots.
  • Broader remote propagation sync, fetch, download, unpeer, lifecycle,
    failure-kind, cancellation, close-signal, and source-peer backoff handling.
  • Stronger Python compatibility coverage for peer sync, paper URI ingest,
    unknown handle behavior, remote status/control, Python-origin /offer, and
    propagation /get haves acknowledgement.
  • Added and stabilized production interface work for AutoInterface, KISS, LoRa,
    RNode BLE, and VR-N76 KISS-over-BLE paths.
  • Added rnstatus-rs daemon status coverage, including interface runtime state
    and propagation peer state.
  • Added SDK and wrapper improvements, including contract/schema updates, Kotlin
    wrapper conformance, easier SDK examples, and ZeroMQ pipeline hardening.
  • Added embedded mini-node and embedded interface support surfaces.
  • Expanded CI, scheduled mesh/soak/HIL workflows, release readiness docs, and
    release bundle automation.

Changes Since v0.3.0-rc1

  • Added live propagation interop cases for Python-origin /offer and /get
    haves acknowledgement.
  • Preserved propagation lifecycle and queue state across no-access, ignored,
    malformed, failed, cancelled, and terminal remote transfer paths.
  • Added source-peer backoff and recovery handling for failed or malformed remote
    fetch/download/import paths.
  • Improved peer-sync visibility and retry behavior, including structured failure
    kinds, hidden-peer control lookup, failed local offer state, and payload-backed
    queue snapshot preservation.
  • Improved retained propagation haves filtering, storage-pruning priority, and
    propagation ingest rejection semantics.
  • Surfaced remote resource terminal events and remote link close signals for
    operator-visible diagnostics.
  • Added BLE MTU readiness diagnostics.
  • Added the Codex PR review workflow.

Current Version Train

GitHub release version: v0.3.0

Crate/package versions intentionally remain per the publish plan rather than one
blanket workspace version:

  • lxmf: 0.3.0
  • reticulum-rs-rpc: 0.3.0
  • lxmf-sdk: 0.2.1
  • lxmf-wire: 0.2.0
  • reticulum-rs-core: 0.2.0
  • reticulum-rs-transport: 0.2.0
  • app/tool crates remain unpublished and are distributed through GitHub bundles

Validation Record

Local RC gates for the release candidate branch included:

  • cargo xtask ci: passed with LXMF_RS_BASH pointing to Git Bash.
  • cargo xtask ci --stage sdk-soak-check: passed.
  • cargo xtask ci --stage schema-client-check: passed.
  • cargo xtask schema-client-generate --check: passed.
  • cargo xtask publish-crates --wave all --dry-run --allow-dirty: passed
    through the release-tool fallback for unpublished local publish-wave
    dependencies.
  • cargo run -p rns-tools --bin rnx -- e2e --timeout-secs 20: passed.
  • cargo fmt --all -- --check: passed.

Known Limits

  • Propagation interoperability and operational substitutability are still marked
    partial in docs/status/current-roadmap.md.
  • Full Python surface parity is not achieved.
  • External-client compatibility claims for Sideband, MeshChatX, and Columba
    require separate external-client interop gate evidence.
  • Hardware and prepared-host evidence for all interface paths remains broader
    than the automated CI evidence.

Release branch merge source: origin/main commit d4e4520.

LXMF-rs v0.3.0-rc1

10 Jun 16:05
abca87a

Choose a tag to compare

LXMF-rs v0.3.0-rc1 Pre-release
Pre-release

LXMF-rs v0.3.0-rc1 Release Notes

Date: 2026-06-10
Base commit: 5c08f4d87becce96e48b4ae2a15058d16e236f9c

This is a release candidate for the next LXMF-rs product and daemon bundle
release. It is intended for integration testing, operator validation, and
feedback before the final v0.3.0 release.

Scope

  • Usable Rust implementation of core Reticulum and LXMF behavior with repeatable
    compatibility evidence against pinned Python Reticulum and LXMF references.
  • GitHub binary bundle release for lxmd and reticulumd.
  • Not a claim of complete drop-in Python replacement parity. The maintained
    parity source of truth remains docs/status/current-roadmap.md.

Highlights Since v0.2.0

  • Expanded propagation peer and router behavior, including restored queue replay,
    unpeer cleanup, duplicate receive accounting, peer cost restoration, admission
    gates, and payload-backed peer queue snapshots.
  • Broader remote propagation sync, fetch, download, unpeer, and lifecycle
    accounting coverage.
  • Stronger Python compatibility coverage for peer sync, paper URI ingest, unknown
    handle behavior, and pinned reference interop.
  • Added and stabilized production interface work for AutoInterface, KISS, LoRa,
    RNode BLE, and VR-N76 KISS-over-BLE paths.
  • Added SDK and wrapper improvements, including contract/schema updates, Kotlin
    wrapper conformance, easier SDK examples, and ZeroMQ pipeline hardening.
  • Added embedded mini-node and embedded interface support surfaces.
  • Expanded CI, scheduled mesh/soak/HIL workflows, release readiness docs, and
    release bundle automation.

Current Version Train

GitHub release version: v0.3.0-rc1

Crate/package versions intentionally remain per the publish plan rather than one
blanket workspace version:

  • lxmf: 0.3.0
  • reticulum-rs-rpc: 0.3.0
  • lxmf-sdk: 0.2.1
  • lxmf-wire: 0.2.0
  • reticulum-rs-core: 0.2.0
  • reticulum-rs-transport: 0.2.0
  • app/tool crates remain unpublished and are distributed through GitHub bundles

Validation Record

Local RC gates for this release-prep branch:

  • cargo xtask ci: passed with LXMF_RS_BASH pointing to Git Bash.
  • cargo xtask ci --stage sdk-soak-check: passed.
  • cargo xtask ci --stage schema-client-check: passed.
  • cargo xtask schema-client-generate --check: passed.
  • cargo xtask publish-crates --wave all --dry-run --allow-dirty: passed
    through the release-tool fallback for unpublished local publish-wave
    dependencies.
  • cargo run -p rns-tools --bin rnx -- e2e --timeout-secs 20: passed.
  • cargo fmt --all -- --check: passed.
  • cargo xtask release-check: attempted after fixing the failing sub-gates, but
    the local Windows run exceeded the one-hour command timeout during the soak
    portion. The soak gate passed when rerun directly.

Known Limits

  • Propagation and operational substitutability are still marked partial in
    docs/status/current-roadmap.md.
  • Full Python surface parity is not achieved.
  • External-client compatibility claims for Sideband, MeshChatX, and Columba
    require separate external-client interop gate evidence.
  • Hardware and prepared-host evidence for all interface paths remains broader
    than the automated CI evidence.

LXMF-rs 0.2.0

25 May 11:29

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.1.3...v0.2.0

What's Changed

New Contributors

  • @zippy made their first co...
Read more

v0.1.3

01 Apr 18:48

Choose a tag to compare

Highlights

  • promotes the v0.1.3-rc2 release train to a stable v0.1.3 product release
  • removes the Bruno / protobuf / gRPC surface from main in favor of the maintained JSON-RPC/MessagePack daemon API
  • aligns the repository, docs, and crates.io naming around the published crate family

Included crates.io releases

  • reticulum-rs-core 0.2.0
  • lxmf-wire 0.2.0
  • reticulum-rs-transport 0.2.0
  • reticulum-rs-rpc 0.3.0
  • lxmf-sdk 0.2.1
  • reticulum-rs 0.2.0
  • lxmf 0.3.0

Validation

  • cargo run -p rns-tools --bin rnx -- e2e --timeout-secs 20
  • cargo xtask package-daemon-bundle --version v0.1.3
  • cargo xtask ci --stage interop-artifacts
  • full cargo xtask release-check cleared all substantive test, soak, dry-run publish, boundary, doc, and Miri stages; the only observed blocker was a transient interop-artifacts drift, which was refreshed and revalidated directly before the release cut

Release assets

The Release Bundles workflow for tag v0.1.3 publishes the daemon bundles for Linux, macOS, and Windows to this release.

What's Changed

Full Changelog: 0.1.2...v0.1.3

v0.1.3-rc2

01 Apr 15:16

Choose a tag to compare

v0.1.3-rc2 Pre-release
Pre-release

What's Changed

Full Changelog: 0.1.2...v0.1.3-rc2

crates.io release waves

Initial Wave 1 publish from the packaging pass on main:

  • reticulum-rs-core 0.2.0
  • lxmf-wire 0.2.0
  • reticulum-rs-transport 0.2.0
  • reticulum-rs-rpc 0.2.1

Follow-up publish wave after removing the Bruno / protobuf / gRPC surface from main:

  • reticulum-rs-rpc 0.3.0
  • lxmf-sdk 0.2.1
  • reticulum-rs 0.2.0
  • lxmf 0.3.0

Release hygiene note:

  • reticulum-rs-rpc 0.2.0 was yanked because its published tarball omitted required package assets.
  • reticulum-rs-rpc 0.2.1 replaced it for the pre-removal line.
  • reticulum-rs-rpc 0.3.0 is the current line from main, after the gRPC removal.

Repository follow-up:

  • main now includes the facade crates lxmf and reticulum-rs.
  • main removes the Bruno / protobuf / gRPC surface in favor of the maintained JSON-RPC/MessagePack daemon API and library crates.

0.1.3-rc1

20 Mar 17:34

Choose a tag to compare

0.1.3-rc1 Pre-release
Pre-release

What's Changed

Full Changelog: 0.1.2...0.1.3-rc1

What's Changed

Full Changelog: 0.1.2...0.1.3-rc1

0.1.2

12 Mar 20:39
9bfb141

Choose a tag to compare

What's Changed

  • ci: use native shell for windows release bundle build by @CoteTommy in #94
  • build: remove unix-only cargo wrapper by @CoteTommy in #95
  • build: bundle sqlite for cross-platform builds by @CoteTommy in #96
  • build: fix windows daemon bundle archiving by @CoteTommy in #97

Full Changelog: 0.1.1...0.1.2

LXMF-rs 0.1 (superseded by 0.1.1)

12 Mar 16:05
1d0b9f1

Choose a tag to compare

Release 0.1

Superseded by 0.1.1. Use 0.1.1 for current release bundles and cross-platform packaging.

This was the initial Windows daemon-focused release for LXMF-rs.

What's Included

  • lxmd.exe -- compatibility launcher and CLI control surface.
  • reticulumd.exe -- daemon process actually started by lxmd.
  • lxmd.example.config -- starter config generated from lxmd --exampleconfig.
  • README.md -- quick runtime usage reference.

Running

  1. Extract these files into one directory.
  2. Place a config file next to lxmd.exe (default name: config), or pass a directory with --config.
  3. Start daemon:
./lxmd.exe --config .\lxmd --rpc 127.0.0.1:4243
  1. Check health:
./lxmd.exe --config .\lxmd --status --rpc 127.0.0.1:4243

If needed, copy the binaries and the config together to another machine that can run this package.

Notes

  • lxmd.exe will search for reticulumd.exe next to itself, one directory up, or the path in RETICULUMD_BIN.
  • If using the generated sample config, default addresses are rpc.listen=127.0.0.1:4243 and transport.listen=0.0.0.0:37428.