SigurdOS T-Deck · Releases
from GitHub · updated 2026-07-1820 releases
v0.1.45-RC7 # Pre-release 3 days ago · 2026-07-18 09:27 UTC
SigurdOS T-Deck Firmware — beta-0.1.45-RC7
Release candidate 7 for the beta-0.1.45 cycle. 181 commits since beta-0.1.44-RC6.
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
manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install manifest.jsonWeb flasher manifest sigurdos-tdeck-bootloader.binBootloader (web flasher) sigurdos-tdeck-partitions.binPartitions (web flasher) sigurdos-tdeck-boot_app0.binBoot app0 (web flasher) Features
- Companion protocol: binary peer requests (CMD_SEND_BINARY_REQ), anonymous requests (CMD_SEND_ANON_REQ), zero-hop control data (CMD_SEND_CONTROL_DATA), direct raw data (CMD_SEND_RAW_DATA)
- UI: message detail sheet, contact list power tools, bounded field notifications, timestamped repeater CLI transcripts
- GPS: demand-driven polling with time sync
- Mesh: surface repeater session failures
- CI: dependency scanning, CodeQL analysis gates, release evidence enforcement
- Performance: virtualized message/packet lists, bounded sparse tile loading
- Storage: unified message history store
Fixes
- Companion/BLE: install private flood-scope keys, synchronize BLE callback/app state, BLE RX queue backpressure, time out unauthenticated connections, defer BLE init until enabled, migrate stale prefs, update pairing PIN, preserve CLI data semantics, accept time unconditionally, enable BLE by default, page full companion backlog, gate repeat by radio profile, align async push IDs
- Mesh: clear login sessions on identity import, ACK drop counter, require durable mesh mutation commits, scoped flood interop proof, update MeshCore for race-free ISR, reject oversized hashtag names, preserve UTF-8 message boundaries
- UI: restore textarea date/time inputs, accumulate home grid offsets, bound textarea inputs, route nested screens through nav history, free QR canvas on screen delete, always show repeater login status
- System: clamp snprintf buffer (CodeQL), make deep sleep persistence-safe, OTA boot-health rollback, fail closed for GitHub OTA channels, support unknown-size multipart OTA, preflight/bound PNG tile decoding, handle HAL allocation failures
- Build/CI: add -Wall -Wextra, expand sanitizer suite, compile every firmware env, reject stale warning budgets, pin transitive deps, consolidate PlatformIO cache, regenerate dep lock file
- GPS: route RTC sync through tracked clock sources, preserve mesh clock handoff
- SD: de-assert non-SD CS pins before mount
- Various: encode advert path responses safely, validate NMEA semantics, complete message store recovery, expire pending binary requests, update companion delivery state, reject oversized companion pushes, wrap map tiles at antimeridian, propagate NVS write failures, decode trace SNR correctly, validate encoded path lengths
Documentation
- Reconcile companion support and missing-features status with pinned MeshCore
- Refresh README, screen guides, ROADMAP, FEATURES_OVERVIEW, Launcher docs
- Add Noto Emoji license notice
- Document companion message visibility limitation
Hardware Tested (beta-0.1.45-RC7)
- Native tests: 1219/1220 passed
- Production build: RAM 39.3%, Flash 40.0%
- T-Deck boot verified: radio 869.525 MHz, noise floor -94 dBm
- All 12 screens navigate without crashes
- Soak: 420 seconds idle, zero crashes, heap stable at 146,808
- RF transmission confirmed on #testingslopos
- CI pre-existing: dep hash + golden frame pin fixed; remaining 2 test infra issues pre-date this release
Evidence
Release evidence:
release-evidence/beta-0.1.45-RC7.jsonv0.1.44-RC6 # Pre-release 8 days ago · 2026-07-12 12:37 UTC
SigurdOS T-Deck Firmware — beta-0.1.44-RC6
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
manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install firmware-debug.binDebug build with verbose logging manifest.jsonWeb flasher manifest sigurdos-tdeck-bootloader.binBootloader (web flasher) sigurdos-tdeck-partitions.binPartition table (web flasher) sigurdos-tdeck-boot_app0.binBoot app0 (web flasher) sigurdos-tdeck-firmware.binApp firmware (web flasher) sigurdos-tdeck-full.binFull image (web flasher) What's Changed
- fix: safe SPIFFS init with erased-partition auto-format (closes #750) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/751
- Phase 1: Switch keyboard to key mode for multi-model T-Deck compatibility (#752) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/753
- Phase 2: Multi-language keyboard layout system (12 layouts) — #752 by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/754
- Phase 3: I2C robustness improvements — #752 by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/755
- fix: keyboard doesn't work — I2C timeout kills cold boot (#752) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/756
- [codex] use C3 key mode for multi-model keyboards by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/757
- [codex] Add persisted international keyboard layouts by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/758
- [codex] Harden shared I2C initialization and recovery by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/759
- Fork Merge: Radio profiles, diagnostics, RX-only mode, CI fixes by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/760
- fix: battery -% on menu nav, cursor visibility, RSSI chart labels by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/766
- fix(ci): exclude LauncherCompatibility.md from doc reference check by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/767
- docs: comprehensive repository-wide audit (audit.md) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/770
- fix(gps): correct GPS-to-Unix-epoch conversion (BUG-001) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/771
- fix(ui): prevent dangling g_wifi_icon use-after-free (BUG-002) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/772
- fix(hw): guard deep-sleep RTC-GPIO calls on non-RTC DIO1 pin (HW-001) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/773
- fix(mesh): hoist sender_buf out of if-block to prevent use-after-scope (BUG-003) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/774
- fix(mesh): return correct contact in processAck instead of contact[0] (BUG-004) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/775
- fix: batch of low-severity fixes (HW-002, DEAD-002..004, DOC-001, BUILD-001) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/776
- fix(security): add OTA PIN brute-force rate limiting (SEC-001) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/777
- docs: add remediation status to audit.md (7 PRs submitted) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/778
- perf(display): lazy-allocate emergency buffer, reclaim 12.8KB DRAM (PERF- …
v0.1.43-RC5 # Pre-release 22 days ago · 2026-06-28 13:56 UTC
SigurdOS T-Deck Firmware — beta-0.1.43-RC5
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
manifest.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install firmware-debug.binDebug build with verbose logging manifest.jsonWeb flasher manifest sigurdos-tdeck-bootloader.binBootloader (web flasher) sigurdos-tdeck-partitions.binPartition table (web flasher) sigurdos-tdeck-boot_app0.binBoot app0 (web flasher) sigurdos-tdeck-firmware.binApp firmware (web flasher) sigurdos-tdeck-full.binFull image (web flasher) What's Changed
- fix: add click button deadtime enforcement by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/696
- fix: prevent trace timer UAF on rapid contact taps by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/697
- fix: use sender timestamp for incoming messages by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/698
- fix: add div-by-zero guard to battery percentage lookup by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/699
- docs: remove stale binary and add audit documentation by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/700
- fix: move I2C clock to shared init at 400 kHz by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/705
- fix: use 4-byte blob key prefix to prevent hash collisions (Closes #706) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/716
- fix: clear companion bridge signing state on BLE disconnect (Closes #712) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/720
- fix: use atomic rename for message store updates to prevent data loss on power failure (Closes #713) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/721
- fix: use modulo arithmetic for save_counter to prevent 22-day persistence gap (Closes #707) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/717
- fix: strip orphaned UTF-8 multi-byte start byte after truncation (Closes #708) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/718
- fix: use lv_obj_del_async() and add lv_obj_is_valid() guard in chat screen (Closes #711, Closes #714) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/719
- [codex] Add companion compatibility audit by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/723
- Fix reproducible WebServer security patches in CI by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/725
- fix: use millis() for PIN grace timing instead of mesh epoch (Closes #740) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/741
- fix: generate random per-device BLE PIN instead of hardcoded 123456 (Closes #742) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/743
- fix: use SPIFFS.begin(false) and remove nvs_flash_erase from factory reset (Closes #744) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/745
- fix: input and small-screen reliability improvements (Closes #746) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/747
- fix: per-message companion delivery tracking and metadata preservation (Closes #726) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/727
- fix: reload contact crypto state after companion private-key import (Closes #728) by @hermes-gadget in https://github.com/hermes-gadget/S …
v0.1.42-RC4 # Pre-release 1 month ago · 2026-06-20 21:09 UTC
SigurdOS T-Deck Firmware — beta-0.1.42-RC4
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) What's Changed
- fix: scope radio param force-override to dedicated debug flag by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/626
- [codex] docs: remove completed roadmap items by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/638
- fix: bug sweep — display init, GPS baud timeout, DM name buffer, channel routing, save counter overflow by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/641
- [codex] ci: serialize release asset uploads by @gadgethd in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/640
- T13: SD lazy retry — single attempt at boot, retry on demand by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/642
- fix: QIO→DIO flash mode for PSRAM compatibility + CI smoke matrix expansion by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/662
- fix: HAL — battery Li-ion lookup, trackball LEFT deadtime, BLE state ordering by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/664
- fix: mesh — static sender buffer race + path discovery race by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/665
- fix: UI — chart data, nav stack, trace timer, brightness, search state by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/666
- fix: reset cache_clock on map reinit (#661) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/667
- fix: SPIFFS flush before device reset + NVS write dedup in radio setup by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/663
- fix: roomserver double-send + UTF-8 emoji truncation by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/668
- fix: free outgoing screen on navigation to stop LVGL pool leak / freeze (#670) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/671
- fix: theme change refreshes current screen immediately (#654) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/669
- fix: null guard getRTCClock() in updateSignalSample (fixes #675) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/676
- docs: correct HARDWARE.md inaccuracies and fix touch comment (fixes #679) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/680
- fix: add missing P_LORA_* build flags for MeshCore visibility (fixes #677) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/681
- chore: update MeshCore submodule to latest dev (fixes #678) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/682
- ci: add debug and remote_test_radio builds to PR matrix by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/684
- fix: restore Settings back navigation by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/674
- fix: resolve Launcher warm-handoff freeze + settings crash by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/685
- fix: chat channel-state corruption + harden WiFi OTA auth by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/689
- fix: SPIFFS warning spam (#683) + navigation hang (#672) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/690
Full Changelog: https://github.com/ …
v0.1.41.1 # Pre-release 1 month ago · 2026-06-14 22:52 UTC
SigurdOS T-Deck Firmware — beta-0.1.41.1
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) Full Changelog: https://github.com/hermes-gadget/SigurdOS-tdeck/compare/beta-0.1.41...beta-0.1.41.1
v0.1.41 # Pre-release 1 month ago · 2026-06-13 13:03 UTC
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) SigurdOS-tdeck-launcher.binFor bmorcelli/Launcher install (same bytes as merged) What's Changed
- Fix fresh-install GPS defaults in prefs load by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/517
- refactor: split 1707-line sigurd_mesh_v2.h into declaration header + .cpp implementation (#521) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/532
- fix: replace delay(0) with delay(1) in tile scan loops to feed TWDT (#518) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/525
- fix: apply consistent NVS getString return-value guards to all string fields (#523) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/529
- fix: stop onAnonDataRecv from mutating packet buffer in-place; increase anon name entropy (#522, #524) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/527
- maintainability: replace unsafe strcpy with strncpy; replace hardcoded buffer sizes with sizeof (#520) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/528
- feat: multibyte path hash support (1/2/3-byte adverts & messages) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/533
- fix: correct test module table syntax in README.md by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/534
- docs: update README screenshots by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/535
- feat: duration-limited auto-advert (24h/72h/168h) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/537
- fix: auto-advert sends one advert per interval (24h/72h/168h), not every 30min by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/538
- fix: forward channel messages to logged-in room servers by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/539
- fix: correct guest permission display and hide admin-only controls by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/540
- fix: use INPUT_PULLUP for trackball center click GPIO 0 (#549) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/554
- fix: zero-initialize NVS string buffer in repeater password functions (#548) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/555
- fix: increase SignalSample key from 2 to 4 bytes to prevent RSSI/SNR aliasing (#544) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/556
- fix: stack buffer overflow in DM name formatting (#543) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/553
- fix: add nvs_flash_erase() to factory reset for complete NVS wipe (#551) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/557
- fix: block trackball events during PIN entry to prevent back-swipe bypass (#541) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/558
- fix: stop I2C clock tug-of-war between touch (GT911) and keyboard (#547) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/559
- docs: add OUT OF DATE warning to TELEMETRY_ARCHITECTURE.md (#550) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/560
- fix: clamp append_channel_message capacity to actual buffer size to prevent OOB write (#542) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/561
…
v0.1.40 # Pre-release 1 month ago · 2026-06-07 14:38 UTC
SigurdOS T-Deck Firmware — beta-0.1.40
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) What's Changed
- fix: remove double-queue of received mesh messages by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/336
- fix: PIN screen crash on unlock — three bugs by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/337
- fix: persist custom RF settings to NVS on apply by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/338
- fix: DM navigation crash when opening from Heard/Contacts by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/339
- feat: structured telemetry for AI agent monitoring by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/340
- fix: RC1 feedback — UI stability, validation, crash fixes by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/335
- docs: companion-only Regions (flood-scope) implementation plan by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/342
- feat: Regions — companion flood scope (transport-code scoped flooding) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/343
- fix: regions UX — auto-prefix bare names + Alt+R shortcut by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/346
- docs: Companion BLE — connect to the official MeshCore phone app (plan) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/345
- [codex] harden channel name boundaries by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/362
- [codex] filter invalid keyboard injection bytes by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/366
- [codex] reject invalid injected trackball events by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/368
- [codex] harden emoji search output bounds by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/370
- [codex] harden UTF-8 truncation byte limits by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/372
- [codex] fix telemetry heartbeat ring wrap indexing by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/374
- [codex] reject invalid telemetry trackball directions by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/376
- [codex] bound telemetry crash backtrace counts by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/378
- [codex] guard telemetry task watermark output by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/380
- [codex] guard telemetry packet log fields by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/382
- [codex] expose battery conversion helpers by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/384
- [codex] harden SD-card path validation by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/386
- [codex] expose GT911 touch point parser by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/388
- [codex] expose buzzer pattern helpers by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/390
- [codex] guard QR canvas layout bounds by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/394
- [codex] expose map renderer math helpers by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/396
- [codex] expose T-Deck battery threshold helper by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/398
- [codex] harden WiFi scan result ordering by @n30nex …
v0.1.39 # Pre-release 2 months ago · 2026-06-03 00:52 UTC
SigurdOS T-Deck Firmware — beta-0.1.39
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/sigurdos-tdeck-firmware.binApp update webflasher/sigurdos-tdeck-full.binFull flash webflasher/sigurdos-tdeck-bootloader.binBootloader webflasher/sigurdos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- feat: Factory reset from Settings System screen (#274) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/275
- feat: Node stats diagnostics panel (#276) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/277
- docs: audit ROADMAP against MeshCore companion firmware v1.15.0 by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/279
- docs: reconcile MISSING_FEATURES.md with companion firmware v1.15.0 (protected file) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/281
- docs: code-audit findings for KNOWN_ISSUES.md (protected file) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/283
- fix: defer factory-reset Cancel dialog deletion (use-after-free) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/285
- fix: add confirmation dialog before channel deletion (Closes #287) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/289
- fix: remove dead V1 mesh class sigurd_mesh.h (Closes #286) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/290
- fix: add byte counter to chat input, block at 149 bytes (Closes #288) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/291
- docs: sync MISSING_FEATURES.md with current firmware, decouple from roadmap by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/293
- feat: add Multi-ACK reliability toggle to Radio Setup by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/296
- feat: add Node type selector to Settings > Radio/Mesh by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/298
- feat: add buzzer notification on message arrival by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/300
- feat: add Reboot button to Settings > System (Closes #313) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/314
- feat: add storage usage display to Node Stats panel (Closes #309) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/315
- feat: show hop count in contact detail path display (Closes #308) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/316
- feat: add message signing via Terminal sign command (Closes #307) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/317
- feat: telemetry answer in SigurdMeshV2::onContactRequest (#301) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/318
- feat: implement client-repeat mode (#306) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/319
- feat: add identity backup via Terminal exportkey/importkey (Closes #303) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/320
- feat: render contact locations as markers on Map screen (Closes #302) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/321
- feat: add meshcore:// URI import via Terminal command by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/322
…
v0.1.38 # Pre-release 2 months ago · 2026-06-01 21:42 UTC
SigurdOS T-Deck Firmware — beta-0.1.38
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/sigurdos-tdeck-firmware.binApp update webflasher/sigurdos-tdeck-full.binFull flash webflasher/sigurdos-tdeck-bootloader.binBootloader webflasher/sigurdos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- feat: generic binary-request framework with tagged response dispatch (Phase 4.1) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/252
- feat: status request — REQ_TYPE_GET_STATUS with UI (Phase 4.2) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/254
- Phase 4.3: Telemetry request with CayenneLPP parsing + TelemetryScreen by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/256
- Phase 4.4: Path discovery request via flood-force routing by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/257
- feat: repeater/room login with admin commands (Phase 4.5) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/259
- feat: anonymous message send/receive (Phase 4.7) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/260
- feat: room server message fetch (Phase 4.6) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/263
- feat: group data datagrams (Phase 4.8) by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/265
- chore: enable mesh debug logging in remote_test_radio build by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/271
- feat: home screen DMs/ROOMS icons with chat/contacts filtering by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/269
- fix: address Claude Code review findings by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/273
- Update README.md by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/261
- test: cover RX boost preference behavior by @n30nex in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/267
- feat: repeater login UI with password persistence, compact layout, and recent-first sort by @hermes-gadget in https://github.com/hermes-gadget/SigurdOS-tdeck/pull/266
Full Changelog: https://github.com/hermes-gadget/SigurdOS-tdeck/compare/beta-0.1.37...beta-0.1.38
v0.1.37 # Pre-release 2 months ago · 2026-05-30 17:05 UTC
SlopOS T-Deck Firmware — beta-0.1.37
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- feat: Phase 0 — SlopMeshV2 (BaseChatMesh migration infrastructure) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/223
- feat: Phase 0 cutover — SlopMeshV2 is now the default by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/224
- fix: UI cleanup — remove #channels top bar, eye icon, scrollbars by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/225
- docs: mark Phase 0 and Phase 1 completed in ROADMAP.md by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/226
- feat: GPS enable/read-interval controls (Phase 2.5) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/227
- feat: auto-add contact type config (Phase 2.3) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/228
- feat: custom variables key-value store (Phase 2.6) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/229
- docs: mark Phase 2 completed in roadmap by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/230
- feat: message delivery status (ACK ticks) in chat bubbles by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/232
- feat: message search in chat by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/234
- feat: per-contact RSSI/SNR history with sparkline chart by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/236
- fix: ACK checkmark not visible on DM messages by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/238
- feat: persist contacts list across reboots and flashes by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/240
- Fix: hide delete button on synthetic DM channel entries by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/242
- feat: runtime theme system with NVS persistence by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/244
- feat: organize settings into category submenus by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/246
- fix: meaningful home screen icons for ADVERTISE, TRACE, SETUP by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/248
- Fix: PendingAck in_use init and persist 4 unpersisted NodePrefs fields by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/250
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.36...beta-0.1.37
v0.1.36 # Pre-release 2 months ago · 2026-05-29 16:56 UTC
SlopOS T-Deck Firmware — beta-0.1.36
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: mesh and UI layer bug fixes (10 issues) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/192
- fix: HAL driver layer bug fixes (7 issues) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/193
- fix: map tile discovery truncation and update KNOWN_ISSUES.md by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/194
- feat: add SlopOS_TDeck_remote_test_radio — hybrid build with radio + test controller by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/195
- docs: audit MISSING_FEATURES.md + add ROADMAP.md by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/197
- feat: Channel removal from UI (#198) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/199
- fix: chat channel list layout — scrollbars, overlap, preview truncation by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/206
- feat: Contact removal from UI (#200) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/201
- feat: Reset path to a contact (#202) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/203
- fix: guard display serial reader behind !SLOPOS_REMOTE_TEST by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/208
- feat: auto-scroll chat to new messages only when at bottom by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/209
- fix: strdup contact name for Reset Path button to prevent use-after-free (#210) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/216
- fix: restore DM conversation history on reboot by creating pseudo-channels on load (#211) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/217
- fix: sendTrace() passes encoded path_len to sendDirect(), matching sendTextTo() (#212) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/218
- fix: use temp buffer for NVS node_name load to preserve default (#213) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/219
- perf: allocate fallback display buffer dynamically instead of static (#214) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/220
- fix: add LORA_TX_PWR build flag to actually control TX power (#215) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/221
- chore: code cleanup batch from audit info items by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/222
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.35...beta-0.1.36
v0.1.35 # Pre-release 2 months ago · 2026-05-28 18:42 UTC
SlopOS T-Deck Firmware — beta-0.1.35
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: LVGL focus indicators — blue ACCENT on textareas (trackball/keyboard) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/172
- fix: radio stays powered on when not configured by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/173
- fix: show radio setup warning in home top bar, remove channel hashtags by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/175
- fix: cache scan_y_range results to halve map tile discovery SD ops during boot by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/178
- feat: contact details screen (Phase 1) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/180
- feat: two-column layout for Signal screen by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/183
- fix: clamp chat scroll at first/last message boundaries by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/185
- feat: replace signal bars with iOS-style signal dots by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/187
- feat: add setrf, reboot, and advert serial test commands by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/189
- docs: cleanup KNOWN_ISSUES.md, update README test counts and module list by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/191
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.34...beta-0.1.35
v0.1.34 # Pre-release 2 months ago · 2026-05-27 21:42 UTC
SlopOS T-Deck Firmware — beta-0.1.34
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: debug/test build improvements — #ifndef guards, mesh::loop in remote_test, SEND command, sendchannel, auto-reply by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/144
- feat: graceful power-off from Settings screen (#145) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/146
- feat: unread message badges on home screen (#149) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/150
- feat: display brightness control in Settings (#151) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/152
- feat: auto-backlight timeout control in Settings (#153) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/154
- feat: flood max hops setting (#157) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/158
- feat: GPS location sharing policy toggle in Settings (#155) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/156
- feat: contact SNR display in Contacts and Repeaters screens by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/159
- feat: TX/RX delay tuning in Settings by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/161
- feat: TX/RX airtime display on Signal screen by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/163
- feat: packet statistics display on Signal screen by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/165
- feat: GPS clock sync on first valid fix by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/167
- feat: PSK channel import via Add Channel dialog (Closes #168) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/169
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.33...beta-0.1.34
v0.1.33 # Pre-release 2 months ago · 2026-05-27 08:01 UTC
SlopOS T-Deck Firmware — beta-0.1.33
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: batch resolve 8 potential bugs from code audit by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/51
- fix: properly truncate channel preview text to avoid timestamp/badge overlap by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/55
- feat: add term-submit and term-log for remote test controller by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/57
- feat: add help command with detail lookup to terminal screen by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/58
- Signal bars: per-node RSSI pixel-art indicator by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/60
- Debug: log RSSI/SNR on received packets by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/62
- feat: add debug level system and display-always-on for debug builds by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/53
- fix: UTF-8 safe truncation for emoji multi-byte codepoints in send path by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/68
- docs: audit KNOWN_ISSUES.md — remove fixed entries, add 5 new bugs by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/70
- fix: address 5 bugs from KNOWN_ISSUES audit by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/72
- fix: add stub implementations for term_* functions (fixes remote_test build) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/74
- Add pull request CI for firmware build and native tests by @n30nex in https://github.com/hermes-gadget/SlopOS-tdeck/pull/52
- docs: remove fixed/stale entries from KNOWN_ISSUES.md by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/76
- Universal trackball back-swipe (two-swipe commit) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/78
- Fix: dangling s_back_btn pointer causes crash on screen navigation by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/80
- feat: per-feature debug flags with independent compile-time and runtime control by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/82
- fix: call mesh::init() in remote_test to prime shared SPI bus for SD card by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/87
- docs: add MISSING_FEATURES.md — MeshCore capability gap reference by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/85
- docs: add MISSING_FEATURES.md references to agent onboarding and contributing guide by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/88
- reorg: move reference docs into docs/ folder by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/89
- fix: ensure correct I2C clock speed per device (touch 400kHz, keyboard 100kHz) by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/91
- fix: add rate limiting to sendAdvert() at API layer by @hermes-gadget in https://github.com/hermes-gadget/SlopOS-tdeck/pull/93
- fix: compare full 32-byte channel hash instead of first byte only by @hermes-gadge …
v0.1.32 # Pre-release 2 months ago · 2026-05-24 21:56 UTC
SlopOS T-Deck Firmware — beta-0.1.32
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: reduce trackball sensitivity and improve left direction reliability by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/20
- feat: make chat screen navigable via trackball with selection highlights by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/21
- fix: preserve DIO bootloader mode for web flasher compatibility by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/22
- feat: onboarding wizard with 3-step setup (name, time, frequency) by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/23
- feat: turn off keyboard backlight when display auto-offs by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/24
- feat: add emoji support with LVGL font fallback and emoji picker by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/25
- feat: persist channels and messages across reboots and power loss by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/26
- fix: delay USB CDC init to avoid power cycle needed after web flash by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/27
- Harden channel string formatting and add advertise status cooldown by @n30nex in https://github.com/hermes-gadget/SlopOS-tdeck/pull/29
- fix: screen tearing and chat input/scroll limits by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/30
- fix: theme contrast for Contacts/Trace screens, tap contact opens DM by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/32
- feat: replace Heard screen with raw packet log (Packets screen) by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/34
- feat: standardize map tile path to /tiles/ matching Ripple convention by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/36
- fix: enforce MeshCore character limits in UI inputs by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/38
- feat(ui): add configurable chat message history cap by @n30nex in https://github.com/hermes-gadget/SlopOS-tdeck/pull/40
- feat: custom RF parameters dialog with +/- dial controls by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/41
- fix: render offline map tiles from SD by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/42
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.31...beta-0.1.32
v0.1.31 # Pre-release 2 months ago · 2026-05-24 13:38 UTC
SlopOS T-Deck Firmware — beta-0.1.31
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: reduce trackball sensitivity and improve left direction reliability by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/20
- feat: make chat screen navigable via trackball with selection highlights by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/21
- fix: preserve DIO bootloader mode for web flasher compatibility by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/22
- feat: onboarding wizard with 3-step setup (name, time, frequency) by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/23
- feat: turn off keyboard backlight when display auto-offs by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/24
- feat: add emoji support with LVGL font fallback and emoji picker by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/25
- feat: persist channels and messages across reboots and power loss by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/26
- fix: delay USB CDC init to avoid power cycle needed after web flash by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/27
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.30...beta-0.1.31
v0.1.30 # Pre-release 2 months ago · 2026-05-24 01:25 UTC
SlopOS T-Deck Firmware — beta-0.1.30
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest What's Changed
- fix: GT911 touch orientation — SWAP_XY, sensor bounds, remove calibration by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/1
- ui: remove icon tile borders, smaller font on home grid by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/2
- ui: full-screen grid layout, centered content, smaller fonts by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/3
- fix: restore display state after wake by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/4
- Fix chat rendering and MeshCore text payload follow-ups by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/12
- Add themed back buttons to secondary screens by @gadgethd in https://github.com/hermes-gadget/SlopOS-tdeck/pull/13
New Contributors
- @gadgethd made their first contribution in https://github.com/hermes-gadget/SlopOS-tdeck/pull/1
Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.29...beta-0.1.30
v0.1.29 # Pre-release 2 months ago · 2026-05-23 16:17 UTC
SlopOS T-Deck Firmware — beta-0.1.29
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.28...beta-0.1.29
v0.1.28 # Pre-release 2 months ago · 2026-05-23 15:57 UTC
SlopOS T-Deck Firmware — beta-0.1.28
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.jsonwith esptool.js.File Use firmware.binApp only (flash at 0x10000) firmware-merged.binFull flash (flash at 0x0) webflasher/slopos-tdeck-firmware.binApp update webflasher/slopos-tdeck-full.binFull flash webflasher/slopos-tdeck-bootloader.binBootloader webflasher/slopos-tdeck-partitions.binPartition table webflasher/manifest.jsonWeb flasher manifest Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.27...beta-0.1.28
v0.1.27 # Pre-release 2 months ago · 2026-05-19 19:54 UTC
SlopOS T-Deck Firmware — beta-0.1.27
File Use firmware.binOTA update (app only, flash at 0x10000) firmware-merged.binFull flash (bootloader + partitions + app, flash at 0x0) Full Changelog: https://github.com/hermes-gadget/SlopOS-tdeck/compare/beta-0.1.26...beta-0.1.27