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
* 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
## [0.1.16-alpha] - 2026-04-17
### Added / 新增
- Native `LXMF` protocol mode on ESP over Reticulum/RNode-compatible wire layers, including device-side identity, announce/discovery handling, opportunistic text and app-data delivery, and local contact/chat integration / 新增基于 Reticulum/RNode 兼容链路的 ESP 原生 `LXMF` 协议模式,补齐设备侧身份、announce/discovery、机会式文本与 app-data 收发,以及本地 Contacts/Chat 集成
- `RNode Bridge` USB CDC KISS modem mode for external Reticulum hosts, keeping host-controlled modem bridging separate from native on-device `LXMF` messaging / 新增面向外部 Reticulum 主机的 `RNode Bridge` USB CDC KISS 调制解调器模式,将宿主机控制的桥接模式与设备原生 `LXMF` 消息模式明确区分
- Dedicated RNode radio profile defaults/persistence and a new Reticulum/LXMF device-mode architecture document for the ESP shared shell path / 新增独立的 RNode 无线参数默认值与持久化配置,并补充面向 ESP 共享 Shell 路线的 Reticulum/LXMF 设备模式架构文档
### Changed / 变更
- Settings, Contacts, Chat, and the PC link page now understand `LXMF` and `RNode Bridge`, expose protocol-aware labels/capability gating, and stop assuming every protocol behaves like Meshtastic or MeshCore / Settings、Contacts、Chat 与 PC Link 页面现已识别 `LXMF` 和 `RNode Bridge`,提供协议感知的标签与能力门控,不再默认所有协议都按 Meshtastic 或 MeshCore 的行为模型工作
- Team and HostLink app-data flows now propagate `want_response` separately from delivery-ack semantics, so business-level response intent is preserved across device-side Team sends and host-triggered app-data routing / Team 与 HostLink 的 app-data 链路现已将 `want_response` 与投递 ACK 语义分离传递,使设备侧 Team 发送与 Host 触发的 app-data 路由都能保留业务层响应意图
- Team and protocol runtime wiring now use dedicated RNode/LXMF mesh settings where appropriate, including bridge-aware hostlink runtime switching and RNode-backed protocol factory selection / Team 与协议运行时接线现已在适用场景下使用独立的 RNode/LXMF Mesh 配置,并补齐桥接感知的 hostlink runtime 切换与基于 RNode 的协议工厂选择
### Fixed / 修复
- Team app-data broadcast behavior now falls back to per-member unicast when a backend lacks native broadcast app-data support, improving cross-protocol team delivery on constrained transports / 修复 Team app-data 广播在后端不支持原生广播时的发送路径,改为按成员逐个单播回退,提升受限传输下的跨协议 Team 投递兼容性
- Team position events now also publish node-position updates, keeping map/contact location state aligned with Team traffic instead of leaving position changes trapped inside Team-only events / 修复 Team 位置事件只停留在 Team 内部的问题,现会同步发布节点位置更新,使地图与联系人位置状态能够跟随 Team 流量变化
- Reticulum token encryption/decryption now uses dynamic storage instead of fixed-size buffers, reducing MTU-related overflow risk in the shared wire helpers / 修复 Reticulum token 加解密依赖固定长度缓冲区的问题,改用动态存储以降低共享 wire helper 中与 MTU 相关的溢出风险
- 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