Align Scan Local with MeshCore zero-hop discovery by logging the exact request frame, keeping the radio in an RX-focused window after DISCOVER_REQ, and deferring advert retransmits that would otherwise collide with delayed DISCOVER_RESP packets. Also avoid zero-delay discover responses from this compatibility layer.
Match the local MeshCore discover request format observed from interoperable peers by sending the six-byte payload with filter 0xFF and no optional since field, while keeping receive-side parsing tolerant of longer requests.
Bind MeshCore direct text ACK signatures to chat message ids so received ACKs update compose status to Sent, publish timeout or eviction failures through the existing chat send-result path, and give discover responses stable short-name placeholders until adverts or node-info frames provide real names.
Preserve the real ESP/Pager GPS map runtime view state across menu exit and re-entry by caching zoom, center, pan, and follow mode outside the reset GPSPageState lifecycle and updating the cache when map controls, touch pan, route focus, tracker focus, or GPS follow refresh change the view.
Serialize tracker start/stop/append/list/active-state SD work behind the shared SPI lock and recorder mutex, and fix the Pager SD-ready timeout conversion so Map/Tracker contention no longer makes the card appear to disappear.
Route phone custom channel variables to Meshtastic primary channel state instead of MeshCore config, keep explicit MeshCore aliases, and cover Custom/AQ short-PSK plus manual LoRa admin settings with the phone core smoke test.
Preserve protocol-specific send/discovery failures through the router and ChatService, restore MeshCore group fallback key handling, classify signed adverts/discovery responses on ESP/nRF52, and enable target logs plus smoke coverage so the next failure has actionable detail.
* 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
* feat(ui): add runtime English and Chinese localization
* fix(meshtastic): harden t-deck send and ack recovery
Align the T-Deck SX1262 setup with the reference firmware, switch critical radio SPI paths to blocking access, and share RX restart state between direct send paths and the radio task so TX-to-RX handoff cannot silently get stuck.
Also unify Meshtastic wire transmission through a single helper, keep wire packets for ACK-tracked sends, retry ACK timeouts up to three times, and document the issue #21 repair checklist.
Validation: local builds passed for tdeck, tlora_pager_sx1262, lilygo_twatch_s3, and gat562_mesh_evb_pro; clang-format check passed.
Testing status: not fully tested on hardware yet.
* Refactor LXMF runtime toward full Reticulum alignment
Split adapter runtime state into transport, link, and propagation domains.
Add pending path request tracking, stronger link teardown semantics, outbound link establishment, deferred link payload flushing, link keepalive/stale handling, and inbound split-resource assembly.
Document the authoritative Reticulum/LXMF runtime alignment plan and mark the older device-mode plan as historical context.
* feat(web): add pages site and web flasher release flow
- format the LXMF adapter and team event bus sink to match .github/workflows/ci.yml
- re-run all CI PlatformIO build targets locally: tlora_pager_sx1262, tdeck, lilygo_twatch_s3, and gat562_mesh_evb_pro
- add shared LXMF wire codecs for app-data payloads, link requests/responses, resource advertisements, and propagation batches
- implement ESP LXMF app-data send/receive, active link sessions, resource chunking, propagation announces, and verified envelope delivery
- propagate want_response through team and hostlink flows, track team members for unicast fan-out when broadcast app-data is unavailable, and publish node position updates from team position events
- advertise broadcast app-data support on MeshCore/Meshtastic adapters and replace fixed-size Reticulum token buffers with dynamic storage