Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
524 commits
Select commit Hold shift + click to select a range
730eb37
feat(ota): implement build number suffix for firmware versioning
agessaman Jun 23, 2026
5acfdd7
fix(ota): enhance manifest fetching logic for OTA updates
agessaman Jun 23, 2026
a685181
fix(ota): improve display of version and hash in OTA status messages
agessaman Jun 23, 2026
125ddac
feat(ota): add partition-table signature handling for OTA updates
agessaman Jun 23, 2026
b5797da
fix(github-actions): exclude .partsig files from release asset uploads
agessaman Jun 23, 2026
7416d63
feat(mqtt): add NTP server configuration and diagnostics commands
agessaman Jun 25, 2026
b458ac4
perf(mqtt): remove dead code and optimize hex conversion
agessaman Jun 25, 2026
c39ab63
feat(mqtt): add ipnt.uk preset to MQTT presets
agessaman Jun 25, 2026
b699bf6
Merge branch 'mqtt-bridge-implementation-flex' into add-rflab-mqtt-pr…
agessaman Jun 25, 2026
5570a51
Merge pull request #15 from Dreikor17/add-rflab-mqtt-preset
agessaman Jun 25, 2026
706d1c7
fix(mqtt): enhance error handling for connection refusals
agessaman Jun 25, 2026
9535f24
refactor(cli): move observer command handling to CommonCLI_Observer.cpp
agessaman Jun 25, 2026
2eb41ba
refactor(mqtt): migrate observer settings to MQTTPrefs structure
agessaman Jun 26, 2026
7e0ffdb
feat(mqtt): clarify custom endpoint requirements in code and document…
agessaman Jul 6, 2026
61955ee
Add MQTT preset for corecomms
EldoonNemar Jul 8, 2026
55110ff
fix(mqtt): migrate observer settings from legacy /com_prefs on upgrade
agessaman Jul 9, 2026
5a1a0cd
Merge branch 'mqtt-bridge-implementation-flex' into feat/clean-up-merge
agessaman Jul 9, 2026
3d80c09
docs(mqtt): split code-internal notes into MQTT_INTERNALS.md
agessaman Jul 9, 2026
58b9cb6
refactor(mqtt): version the /mqtt_prefs file format and drop vestigia…
agessaman Jul 9, 2026
7076ff5
fix(radio): restore upstream token-bucket duty-cycle enforcement
agessaman Jul 9, 2026
df90673
feat(radio): restore CAD support + radio_fem_rxgain persistence (upst…
agessaman Jul 9, 2026
e905451
feat(radio): drive LoRa FEM RX gain from radio_fem_rxgain (heltec_v4)
agessaman Jul 9, 2026
c3b8633
fix(mqtt): hold newer-version /mqtt_prefs across saves + pin frozen l…
agessaman Jul 9, 2026
3e1b863
Merge branch 'feat/clean-up-merge' into restore/upstream-duty-cycle
agessaman Jul 9, 2026
4b7a312
fix(radio): match upstream performChannelScan signature; name /com_pr…
agessaman Jul 9, 2026
ae9c01f
Merge branch 'restore/upstream-duty-cycle' into restore/fem-rxgain
agessaman Jul 9, 2026
b2e79d4
fix(radio): drop companion FEM wiring; wire t096 + tracker_v2 FEM ove…
agessaman Jul 9, 2026
1c9c629
fix(mqtt): shed retransmissions, not capture, when duty cycle starves…
agessaman Jul 10, 2026
1d52161
Merge branch 'restore/upstream-duty-cycle' into restore/fem-rxgain
agessaman Jul 10, 2026
847be34
fix(mqtt): keep throttled nodes administrable — priority-aware shed +…
agessaman Jul 10, 2026
9bbc438
Merge branch 'restore/upstream-duty-cycle' into restore/fem-rxgain
agessaman Jul 10, 2026
258ca46
docs(radio): record on-device validation results for duty-cycle restore
agessaman Jul 10, 2026
0c41f68
Merge branch 'restore/upstream-duty-cycle' into restore/fem-rxgain
agessaman Jul 10, 2026
e8d41a6
Merge PR stack #20-#22: prefs migration, duty cycle + CAD, FEM RX gain
agessaman Jul 10, 2026
4cff796
fix(mqtt): raise QoS1 retransmit timeout to stop duplicate /status st…
agessaman Jul 10, 2026
a9eba67
fix(mqtt): raise QoS1 retransmit timeout to stop duplicate /status st…
agessaman Jul 10, 2026
631a4e5
Increase MQTT preset count from 25 to 26
agessaman Jul 10, 2026
9f996ff
feat(preset): Add Preset for CoreComms (An EastMe.sh initiative)
agessaman Jul 10, 2026
5a3f5a8
Update ColoradoMesh connection string
nwithan8 Jul 10, 2026
cd6ad23
fix(esp32): stop IDF 4.4 ws-transport heap overflow crashing bridge t…
agessaman Jul 11, 2026
c119ad2
fix(mqtt): gate reconnect-backoff reset on 2 min of connection stability
agessaman Jul 11, 2026
eca1f2c
fix(mqtt): scale JWT renewal buffer with token lifetime
agessaman Jul 11, 2026
cdcef6e
feat(mqtt): add dual-stack IPv4/IPv6 support to MQTT bridge
agessaman Jun 22, 2026
ae04539
Merge pull request #25 from agessaman/feat/flex-ipv6
agessaman Jul 11, 2026
6b3c543
Add MQTT neighbors functionality for PSRAM builds
agessaman Jun 7, 2026
ba1dbef
revert(mqtt): remove IPv6 dual-stack support — measured heap exhaustion
agessaman Jul 11, 2026
b7c1459
fix(mqtt): bound esp-mqtt outbox for QoS0 publishes
agessaman Jul 11, 2026
53c39dc
fix(mqtt): publish QoS0 synchronously to bypass ~1 msg/s outbox drain
agessaman Jul 11, 2026
1eaa680
chore(mqtt): silence periodic stats log for production; add get mqtt.…
agessaman Jul 11, 2026
e7a8224
Merge pull request #26 from agessaman/fix/mqtt-outbox-bound
agessaman Jul 11, 2026
1fc6619
chore(preset): update ColoradoMesh preset port to 443
agessaman Jul 11, 2026
d7a7e1b
feat(boards): add Heltec tracker MQTT observer builds
agessaman Jul 12, 2026
dfee21a
feat(webconfig): implement web configuration portal for ESP32
agessaman Jul 17, 2026
1454e4c
fix(mqtt): update neighbors interval range in documentation and code
agessaman Jul 17, 2026
144e8f2
Merge pull request #27 from agessaman/feat/flex-fetch-neighboring-scopes
agessaman Jul 17, 2026
639c07a
feat(webconfig): enhance web configuration with flood and loop settings
agessaman Jul 17, 2026
df13d18
feat(mqtt): enhance periodic neighbors publishing with refresh logic
agessaman Jul 17, 2026
b3bd5ec
feat(mqtt): send all message types to MeshRank and harden neighbors flow
agessaman Jul 17, 2026
028a5dc
fix(mqtt): honor preset retain policy for status publishes
agessaman Jul 17, 2026
a7c1cc6
feat(webconfig): add web configuration portal and MQTT enhancements
agessaman Jul 18, 2026
b779572
feat(webconfig): improve request handling and server teardown logic
agessaman Jul 18, 2026
cbbd01b
feat(docs): add local testing instructions for MQTT functionality
agessaman Jul 18, 2026
dc44311
feat(webconfig): validate request IDs and improve error handling
agessaman Jul 18, 2026
b7b3b4d
feat(mqtt): enhance topic substitution overflow handling
agessaman Jul 18, 2026
26a8a3c
feat(mqtt): refactor message building to use MQTTPayloadBuilder
agessaman Jul 18, 2026
30278ac
docs: add stability and testability handoff
agessaman Jul 18, 2026
7b60ee7
ci: add MQTT firmware guardrails
agessaman Jul 18, 2026
b5deaf9
fix(mqtt): restore PSRAM buffers after restart
agessaman Jul 18, 2026
1be09b9
fix(mqtt): harden /mqtt_prefs migration (atomic durability, tests)
agessaman Jul 19, 2026
90467dd
feat(mqtt): add meshtexas preset for MQTT connections
agessaman Jul 19, 2026
db11144
docs: re-baseline stability handoff and add stop-and-ask discipline
agessaman Jul 19, 2026
1dfd2af
Merge pull request #29 from agessaman/docs/rebaseline-stability-handoff
agessaman Jul 19, 2026
9d5bd6f
feat(mqtt): add Phase 4 lifecycle ownership + teardown test seams
agessaman Jul 19, 2026
2e1a141
feat(mqtt): cooperative MQTT shutdown + OTA teardown barrier (Phase 5)
agessaman Jul 19, 2026
b0cf29f
test(mqtt): extract + test remaining inline MQTT decision points (Pha…
agessaman Jul 19, 2026
3c170eb
test(webconfig): pure WebConfigBatch state-machine spec + host tests …
agessaman Jul 19, 2026
29a7016
docs: record Phase 0/7 hardware characterization results
agessaman Jul 19, 2026
7767760
fix(mqtt): slot-count-aware cooperative-stop timeout
agessaman Jul 19, 2026
686a2f2
docs: note V4/PSRAM verification of slot-scaled stop timeout
agessaman Jul 19, 2026
f68a0fb
feat(ota): broadcast OTA start/fail milestones on the alert channel
agessaman Jul 19, 2026
4a6fe4e
fix(mqtt): use ASCII hyphens in serial log strings
agessaman Jul 19, 2026
0e7a07a
Merge remote-tracking branch 'fork/phase6/webconfig-batch-seam' into …
agessaman Jul 19, 2026
c67d402
chore: gitignore worktree build directories
agessaman Jul 19, 2026
cece565
refactor(webconfig): wire WebConfigBatch spec into WebConfigServer (P…
agessaman Jul 19, 2026
15e3400
merge: upstream/dev into webconfig (v1.16.0 base -> 2026-07-19)
agessaman Jul 19, 2026
38066a5
docs: re-baseline handoff after WebConfigBatch wiring and upstream merge
agessaman Jul 19, 2026
3683127
build: make OTA_MANIFEST_BASE a build.sh-injected release channel
agessaman Jul 19, 2026
5094ece
ci: add beta release channel workflow
agessaman Jul 19, 2026
c51e7ea
ci(beta): tag version as beta-dev and publish config-beta.json
agessaman Jul 19, 2026
5f027f1
docs: rename branch to observer-firmware-dev; document release channels
agessaman Jul 19, 2026
8daa860
ci(beta): trigger on push to observer-firmware-dev
agessaman Jul 19, 2026
f1390af
ci(beta): drop self-referencing env redeclarations
agessaman Jul 19, 2026
4ff118c
fix(prefs): stop spurious VFS error on every prefs save
agessaman Jul 19, 2026
25bfac0
fix: remove duplicate declarations left by the upstream merge
agessaman Jul 19, 2026
17e68ec
Merge branch 'webconfig' into observer-firmware-dev
agessaman Jul 19, 2026
f79d22c
fix: resolve remaining upstream-merge build breaks; park oversize TLora
agessaman Jul 19, 2026
9fc90ee
ci(beta): retry GitHub API calls in the publish step
agessaman Jul 20, 2026
76a3300
fix(repeater): restore node name at top of home screen
agessaman Jul 20, 2026
9276b6a
Merge pull request #34 from agessaman/fix/observer-repeater-node-name
agessaman Jul 20, 2026
e06bd75
ci: source slim manifests from build output; accept observer-firmware…
agessaman Jul 20, 2026
48799d5
ci(beta): source slim manifests from build output
agessaman Jul 20, 2026
80b4e40
ci: drop retired mqtt-bridge-implementation-flex trigger name
agessaman Jul 20, 2026
7161fe9
docs: follow the flex -> observer-firmware branch rename
agessaman Jul 20, 2026
26db31f
ci: stop rewriting flasher config.json; sync release notes to the rel…
agessaman Jul 20, 2026
a2a7cce
ci(beta): stop deriving config-beta.json; sync release notes to the r…
agessaman Jul 20, 2026
f509066
build: add FILENAME_CHANNEL_TAG; dev channel tags asset filenames wit…
agessaman Jul 20, 2026
8d7a47a
feat(mqtt): add neighbors prefs fields (flex-compatible v1 layout)
agessaman Jul 20, 2026
e36aee0
feat(mqtt): add neighbors JSON payload builder (host-tested)
agessaman Jul 20, 2026
de320bc
feat(mqtt): add neighbors publish path to MQTTBridge
agessaman Jul 20, 2026
34a8220
feat(mqtt): add neighbor-scope discovery + periodic publish to MyMesh
agessaman Jul 20, 2026
6911981
feat(mqtt): add mqtt.neighbors CLI get/set (PSRAM-gated)
agessaman Jul 20, 2026
d6f8a87
feat(webconfig): expose mqtt.neighbors controls in the web portal
agessaman Jul 20, 2026
0ae6aa4
docs(mqtt): document the neighbors feature
agessaman Jul 20, 2026
2a88b36
Merge pull request #35 from agessaman/feat/mqtt-neighbors
agessaman Jul 20, 2026
634d98c
feat(mqtt): implement custom JSON document allocator for neighbors
agessaman Jul 20, 2026
329d7f8
Merge pull request #36 from agessaman/webconfig
agessaman Jul 20, 2026
ebca9bd
feat(mqtt): add mesh-chaun14 and wcmesh presets
agessaman Jul 20, 2026
5cb3fc1
feat(mqtt): add mesh-chaun14 and wcmesh presets
agessaman Jul 20, 2026
328ed74
fix(mqtt): handle SPIFFS rename conflict in MQTTPrefsFileStore
agessaman Jul 20, 2026
59ca834
feat(mqtt): implement neighbor discovery and management features
agessaman Jul 20, 2026
85c0e1d
feat(mqtt): implement neighbor discovery and management in MyMesh
agessaman Jul 20, 2026
2019a8c
feat(docs): update CLI commands for OTA firmware update options
agessaman Jul 20, 2026
ed674fd
feat(docs): update CLI commands for OTA firmware update options
agessaman Jul 20, 2026
fed5611
refactor(mqtt): optimize MQTT status and diagnostic reply formatting
agessaman Jul 20, 2026
c2b157d
feat(mqtt): add pending status publish handling for MQTT slots
agessaman Jul 20, 2026
9609ae3
fix(mqtt): ensure valid hex string output in bytesToHex and packetToHex
agessaman Jul 20, 2026
1b84311
fix(mqtt): remove unused time conversion calls in syncTimeWithNTP
agessaman Jul 20, 2026
2d55b95
refactor(mqtt): improve command handling and memory pressure management
agessaman Jul 20, 2026
d722968
refactor(mqtt): reorder timezone command handling for clarity
agessaman Jul 20, 2026
f25492c
feat(mqtt): implement slot activation classification for MQTT connect…
agessaman Jul 20, 2026
20b5b2e
feat(mqtt): add max active slots logic for MQTT connections
agessaman Jul 20, 2026
7b68371
feat(alerts): enhance alert test command response for clarity
agessaman Jul 21, 2026
602077b
feat(mqtt): mask sensitive information in CLI responses
agessaman Jul 21, 2026
7daccd9
feat(mqtt): include outbox drop statistics in MQTT stats reply
agessaman Jul 21, 2026
0c43fd5
feat(mqtt): add new MQTT preset for meshtexas connection
agessaman Jul 21, 2026
8cec341
ci(mqtt): add preset name-parity check across channels
agessaman Jul 21, 2026
333e786
ci(mqtt): add preset name-parity check across channels
agessaman Jul 21, 2026
76f44d7
feat(mqtt): implement deferred OTA update scheduling in MyMesh
agessaman Jul 21, 2026
bd58d8a
feat(mqtt): implement deferred OTA update scheduling in MyMesh
agessaman Jul 21, 2026
fbe608d
feat(mqtt): add SNMP support for radio diagnostics and stats
agessaman Jul 21, 2026
d14ec41
feat(mqtt): add SNMP support for radio diagnostics and stats
agessaman Jul 21, 2026
2a77bec
chore(platformio): exclude MQTT-specific helper files from build
agessaman Jul 21, 2026
5bf6d3a
fix(mqtt): make preference saves power-loss recoverable
agessaman Jul 21, 2026
3627238
fix(ota): require clean MQTT stop before flashing
agessaman Jul 21, 2026
675bc6b
feat(webconfig): manage the admin password from the portal
agessaman Jul 22, 2026
41cc36b
build.sh: put the published build number in observer asset filenames
agessaman Jul 22, 2026
643a1ba
build.sh: put the published build number in observer asset filenames
agessaman Jul 22, 2026
cfff9d5
fix(mqtt): update eastidahomesh broker preset
agessaman Jul 24, 2026
8fc96f6
fix(mqtt): update eastidahomesh broker preset
agessaman Jul 24, 2026
5313aa0
ci: stop the docs sync from cancelling the observer firmware build
agessaman Jul 24, 2026
7ea93a6
ci: rebase with --autostash on the flasher push retry
agessaman Jul 25, 2026
c691864
ci: give the beta channel its own concurrency group
agessaman Jul 25, 2026
df07083
chore: untrack the .build-wt-028a5dca build worktree
agessaman Jul 25, 2026
0c86e0d
chore: ignore throwaway build worktrees
agessaman Jul 25, 2026
aba571e
feat(mqtt): enhance neighbor discovery with request management
agessaman Jul 26, 2026
3c5b25c
feat(mqtt): enhance neighbor discovery JSON handling
agessaman Jul 27, 2026
e00b29b
feat(mqtt): add per-slot packet filters for MQTT slots
agessaman Jul 28, 2026
52bd271
feat(mqtt): enhance packet filter functionality with named types
agessaman Jul 28, 2026
ecbb500
feat(mqtt): implement downgrade contract for MQTT preferences
agessaman Jul 28, 2026
971a3b1
Merge pull request #38 from agessaman/feat/packet-filters
agessaman Jul 28, 2026
8b16af3
feat(mqtt): add default_scope to neighbor discovery JSON handling
agessaman Jul 29, 2026
616fe96
feat(mqtt): publish all message types except raw to MeshRank
agessaman Jul 29, 2026
4beb547
docs: update links and enhance MQTT implementation guide
agessaman Jul 30, 2026
dd7d134
docs: trim MQTT guide redundancy and split out internals
agessaman Jul 30, 2026
36a931f
chore: add scripts/__pycache__ to .gitignore
agessaman Jul 30, 2026
612c521
merge: upstream/dev into observer-firmware-dev (2026-07-30, db232808)
agessaman Jul 30, 2026
69ec286
chore(.gitignore): ignore Python cache files in scripts directory
agessaman Jul 30, 2026
4b390df
merge: pick up .gitignore pycache rule from observer-firmware-dev
agessaman Jul 30, 2026
fe3b5f8
feat(station-g3): add repeater and room server observer variants
agessaman Jul 30, 2026
d502bba
chore(scripts): remove compiled Python cache file for webconfig_mock_…
agessaman Jul 30, 2026
9670035
fix(xiao_s3_wio): restore environment sensor support
agessaman Jul 31, 2026
d8fd3de
fix(xiao_s3_wio): restore environment sensor support
agessaman Jul 31, 2026
5828a3c
fix(mqtt-neighbors): report unusable heard ages as null
agessaman Jul 31, 2026
37444be
feat(thinknode-m7): add repeater and room server observer variants
agessaman Jul 31, 2026
34037f2
fix(mqtt-neighbors): budget the JSON pool separately from the publish…
agessaman Aug 3, 2026
a3a0a94
feat(mqtt-neighbors): support non-PSRAM observer boards
agessaman Aug 3, 2026
46ee60d
docs(handoff): record non-PSRAM neighbors hardware verification
agessaman Aug 3, 2026
28e586f
merge: non-PSRAM neighbors support into observer-firmware-dev
agessaman Aug 3, 2026
716f54d
docs(handoff): scope the neighbors pool bug to the dev channel
agessaman Aug 3, 2026
126a256
Merge remote-tracking branch 'upstream/dev' into observer-firmware-dev
agessaman Aug 3, 2026
45379ad
fix(build): restore nRF52 builds broken by observer-only dependencies
agessaman Aug 3, 2026
0bfc281
docs(handoff): record the 2026-08-03 upstream merge
agessaman Aug 3, 2026
c28548a
perf(mqtt): tranche 1 memory reductions in the bridge
agessaman Aug 4, 2026
c833da1
perf(mqtt): allocate slot clients on demand
agessaman Aug 4, 2026
9141ad8
perf(mqtt): allocate slot JWT token buffers on demand
agessaman Aug 4, 2026
b93b6b1
perf(mqtt): keep slot JWT tokens in PSRAM where available
agessaman Aug 4, 2026
e242cc6
fix(mqtt): address review of the demand-driven slot work
agessaman Aug 4, 2026
6be84eb
fix(mqtt): let a retried setup consume the reconnect allowance
agessaman Aug 4, 2026
53bae56
fix(mqtt): measure the setup-retry interval from the failure
agessaman Aug 4, 2026
dbdf2d7
fix(mqtt): scan every slot for a stale JWT after a clock correction
agessaman Aug 4, 2026
8d1a0eb
fix(mqtt): reject invalid path encodings before serializing
agessaman Aug 4, 2026
c0adb67
Add new MQTT presets for okimesh
clartek Aug 6, 2026
73faa30
feat(mqtt): increase built-in MQTT preset count to 31
agessaman Aug 6, 2026
c4a7601
Merge pull request #39 from clartek/patch-1
agessaman Aug 6, 2026
51267a3
Add new MQTT presets for okimesh
clartek Aug 6, 2026
b8585bd
feat(mqtt): increase built-in MQTT preset count to 31
agessaman Aug 6, 2026
f156c0b
fix(boards): restore Station G2 GPS UART pin mapping
agessaman Aug 6, 2026
bfc43e9
feat(station-g3): add repeater and room server observer variants
agessaman Jul 30, 2026
da7b51f
Add new MQTT preset for atvirastinklas.
MartynasZilinskas Aug 7, 2026
2436229
Update MQTT preset for atvirastinklas to use GTS_ROOT_R4 certificate
MartynasZilinskas Aug 7, 2026
4fab909
feat(variants): add I2C sensor support for Heltec and RAK3112
agessaman Aug 7, 2026
b27b475
feat(variants): add I2C sensor pins to Heltec/RAK3112 observers
agessaman Aug 7, 2026
dbee39b
feat(mqtt): add MQTT preset for atvirastinklas
agessaman Aug 7, 2026
aad3b09
docs(mqtt): add atvirastinklas to broker presets table
agessaman Aug 7, 2026
4e64833
Add new MQTT preset for atvirastinklas.
MartynasZilinskas Aug 7, 2026
20a4dfb
Update MQTT preset for atvirastinklas to use GTS_ROOT_R4 certificate
MartynasZilinskas Aug 7, 2026
e240543
docs(mqtt): add atvirastinklas to broker presets table
agessaman Aug 7, 2026
73507bf
feat(mqtt): add gomesh to broker presets table
agessaman Aug 8, 2026
3b11540
feat(mqtt): add gomesh to broker presets table
agessaman Aug 8, 2026
482d743
docs(mqtt): add okimesh broker presets to the documentation
agessaman Aug 8, 2026
6961492
docs(mqtt): add okimesh to broker presets table
agessaman Aug 8, 2026
d148d0c
feat(webconfig): add a terminal CLI tab to the portal
agessaman Aug 8, 2026
8cbc552
build(webconfig): strip comments before embedding the portal page
agessaman Aug 8, 2026
d90f657
feat(webconfig): offer the console as a way out of guided setup
agessaman Aug 8, 2026
105d714
refactor(webconfig): drop the fake shell prompt from the terminal header
agessaman Aug 8, 2026
b72b02f
fix(webconfig): make the mock answer the whole CLI surface
agessaman Aug 8, 2026
33d8766
fix(webconfig): report a missing endpoint honestly
agessaman Aug 8, 2026
d7109c1
feat(webconfig): implement /api/cli on the device
agessaman Aug 8, 2026
d532e4e
fix(webconfig): correct reply classification and the missing MyMesh c…
agessaman Aug 8, 2026
75d4656
chore(variants): drop the dead MAX_MQTT_BROKERS build flag
agessaman Aug 8, 2026
c831e59
fix(webconfig): tighten CLI failure detection, reboot deferral and re…
agessaman Aug 8, 2026
cac91c9
feat(webconfig): print the full firmware version and name the channel
agessaman Aug 8, 2026
20826dc
feat(webconfig): trim the displayed version to base, build and channel
agessaman Aug 8, 2026
a8ceb6d
add idahomesh broker preset
zebpalmer Aug 8, 2026
8abe26b
fix(webconfig): stop the CLI reading secrets, and enforce the setup p…
agessaman Aug 8, 2026
5000391
fix(station-g3): enable online OTA for observer builds
agessaman Aug 8, 2026
542a091
Merge pull request #42 from agessaman/fix/station-g3-ota-manifest-base
agessaman Aug 8, 2026
40b2112
Merge pull request #41 from zebpalmer/add-idahomesh-preset
agessaman Aug 8, 2026
da37b6e
feat(mqtt): add idahomesh broker preset
agessaman Aug 8, 2026
4bcbcd8
fix(webconfig): pass the build date from the room server too
agessaman Aug 8, 2026
9988cb6
chore: untrack the .wt-station-g3-prod worktree
agessaman Aug 8, 2026
6cfdc61
fix(webconfig): define the in-class constants out of line
agessaman Aug 9, 2026
2125917
Merge pull request #43 from agessaman/feat/webconfig-cli
agessaman Aug 9, 2026
339bffa
ci: sync the portal page to the flasher site for /webconfig
agessaman Aug 9, 2026
f9968ac
merge: upstream/dev into observer-firmware-dev (v1.17.0)
agessaman Aug 9, 2026
8f12b89
ci: bump observer channel base version to v1.17.0
agessaman Aug 9, 2026
b744b42
merge: observer-firmware-dev into observer-firmware at v1.17.0
agessaman Aug 9, 2026
95f3269
merge: perf/memory-savings into observer-firmware-dev
agessaman Aug 9, 2026
8204004
fix(observer): leave AGC reset user-configurable
agessaman Aug 10, 2026
1f79e91
fix(observer): recover T-Beam Supreme display startup
agessaman Aug 10, 2026
bb06687
Merge pull request #44 from agessaman/fix/tbeam-supreme-display-117
agessaman Aug 10, 2026
28dd599
fix(observer): recover T-Beam Supreme display startup
agessaman Aug 10, 2026
c5bf3e9
docs(mqtt): record the non-PSRAM TLS footprint investigation
agessaman Aug 6, 2026
ced0eb3
merge: upstream/dev into observer-firmware-dev
agessaman Aug 12, 2026
6c0ae4d
merge: upstream/dev into observer-firmware-dev (v1.17.1)
agessaman Aug 14, 2026
47c80fe
ci: bump observer channel base version to v1.17.1
agessaman Aug 14, 2026
6ff4920
merge: observer-firmware-dev into observer-firmware at v1.17.1
agessaman Aug 14, 2026
f110a0b
docs: refresh firmware-notes.html for v1.17.1
agessaman Aug 14, 2026
8998409
feat(mqtt): add ntxmesh broker preset
agessaman Aug 18, 2026
379380c
feat(mqtt): add Heltec wireless stick v2 repeater configuration with …
benocd Sep 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .cursor/debug-previous.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99968,"max_alloc":81908,"internal_free":99968,"spiram_free":2079119},"timestamp":60038}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":186636,"max_alloc":81908,"internal_free":186636,"spiram_free":2079887},"timestamp":120040}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":94328,"max_alloc":81908,"internal_free":94328,"spiram_free":2079119},"timestamp":180078}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99564,"max_alloc":81908,"internal_free":99564,"spiram_free":2079119},"timestamp":240093}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99564,"max_alloc":81908,"internal_free":99564,"spiram_free":2079119},"timestamp":300130}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203620,"max_alloc":81908,"internal_free":203620,"spiram_free":2079927},"timestamp":360131}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203620,"max_alloc":81908,"internal_free":203620,"spiram_free":2079927},"timestamp":420131}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99732,"max_alloc":81908,"internal_free":99732,"spiram_free":2079119},"timestamp":480150}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":164132,"max_alloc":69620,"internal_free":164132,"spiram_free":2079119},"timestamp":540153}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":90808,"max_alloc":79860,"internal_free":90808,"spiram_free":2079119},"timestamp":600166}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99676,"max_alloc":81908,"internal_free":99676,"spiram_free":2079119},"timestamp":660181}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99708,"max_alloc":81908,"internal_free":99708,"spiram_free":2079119},"timestamp":720195}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99720,"max_alloc":81908,"internal_free":99720,"spiram_free":2079119},"timestamp":780217}
40 changes: 40 additions & 0 deletions .cursor/debug.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{"sessionId":"debug-session","location":"MQTTBridge.cpp:2142","message":"after_new_analyzer_us_client","hypothesisId":"H4","data":{"free":219116,"max_alloc":208884,"internal_free":219116,"spiram_free":2080343},"timestamp":4420}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:2182","message":"after_new_analyzer_eu_client","hypothesisId":"H4","data":{"free":218704,"max_alloc":208884,"internal_free":218704,"spiram_free":2080343},"timestamp":4422}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":96768,"max_alloc":81908,"internal_free":96768,"spiram_free":2079119},"timestamp":60033}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163244,"max_alloc":71668,"internal_free":163244,"spiram_free":2079119},"timestamp":120034}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":166716,"max_alloc":71668,"internal_free":166716,"spiram_free":2079119},"timestamp":180036}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163240,"max_alloc":71668,"internal_free":163240,"spiram_free":2079119},"timestamp":240035}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163372,"max_alloc":71668,"internal_free":163372,"spiram_free":2079119},"timestamp":300035}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163728,"max_alloc":71668,"internal_free":163728,"spiram_free":2079119},"timestamp":360037}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":420038}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":480040}MQTT: Stored raw radio data: 74 bytes, SNR=11.2, RSSI=-59.0
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163500,"max_alloc":71668,"internal_free":163500,"spiram_free":2079119},"timestamp":540040}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163320,"max_alloc":71668,"internal_free":163320,"spiram_free":2079119},"timestamp":600041}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163352,"max_alloc":71668,"internal_free":163352,"spiram_free":2079119},"timestamp":660043}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163340,"max_alloc":71668,"internal_free":163340,"spiram_free":2079119},"timestamp":720044}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163912,"max_alloc":71668,"internal_free":163912,"spiram_free":2079119},"timestamp":780045}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":840044}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:716","message":"critical_memory_check","hypothesisId":"H1_H4","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":900003}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":900045}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":169512,"max_alloc":71668,"internal_free":169512,"spiram_free":2079119},"timestamp":960046}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":166480,"max_alloc":71668,"internal_free":166480,"spiram_free":2079119},"timestamp":1020050}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":163324,"max_alloc":71668,"internal_free":163324,"spiram_free":2079119},"timestamp":1080052}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203612,"max_alloc":83956,"internal_free":203612,"spiram_free":2079927},"timestamp":1140052}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203612,"max_alloc":83956,"internal_free":203612,"spiram_free":2079927},"timestamp":1200056}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1260059}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1320062}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1380064}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1440067}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1500069}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203700,"max_alloc":83956,"internal_free":203700,"spiram_free":2079927},"timestamp":1560072}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203652,"max_alloc":83956,"internal_free":203652,"spiram_free":2079927},"timestamp":1620076}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203748,"max_alloc":83956,"internal_free":203748,"spiram_free":2079887},"timestamp":1680080}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1740082}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:716","message":"critical_memory_check","hypothesisId":"H1_H4","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1800004}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1800086}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1860087}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1920090}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203648,"max_alloc":83956,"internal_free":203648,"spiram_free":2079927},"timestamp":1980092}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":203700,"max_alloc":83956,"internal_free":203700,"spiram_free":2079927},"timestamp":2040094}
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":92832,"max_alloc":83956,"internal_free":92612,"spiram_free":2074463},"timestamp":2100108}02:24:28 - 5/2/2026 U RAW: 09054F86AB7EE0223B896D851B3704309F
{"sessionId":"debug-session","location":"MQTTBridge.cpp:505","message":"mqtt_loop_60s","hypothesisId":"H5","data":{"free":99732,"max_alloc":81908,"internal_free":99732,"spiram_free":2079119},"timestamp":2160133}
11 changes: 5 additions & 6 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,14 @@
"runArgs": [
"--privileged",
"--network=host",
"--device=/dev/bus/usb",
// arch linux tty* is owned by uucp (986)
"--group-add=986",
"--volume=/dev/bus/usb:/dev/bus/usb:ro",
// arch tty* is owned by uucp (986)
// debian tty* is owned by dialout (20)
"--group-add=20"
"--group-add=20",
"--group-add=986"
],
"postCreateCommand": {
"platformio": "pipx install platformio",
"opencode": "curl -fsSL https://opencode.ai/install | bash"
"platformio": "pipx install platformio"
},
"customizations": {
"vscode": {
Expand Down
Loading