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.
Carry conversation timestamps into the legacy pager list, force names/previews/time/unread labels to single-line bounded widths, keep MeshCore unknown senders from rendering as Me, show protocol prefixes in Contacts, and rebind the shared two-pane navigation after refresh so Team/Chat/Contacts filters become reachable.
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