diff --git a/docs/RETICULUM-TRANSPORT-PROGRESS.md b/docs/RETICULUM-TRANSPORT-PROGRESS.md index 17401804..4f5b7317 100644 --- a/docs/RETICULUM-TRANSPORT-PROGRESS.md +++ b/docs/RETICULUM-TRANSPORT-PROGRESS.md @@ -12,6 +12,33 @@ Full plan: `.claude/plans/enchanted-strolling-rocket.md`. Memory pointer: avoiding `mesh/listener/session.rs` transport plumbing + `mesh/mod.rs` routing, which this work owns. Stay out of `meshtastic.rs`/`protocol.rs` to avoid collisions. +## Checkpoint 2026-07-28 — RNode connect + names FIXED, live-verified E2E (read this first) + +The fleet reflash back to RNode firmware exposed a stack of bugs that made Reticulum +unusable on CP2102-bridged boards (Heltec V3 etc.) and left every archy node nameless on +RNS. All fixed in `a8c4694c` (backend) + `3f76b496` (UI), live-verified on archi-dev-box +and archy-x250-dev with a real RNode-to-RNode LXMF message (`transport: "reticulum"` in +mesh-messages) plus a cross-transport reply: + +1. **probe_rnode boot race** — serial open pulses DTR/RTS via the USB-UART bridge → ESP32 + power-cycles → KISS DETECT written 300ms later is eaten during ~2.5-3s of boot. Fix: + immediate probe (fast path) + drain-until-quiet boot settle + second DETECT window. +2. **configure() was a no-op on a running listener** (only enable/disable restarted it) — + the setup modal's apply/keep-as-is and every rename did nothing until process restart. +3. **Name propagation** — `config.advert_name` had no reader; `server.set-name` never + reached mesh; daemon display name fixed at spawn to the "Archy" default; the ARCHY:2 + announce blob REPLACED the LXMF name. Now: announces carry msgpack + `[name, stamp_cost, sf, ARCHY-blob]` (Sideband-compatible, blob invisible to stock + clients), daemon has a `set_name` verb, renames bounce the session live. +4. **Daemon-death detection** (was invisible up to the 30-min RX-stall watchdog), + **modal re-trigger loop** (plugged_at used tty mtime → bumps on every open; now + btime/ctime), **ARCHY:2 federation-name clobber**, **mesh.refresh RPC** (Refresh button + now actually re-queries the radio), **Meshtastic mesh.broadcast now sends NodeInfo**. + +Still open here: legacy-format peers (old fleet builds) show as `Reticulum ` until +they OTA; RNode RF params still daemon-hardcoded (EU-868 869.525/125k/SF8/CR5); Phase 4 +multi-radio; duty-cycle guard. + ## Status at a glance | Phase | What | Status |