Commit Graph
159 Commits
Author SHA1 Message Date
liu weikai 110fa96be8 Refine node info UI and peer announcements 2026-04-21 22:32:52 +08:00
liu weikai a022d4af8b Tighten node persistence storage flow 2026-04-21 22:24:58 +08:00
liu weikai c98f3a76a7 site: refresh Pages after v0.1.21-alpha release 2026-04-21 16:54:45 +08:00
liu weikai d3e8d3e56e release: 0.1.21-alpha v0.1.21-alpha 2026-04-21 16:45:05 +08:00
liu weikai fd5a67e40a site: refresh Pages after v0.1.20-alpha release 2026-04-21 14:56:31 +08:00
liu weikai dcba11e920 Release 0.1.20-alpha v0.1.20-alpha 2026-04-21 14:42:02 +08:00
liu weikai 020d881738 Polish startup, locale pack, and IME UX 2026-04-21 11:51:57 +08:00
liu weikai 063f0960e5 Optimize startup flow and split zh-Hans font packs 2026-04-21 10:20:01 +08:00
liu weikai cd045e5935 docs: restore changelog utf-16 encoding v0.1.19-alpha 2026-04-21 03:42:07 +08:00
liu weikai 8c7ebdb3b9 ci: restore original changelog parsing 2026-04-21 03:34:25 +08:00
liu weikai 04f6632116 ci: read changelog regardless of file encoding 2026-04-21 03:28:46 +08:00
vicliu b2229138ed Tdeck (#24)
* fix(tracker): apply localized labels on tracker page

* feat: add runtime locale packs and font fallback

* release: prepare 0.1.19-alpha
2026-04-21 03:19:05 +08:00
liu weikai 7cfb72ef31 fix(ci): refresh pages after release publish 2026-04-20 16:26:52 +08:00
liu weikai 34e1fc2239 release: 0.1.18-alpha v0.1.18-alpha 2026-04-20 16:01:55 +08:00
liu weikai bfc7a5eb1a fix(web): point read more links to wiki 2026-04-19 21:26:15 +08:00
vicliu e5c11d6473 Feature/localization from main (#23)
* 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
v0.1.17-alpha
2026-04-19 21:08:59 +08:00
liu weikai 609c348b25 Include changelog entries in GitHub releases v0.1.16-alpha 2026-04-17 14:14:24 +08:00
vicliu cdf1145f1d Merge pull request #20 from vicliu624/feature/lxmf-rnode-reticulum-from-main
## [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 相关的溢出风险
2026-04-17 14:05:30 +08:00
liu weikai 51de0af886 Prepare 0.1.16-alpha changelog 2026-04-17 13:59:17 +08:00
liu weikai f288ebe5bb Apply CI clang-format to ESP sources
- 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
2026-04-17 13:40:15 +08:00
liu weikai 11477efe02 Expand LXMF transport for app data and propagation
- 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
2026-04-17 13:15:04 +08:00
liu weikai d636eb6398 WIP: rescue misbranched LXMF and RNode work 2026-04-17 10:03:08 +08:00
vicliu 86f71bf705 Merge pull request #18 from vicliu624/gat562_mesh_evb_pro
0.1.15-alpha
v0.1.15-alpha
2026-04-16 15:08:58 +08:00
liu weikai f9c43124c2 Merge remote-tracking branch 'origin/main' into gat562_mesh_evb_pro 2026-04-16 15:02:31 +08:00
liu weikai 1a5f0ac6b2 Add Discord contact links to README 2026-04-16 14:49:48 +08:00
liu weikai baf6f1855e Fix CI regressions and prepare 0.1.15-alpha 2026-04-16 14:35:44 +08:00
liu weikai 09ad46c56b Unify device capability gating and T-Deck two-pane UI 2026-04-16 14:11:09 +08:00
liu weikai 32751e3d90 Improve T-Deck settings touch navigation 2026-04-16 09:53:26 +08:00
liu weikai b05a4aa5b0 Gate SSTV on audio input capability 2026-04-16 00:27:11 +08:00
liu weikai cecdaa0710 Refine T-Deck settings item layout 2026-04-16 00:08:57 +08:00
liu weikai 37eb709be9 Add touch drag support for GPS map 2026-04-15 22:52:29 +08:00
liu weikai 109e793096 fix(display): restore tdeck rgb565 byte order 2026-04-15 21:52:49 +08:00
liu weikai f2a964e9e8 docs(map): update base tile directory examples 2026-04-15 21:52:39 +08:00
liu weikai c7243b94d2 fix(ui): rebalance mono screensaver footer layout 2026-04-15 21:52:28 +08:00
liu weikai c509553239 fix(ble): simplify nrf52 meshtastic service flow 2026-04-15 21:52:19 +08:00
liu weikai 89693c3390 fix(gps): stabilize map input and tile loading flow 2026-04-15 21:52:05 +08:00
liu weikai 04e2917aa9 Refine T-Deck menu navigation ownership 2026-04-15 13:38:55 +08:00
liu weikai d20e4f1a22 Fix ESP display color-order ownership 2026-04-15 12:30:10 +08:00
liu weikai 3179ffa4a7 Stabilize GAT562 BLE config flow 2026-04-14 23:08:04 +08:00
liu weikai 766c640dc8 Apply CI formatting fixes 2026-04-14 21:30:44 +08:00
liu weikai 32b3dd630c Fix GAT562 protocol switching and MeshCore BLE settings 2026-04-14 21:18:02 +08:00
vicliu 54cf0301e2 Gat562 mesh evb pro (#13)
* feat(gat562): wire nrf52 board runtime and bluetooth stack

* refactor(chat): align shared BLE cores and nrf meshtastic routing

- extract Meshtastic and MeshCore phone/business flows into shared core_chat BLE cores with owner hook seams for ESP and nRF backends

- replace nrf-specific lite adapters with board/platform adapters that consume shared cores and shared storage contracts

- extend nrf Meshtastic radio path with packet history dedupe, flooding rebroadcast, route discovery/traceroute responses, routing ACK/error handling, observed relay learning, retransmit queueing, and next-hop persistence

- persist nrf device identity and node metadata more explicitly, including next-hop state and node-id initialization support

- move nrf chat/contact/blob storage further toward InternalFS-backed persistence and update contact/node store behavior accordingly

- wire gat562 protocol/app facade pieces to the concrete nrf stores/adapters and add supporting app time-sync hooks used by platform runtimes

- add owner-hook split files and planning/status docs to document the ongoing alignment with the reference meshtastic-firmware multi-platform structure

* Add NRF Fusion Pixel font and fix Meshtastic RX

Integrate Fusion Pixel 8px as the NRF mono UI font stack and switch the mono runtime to a dedicated MonoFont/TextRenderer path that can render ASCII, CJK, and symbols from one asset set.

Add the generated NRF font assets and generator script, including the compact font format with per-glyph advance support, and fix the BDF bitmap parsing bug that previously produced blank ASCII glyphs on device.

Move the LVGL Noto CJK font asset out of shared modules into the ESP-specific platform tree and update the related build/config references so the ESP-only font boundary is explicit and NRF does not compile the LVGL asset by accident.

Update the mono UI runtime to use the new renderer, normalize major menu and title labels to uppercase, and wire the GAT562 UI runtime to the Fusion Pixel font.

Fix the core mesh adapter router so Meshtastic and MeshCore backends can coexist without overwriting each other, and ensure active protocol selection is applied before mesh config changes are pushed into the runtime.

Improve GAT562 runtime diagnostics by mirroring debug output to both Serial and Serial2, logging startup radio configuration, and logging raw RX packets with RSSI/SNR so radio-path issues are visible during bring-up.

Relax SX1262 receive polling so it no longer hard-gates RX handling on DIO1 state alone, avoiding a failure mode where the board appeared alive but never delivered packets into the receive path.

Align the NRF Meshtastic adapter with the working ESP behavior for channel handling: use the default expanded public PSK for an unconfigured primary channel, compute channel hashes from the active preset name or Custom label instead of a hard-coded Primary string, and apply the same logic to self-announcement/NodeInfo packets.

Add protocol-layer Meshtastic RX diagnostics for parse, decrypt, decode, text queueing, app-data queueing, unknown-channel, and dedup events to make packet flow visible while validating interoperability.

Fix early duplicate handling for relayed packets so the first valid packet is still delivered into text processing while later relays are correctly suppressed, which restores Broadcast conversation creation and message visibility in the CHATS page.

* feat(gat562): align nrf ui and meshtastic behavior

* Refine mono UI GPS pages and board diagnostics

* refactor: align board runtimes, GAT562 app shell, and BLE integrations

- migrate ESP board-specific implementations and runtime adapters into boards/*
- continue GAT562/Tab5/UI runtime alignment across app and board layers
- sync BLE and runtime integrations, and apply repository clang-format rules

* Refine gat562 mono UI and persist UI settings

* Fix settings persistence and GNSS UI behavior

* Improve mono UI paging and Meshtastic RX fallback

* Align nRF52 Meshtastic BLE and PKI behavior

* Refine mono UI node and chat interactions

* Fix deferred config persistence on gat562 BLE

* Refine mono node compass and GPS layouts

* Include node position in Meshtastic phone info

* Refactor shared board contracts out of ESP platform layer

* Persist node positions across restarts

* Ignore local compile commands database

* Sync README acknowledgements updates

* Apply CI formatting

* Fix board ownership drift and restore pager walkie support

* Add APRS asset, expand System controls, and harden GAT562 self-position persistence

Bundle the current workspace changes into a single checkpoint covering the in-progress shared UI, settings, and GAT562 runtime work.

What this includes:

- add the APRS asset source and image resource currently used by the shared UI asset set

- extend the shared System/settings flow so vibration and screen brightness can be surfaced through the device runtime and settings UI plumbing

- update the mono 128x64 runtime and the GAT562 platform bindings so the new settings controls are available in the GAT562 experience

- wire the ESP runtime/startup helpers needed to support the same device-runtime settings path on the ESP side

- persist the GAT562 self GPS position into the node store during core service updates so a device that already obtained a fix can retain its own last known position across reboot

- add an explicit node-store flush interface and implement it in both the nRF52 and ESP Meshtastic node-store backends so critical self-position updates can be forced to persistent storage immediately instead of waiting for the normal debounce window

- keep the existing debounced persistence behavior for ordinary node-store churn while allowing targeted immediate flushes for data that would otherwise be easy to lose during restart or power loss

* chore: checkpoint current chat and contacts changes

* perf: reduce chat list and message handling latency

* Align Meshtastic phone sync and chat UI refresh

* Remove key verification UI and hide MC position exchange

* Add T-Deck Pro board bring-up and sync pending UI fixes

* Refactor GAT562 runtime and stabilize Meshtastic BLE

Refactor the GAT562 board runtime by extracting dedicated GPS and input runtime components and routing config application through a focused runtime apply service.

Narrow the nRF52 BLE manager dependencies, rework the Meshtastic BLE transport to better match the Android client handshake, and harden the FromRadio/FromNum flow with improved staging, read pacing, diagnostics, and stack-safe config snapshot generation.

Also repair repository text encoding issues in docs and UI comments, and add Meshtastic BLE timing documentation to capture the expected Android/firmware interaction model for future debugging.

* fix: gat562 settings

* Define LoRa tx power caps per board

* Refine mono conversation bubble focus

* Polish mono conversation and message info layout

* Harden Meshtastic BLE flow and cross-target builds

Adjust the Meshtastic BLE transport timing on nRF52, retain pending FROMNUM notifications, and defer local admin/self replies to reduce request/response races during Android settings flows.

Also make the shared chat/UI code compile across non-nRF targets by gating RTOS and Arduino-only helpers and by updating the team page layout to the current page profile fields.

Note: this does not resolve the gat562 Meshtastic Android settings progress bar issue yet; the BLE/admin response path is improved and instrumented, but the root cause of the stuck loading state remains unresolved.

* Fix GAT562 mono channel slot UI and screen timeout

* Revert Meshtastic BLE hardening changes

Revert b9e20b2662 because it causes app-side configuration reads to hang on GAT562.

This restores the previous Meshtastic BLE timing/notification behavior and also drops the cross-target compatibility adjustments that came with that commit.

* Refactor nrf52 fs helpers and show flash free space

* fix sync node info

* Harden Meshtastic BLE receive path

* Fix Meshtastic nodeinfo persistence

* Persist NodeInfo position updates

* Format files to match CI style

* Prepare 0.1.14-alpha docs and CI

* Fix watch chat build and CI formatting

* Format sources for CI clang-format-14
v0.1.14-alpha
2026-04-13 17:33:21 +08:00
liu weikai 64c97b339d Merge origin/main keeping gat562_mesh_evb_pro state 2026-04-13 17:31:03 +08:00
liu weikai f058027cb8 Format sources for CI clang-format-14 2026-04-13 17:20:21 +08:00
liu weikai 7cbcacac2a Fix watch chat build and CI formatting 2026-04-13 17:11:57 +08:00
liu weikai 3ba3a328d5 Prepare 0.1.14-alpha docs and CI 2026-04-13 16:58:24 +08:00
liu weikai f9eb0714d7 Format files to match CI style 2026-04-13 16:26:12 +08:00
liu weikai 714d67fcbd Persist NodeInfo position updates 2026-04-13 13:20:35 +08:00
liu weikai 3201f6a394 Fix Meshtastic nodeinfo persistence 2026-04-13 13:14:28 +08:00
liu weikai 5a61bab5d0 Harden Meshtastic BLE receive path 2026-04-13 12:57:19 +08:00