You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
task: DESIGN -- decide the preset source of truth, and the firmware/client split (owner decision) #650
A fork phoning home to upstream's server. It also serves onboarding text and repeater guest-login policy, not just presets -- consuming it means accepting all of that or filtering. 26 of its 27 entries are below the FCC floor.
Publish our own registry
yes
yes
New hosting + a maintenance commitment. Could seed from upstream plus our 26 Russia entries and Off-Grid set, which upstream lacks.
Curated static list (status quo, extended)
no
yes
Zero new infrastructure. Every preset change needs an app release.
Hybrid: static fallback + optional remote refresh
yes
yes
More moving parts; degrades gracefully offline, which matters for an off-grid client.
Question 2 -- firmware, client, or both?
Owner is leaning client -- presets are a user-facing selection surface. But firmware has to be aware and coordinate: it holds the compile-time defaults, it validates and clamps what it is handed, and it drives the radio. A client-only answer firmware does not cooperate with produces a node whose displayed configuration and on-air behavior disagree.
Sub-questions the decision needs to settle:
Does firmware keep its own notion of a named preset, or only ever receive raw parameter values?
Who owns validation -- does the client refuse an out-of-range combination, or does firmware clamp it, or both?
What happens on mismatch between what the client believes is set and what the radio reports?
Does a preset apply atomically? Frequency, bandwidth, SF, CR and path hash currently go through separate paths; a partial apply is a node that talks to nobody.
Constraint that binds every option
A US-compliant entry is added; nothing else is removed or changed. The 500 kHz value derives from 47 CFR, which is US law only. Europe, EU 433, Australia, New Zealand, Vietnam and the rest keep their current values. See the scope clarification on #647.
Acceptance
The owner has recorded a decision on both questions, with enough rationale that implementation issues can be filed against it. Nothing is built under this issue.
Agent: WhiteFalcon (session cb12cdd2) -- cross-filed from firmware, not claiming.
Owner direction, 2026-09-23 (in chat to MagentaHawk), recorded verbatim in substance so it survives context resets.
What the owner wants:
A radio-preset config file, modeled on what was done for Observer config, holding values for the different meshes. It covers the historical regional defaults (Europe, USA, Australia, ...) and regional variances (Arizona, California, OKI-Mesh, Philly Mesh, MESH 500 variants, etc.).
Inherit from Liam's work. Liam has built, or is building, this same functionality. The aim is to let him do the heavy lifting and inherit from him.
Our own local config layered on top, to add or override entries whenever Liam lags, when we find something sooner, or at the owner's discretion.
User story: from the preset list, apply a preset to Companion, Observer, Repeater, Room Server and Sensor.
Hard constraint: keep backwards compatibility with stock and older firmware. No dependency on Offband-specific control codes. Apply only through stock paths.
This answers Q1 (source: inherited upstream plus a local overlay, i.e. the hybrid option) and bounds Q2 (the client owns presets; the apply path uses stock commands only). Still open for design: the exact upstream source ("Liam's" registry, to be confirmed), the file format and where it ships, and the per-node-type stock apply paths.
The #661 static entry is held uncommitted pending the owner's call on whether it ships as a stopgap for the OKI test.
Owner decisions, 2026-09-23 (in chat to MagentaHawk):
Hosting: a config JSON in our config repo, not an API on offband-prod.
Liam's registry (api.meshcore.nz/api/v1/config, suggested_radio_settings) is mirrored into the config repo by a scheduled job that commits directly (no PR review of each upstream change). The app never calls Liam's API itself.
Credit Liam / upstream for the data we use from them.
Still open: overall plan approval; whether the #661 hardcoded OKI entry ships as a stopgap for the OKI test (starts 2026-09-23); the exact file location in the config repo.
Owner decision, 2026-09-29 (in chat to MagentaHawk):
No permission request to Liam is needed. The owner's position: Liam offers api.meshcore.nz/api/v1/config as a public resource for MeshCore apps. Supporting facts [verified 2026-09-23..29]: CORS Access-Control-Allow-Origin: *; the official meshcore-dev map and config tools consume it; the MeshCore FAQ routes preset updates to Liam; many third-party apps consume it, and several bundle copies (openhop, MCLite, kNoAPP/MeshCore-Desktop). Mirroring and bundling a snapshot with credit proceeds on that basis.
Model confirmed: Liam's list is the base. A small Offband overlay adds what his list lacks (OKI 500 kHz test, Philly, the Russia city presets, Arizona, Off-Grid). The app bundles a snapshot of both for offline use; the network only refreshes. The CI mirror commits directly (decided 2026-09-23). Offering overlay entries upstream to Liam is optional courtesy, not a gate.
Still open: overall plan approval (Epic + Tasks), the #661 stopgap, and the overlay file location (assumed OffbandMesh/config-profiles).
Closing: the owner has decided both questions (decisions recorded in the comments above, 2026-09-23 to 2026-09-29).
Q1, source: Liam's public list is the base, mirrored into config-profiles by CI (direct commit). An Offband overlay adds and wins on conflict. The app bundles both for offline use; the network only refreshes. Upstream is credited.
Q2, firmware/client split: the client owns presets. It applies them through stock firmware commands only; no Offband-specific codes.
Implementation is filed under Feature #647 as Epics #721 (A, sources), #726 (B, app catalog + Companion/Observer), #733 (C, remote nodes) and #737 (D, integration testing).
Activity
diffwireauto commentedon Sep 23, 2026
Owner direction, 2026-09-23 (in chat to MagentaHawk), recorded verbatim in substance so it survives context resets.
What the owner wants:
This answers Q1 (source: inherited upstream plus a local overlay, i.e. the hybrid option) and bounds Q2 (the client owns presets; the apply path uses stock commands only). Still open for design: the exact upstream source ("Liam's" registry, to be confirmed), the file format and where it ships, and the per-node-type stock apply paths.
The #661 static entry is held uncommitted pending the owner's call on whether it ships as a stopgap for the OKI test.
Agent: MagentaHawk (session 5a8922d6)
diffwireauto commentedon Sep 23, 2026
Owner decisions, 2026-09-23 (in chat to MagentaHawk):
api.meshcore.nz/api/v1/config,suggested_radio_settings) is mirrored into the config repo by a scheduled job that commits directly (no PR review of each upstream change). The app never calls Liam's API itself.Still open: overall plan approval; whether the #661 hardcoded OKI entry ships as a stopgap for the OKI test (starts 2026-09-23); the exact file location in the config repo.
Agent: MagentaHawk (session 5a8922d6)
diffwireauto commentedon Sep 29, 2026
Owner decision, 2026-09-29 (in chat to MagentaHawk):
api.meshcore.nz/api/v1/configas a public resource for MeshCore apps. Supporting facts[verified 2026-09-23..29]: CORSAccess-Control-Allow-Origin: *; the officialmeshcore-devmap and config tools consume it; the MeshCore FAQ routes preset updates to Liam; many third-party apps consume it, and several bundle copies (openhop, MCLite, kNoAPP/MeshCore-Desktop). Mirroring and bundling a snapshot with credit proceeds on that basis.Still open: overall plan approval (Epic + Tasks), the #661 stopgap, and the overlay file location (assumed
OffbandMesh/config-profiles).Agent: MagentaHawk (session 5a8922d6)
diffwireauto commentedon Oct 1, 2026
Closing: the owner has decided both questions (decisions recorded in the comments above, 2026-09-23 to 2026-09-29).
Implementation is filed under Feature #647 as Epics #721 (A, sources), #726 (B, app catalog + Companion/Observer), #733 (C, remote nodes) and #737 (D, integration testing).
Agent: MagentaHawk (session 5a8922d6)