Schedule Linux self announcements and retain full MeshCore discover keys.
Align adapter and worker PKI readiness, converge node metadata with public-key
identities, and preserve projected node IDs across persistence and restart.
Avoid routing-prefix self collisions and use local receive time for Nearby
freshness on embedded MC paths. Start MT NodeInfo reply suppression only after
successful transmission.
Add paired-radio discovery/direct-message, directory migration and worker
regressions with English audit and validation notes.
Expose signal-chain controls, mathematical previews, actual phase forecasts and residuals, channel and FEC diagnostics, IQ recording/replay, and synthetic OFDM experiments. Preserve qualified CM0 defaults and compact FFT/NEON decoding, batch diagnostics for real-time reception, and package verified backend sources.
Replace Linux HAL's separately allocated map nodes with bounded owned
storage while preserving its count/find/index/iteration/clear interface.
BUSY polling now reads handles retained by the transport object's memory
lock instead of depending on the capture worker's allocator arena.
Revert broad anonymous-map admission, which exceeded the device's existing
48-MiB admission budget. Keep main-heap/runtime/stack admission bounded.
Verify an owner allocated on the main thread and initialized on a worker
has locked handle storage, plus lookup, replacement, capacity and reuse.
Validation: focused capture-memory/handle regression passed; clang-format
14 and staged diff checks passed. GitNexus reports Linux HAL class impact
as medium (six direct dependencies); its broad pinMode graph is critical,
so that function implementation and its callers remain unchanged.
GPIO initialization occurs on the capture worker, whose allocator arena is
a private anonymous mapping rather than the main process heap. Include
readable private writable anonymous mappings in the existing bounded
admission, while retaining the current-stack window and 48-MiB ceiling.
Run the map-node residency regression inside a real worker thread. This
fails even with main-heap locking and passes with anonymous arena locking.
Validation: worker-thread capture memory regression passed; clang-format14
and staged diff checks passed. GitNexus change analysis was run but this
inline class is absent from the index; direct source diff remains limited
to capture memory admission and its regression.
Include the process heap in the bounded capture memory admission. Locking
the radio object alone does not retain separately allocated GPIO map nodes
that are read during BUSY polling. A failing transfer recorded a minor
page fault during a 1099-us BUSY wait.
Add a regression that checks a real std::map node's locked VMA flags. It
fails with the old admission and passes with heap admission. Preserve the
48-MiB cap and fail-closed behavior. Live RF endurance still needs validation.
Validation: 31 1seg tests passed; ARM application/helper build succeeded;
clang-format 14 and git diff checks passed. GitNexus impact/change analysis
was attempted; the inline memory class is not indexed, so its graph result
does not cover this change. Direct source review limits the diff to memory
admission and its regression.
Expose sample rate, SPI clock and receiver gain in the TV page, persist the
selection, and restart capture and decoding with matching per-generation
parameters. Use 450 kpair/s, 8.7 MHz and gain 9 as the current test baseline.
Present ideal FIFO fill/drain curves beside measured reception counters,
separate preview settings from active settings, and keep the fixed 320x240
video beside programme information. Document that capture timing failures
remain unresolved and that SPI bulk transfers already use DMA.
Validation: 31 1seg tests; actual LVGL page regression with offline IQ and
synthetic metadata, parameter application and reopening persistence; ARM
application/helper compilation; clang-format 14; UI boundary, root artifact
and ESP stack hygiene guards; staged GitNexus change analysis.
Keep IQ capture isolated from decoder startup and rendering, bound transport
backpressure, validate DMA batches before publication, and expose playback
telemetry. Preserve radio restoration and add capture, transport, media and
SDL regression coverage. Document user-accepted CM0 and Sony reception and
the limits of the one-shot kernel experiment.
Repair stale preview TileContext initialization, missing simulator link
sources and Cardputer SDL dependencies. Align menu and radio-log contracts
with current implementations, keep AutoInterface port admission covered,
refresh source inventories, and apply the CI clang-format 14 rules.
Validation: 45 Agenda tests, 30 1seg tests, 8 LR2021 IQ tests, 17 native config
interop tests, ESP stack hygiene, platform/root guards, source inventories,
clang-format 14, git diff --check, and staged GitNexus detect_changes.
Compose the CM0 fullscreen application and standard Debian package, align the
Cardputer Zero shell, and share protocol, configuration, audio and storage
services with embedded targets through existing platform seams.
Add the paginated on-device TMAP creator using Center's published producer,
private workspace recovery and direct keyboard shortcuts. Preserve unfinished
management work behind its existing opt-in capability.
Include native, ARM and shared-core regression fixtures, integration records,
packaging helpers and dependency/license updates. Keep local build trees,
device credentials, produced packages and validation logs outside version control.
Validation before integration: ESP stack hygiene, Reticulum scope guard, staged
whitespace checks and GitNexus scope audit. Prior device/build evidence and
remaining hardware/package boundaries are recorded in the acceptance documents.
Split LXMF runtime ownership into focused peer, path, link, propagation, and delivery helpers while keeping the adapter as the coordination layer.
Make chat delivery refs and send-result events protocol-aware across Reticulum, Meshtastic, and MeshCore, including Sent/Delivered/Failed semantics, UI badges, retry lookup, and store persistence.
Fix Meshtastic MQTT private replies to publish encrypted direct packets and cover the new delivery behavior with smoke tests.
Add Reticulum as a first-class product protocol with LXMF delivery over LoRa and Wi-Fi TCP gateway carriers, SD-backed groups, identity/settings UI, Team appdata support, and conformance guardrails.
Remove the user-facing PC Link surface and keep RNode/LXMF as internal Reticulum implementation details.
* fix(tdeck): improve display startup and brightness handling
* fix(energy-sweep): use instant RSSI and only lock LoRa while scanning
* feat(cardputer-zero): add linux shells and M5 SDK baseline
* feat(cardputer-zero): add linux runtime baseline and shell ui simulator
* feat(cardputer-zero): unify linux shell boot and polish simulator
* docs(cardputer-zero): define final-shape adaptation spec
* feat(cardputer-zero): integrate shared linux runtimes and pages
* fix(linux-sim): mount repo root in dev container
* Fix GPS runtime semantics and transport init
Add a GPS specification and align platform runtimes around explicit GPS enable, power, receiver configuration, and external NMEA export semantics.
Keep internal NMEA parsing independent from external export settings, stop treating gps_mode as an enable flag, and update phone/UI config paths to use gps_enabled.
Decouple board-level GPS transport readiness from UBX receiver probing on T-Deck, T-Deck Pro, and T-LoRa Pager, and let boards own UART teardown.
Verified with pio run -e tdeck, pio run -e tlora_pager_sx1262, pio run -e gat562_mesh_evb_pro, and pio run -e tdeck_pro_a7682e.
* Add Russian localization pack
Add an installable European Cyrillic Extended locale bundle with Russian translations, Cyrillic font metadata, and package catalog entry.
Credit polarikus for the Russian translations based on the polarikus/trail-mate localization PR.
* Prepare 0.1.23-alpha release
* Fix T-Watch Morse release build
* Format CI-checked sources
* Fix Cardputer Linux CI dependencies
* Fix WSL validation smoke target build
* Prepare 0.1.24-alpha release
* fix: unblock Cardputer Zero Linux CI