feat(mesh): show federated Archipelago nodes on the Mesh Map
Peers that opt in via a new "Share Location" toggle in Settings (server.set-location RPC) get plotted on other trusted peers' Mesh Map with a distinct Archy-logo marker, separate from raw LoRa radio peers. Location is persisted locally, carried in NodeStateSnapshot, and propagated through federation sync/delta like other node state. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e3baaa5de3
commit
177b8a4338
@@ -61,6 +61,18 @@ pub struct ServerInfo {
|
||||
/// True if this node's keys are derived from a BIP-39 seed.
|
||||
#[serde(rename = "seed-backed", default)]
|
||||
pub seed_backed: bool,
|
||||
/// This node's own physical location, for the Mesh Map — opt-in only
|
||||
/// (see `share_location`), set via `server.set-location`. `None` until
|
||||
/// the user sets one, regardless of `share_location`.
|
||||
#[serde(default)]
|
||||
pub lat: Option<f64>,
|
||||
#[serde(default)]
|
||||
pub lon: Option<f64>,
|
||||
/// Whether `lat`/`lon` should be included in the state snapshot we send
|
||||
/// to trusted federation peers (so they can plot us on their Mesh Map).
|
||||
/// Defaults to false — never shared unless explicitly turned on.
|
||||
#[serde(rename = "share-location", default)]
|
||||
pub share_location: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||||
@@ -347,6 +359,9 @@ impl DataModel {
|
||||
wifi_ssids: vec![],
|
||||
zram_enabled: false,
|
||||
seed_backed: false,
|
||||
lat: None,
|
||||
lon: None,
|
||||
share_location: false,
|
||||
},
|
||||
package_data: HashMap::new(),
|
||||
peer_health: HashMap::new(),
|
||||
|
||||
Reference in New Issue
Block a user