beta-0.1.41
Pre-release
Pre-release
SigurdOS T-Deck Firmware — beta-0.1.41
Flash with esptool
# Full flash (first install):
esptool.py --chip esp32s3 --port /dev/ttyACM0 write_flash 0x0 firmware-merged.bin
# App update (keep settings):
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
write_flash 0x10000 firmware.binWeb Flasher
Use the manifest at webflasher/manifest.json with esptool.js.
| File | Use |
|---|---|
firmware.bin |
App only (flash at 0x10000) |
firmware-merged.bin |
Full flash (flash at 0x0) |
SigurdOS-tdeck-launcher.bin |
For bmorcelli/Launcher install (same bytes as merged) |
What's Changed
- Fix fresh-install GPS defaults in prefs load by @n30nex in #517
- refactor: split 1707-line sigurd_mesh_v2.h into declaration header + .cpp implementation (#521) by @hermes-gadget in #532
- fix: replace delay(0) with delay(1) in tile scan loops to feed TWDT (#518) by @hermes-gadget in #525
- fix: apply consistent NVS getString return-value guards to all string fields (#523) by @hermes-gadget in #529
- fix: stop onAnonDataRecv from mutating packet buffer in-place; increase anon name entropy (#522, #524) by @hermes-gadget in #527
- maintainability: replace unsafe strcpy with strncpy; replace hardcoded buffer sizes with sizeof (#520) by @hermes-gadget in #528
- feat: multibyte path hash support (1/2/3-byte adverts & messages) by @hermes-gadget in #533
- fix: correct test module table syntax in README.md by @hermes-gadget in #534
- docs: update README screenshots by @hermes-gadget in #535
- feat: duration-limited auto-advert (24h/72h/168h) by @hermes-gadget in #537
- fix: auto-advert sends one advert per interval (24h/72h/168h), not every 30min by @hermes-gadget in #538
- fix: forward channel messages to logged-in room servers by @hermes-gadget in #539
- fix: correct guest permission display and hide admin-only controls by @hermes-gadget in #540
- fix: use INPUT_PULLUP for trackball center click GPIO 0 (#549) by @hermes-gadget in #554
- fix: zero-initialize NVS string buffer in repeater password functions (#548) by @hermes-gadget in #555
- fix: increase SignalSample key from 2 to 4 bytes to prevent RSSI/SNR aliasing (#544) by @hermes-gadget in #556
- fix: stack buffer overflow in DM name formatting (#543) by @hermes-gadget in #553
- fix: add nvs_flash_erase() to factory reset for complete NVS wipe (#551) by @hermes-gadget in #557
- fix: block trackball events during PIN entry to prevent back-swipe bypass (#541) by @hermes-gadget in #558
- fix: stop I2C clock tug-of-war between touch (GT911) and keyboard (#547) by @hermes-gadget in #559
- docs: add OUT OF DATE warning to TELEMETRY_ARCHITECTURE.md (#550) by @hermes-gadget in #560
- fix: clamp append_channel_message capacity to actual buffer size to prevent OOB write (#542) by @hermes-gadget in #561
- chore: document crash handler backtrace limitation (#552) by @hermes-gadget in #562
- fix: replace analogRead with analogReadMilliVolts for calibrated battery ADC (#545) by @hermes-gadget in #563
- fix: consolidate SPI2_HOST bus into shared singleton to prevent reinitialisation (#546) by @hermes-gadget in #564
- fix: add PSRAM fallback to LVGL memory pool (#565) by @hermes-gadget in #566
- docs: add Launcher compatibility roadmap by @hermes-gadget in #568
- docs: harden codebase improvement roadmap by @hermes-gadget in #572
- docs: remove stale files and update Launcher status by @hermes-gadget in #574
- Launcher compatibility: Phase 1 (artifact audit) + Phase 4 (code/CI/docs) by @hermes-gadget in #573
- docs: update Launcher compatibility status and known issues by @hermes-gadget in #577
- fix: remove screen-load animation to prevent LVGL corruption on re-entry by @hermes-gadget in #576
- fix: add I2C retry loop for keyboard warm-handoff under Launcher by @hermes-gadget in #575
- fix: non-blocking Serial.printf guard in flush callback prevents TX-buffer deadlock by @hermes-gadget in #578
- ci: compile firmware on every PR (T20) by @hermes-gadget in #579
- refactor: extract screens_common from screens.cpp (T14) by @hermes-gadget in #580
- refactor: extract Advertise screen into src/ui/screens/ (T15) by @hermes-gadget in #585
- refactor: extract Packets screen into src/ui/screens/ (T16) by @hermes-gadget in #586
- refactor: extract Signal screen into src/ui/screens/ (T17) by @hermes-gadget in #587
- refactor: split remaining screens out of screens.cpp (T18) by @hermes-gadget in #588
- T1: Pin exact library dependency versions by @hermes-gadget in #589
- T3: Deprecate the blocking wifi_sta::connect() by @hermes-gadget in #590
- T4: Source hygiene — duplicate include + boot-step renumbering by @hermes-gadget in #591
- T5: Refresh drifted non-protected docs + owner action list by @hermes-gadget in #592
- T2: Add a .clang-format config (no reformat) by @hermes-gadget in #593
- T21: Align the two workflows (Python version + cache) by @hermes-gadget in #596
- T22: Release checksums + version-consistency check by @hermes-gadget in #601
- T24: Nightly env smoke matrix workflow by @hermes-gadget in #605
- T23: Static analysis + logging-policy grep in PR CI (advisory) by @hermes-gadget in #606
- T27: Post-roadmap regression pass + roadmap status sweep by @hermes-gadget in #608
- T8a: Extract contact persistence into a testable module (no format change) by @hermes-gadget in #598
- T8b: Version the contacts file format (magic header + bounds check) by @hermes-gadget in #603
- T9: Logging macros — header + pilot migration by @hermes-gadget in #600
- T11: Interval-gate the per-loop WiFi status update by @hermes-gadget in #594
- T7: Display-init failure — restart instead of hanging forever by @hermes-gadget in #602
- T12: Non-blocking buzzer pattern playback by @hermes-gadget in #604
- launcher: audit firmware size by @hermes-gadget in #613
- launcher: document roadmap status by @hermes-gadget in #611
- launcher: confirm runtime detection with otadata by @hermes-gadget in #609
- docs: refresh drifted docs and retire completed telemetry plans by @hermes-gadget in #618
- fix: remove leftover unconditional boot banner from setup() by @hermes-gadget in #621
- fix: settle flash writes before ESP.restart() in onboarding and radio setup by @hermes-gadget in #622
- fix: show boot splash before startup work by @hermes-gadget in #625
- fix: zero-initialize PendingAck table members (audit Finding 1) by @hermes-gadget in #629
- fix: move per-page ContactInfo buffer off the stack (audit Finding 2) by @hermes-gadget in #630
Full Changelog: beta-0.1.40...beta-0.1.41