MUI: Portduino curl maps - #11214
Conversation
⚡ Try this PR in the Web FlasherWarning This is an automated, unreviewed CI test build. Back up your device configuration Supported boards built by this PR (31)
Build artifacts expire on 2026-08-27. Updated for |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpdates the archived device UI dependency, native Portduino build flags, and Linux, Windows, Debian, and Alpine build/runtime dependencies to support curl-enabled native builds. ChangesNative build configuration
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The rak_wismesh_tap_v2-tft link failed on CI with "sh: Argument list too long": the device-ui bump in #11214 grew the MUI object list enough that the linker command line crossed the kernel exec arg limit (this env's long name lengthens every object path, so it tipped first). extra_scripts/ld_response_file.py already solves this for esp32p4; promote it to esp32_common so every ESP32 target links through a response file, and drop the now-inherited entry from esp32p4.ini. Verified by building rak_wismesh_tap_v2-tft at the failing commit plus this fix: links clean (macOS's exec arg limit is smaller than the Linux one that tripped CI, so an unwrapped link could not have passed).
The DEF CON 34 boot logo stopped rendering on T-Deck MUI: the boot screen falls back to the built-in Meshtastic logo with no error on screen. The branding pipeline is fine - the littlefs images published for 2.8.0.b00d76f (working) and 2.8.0.8adc7c3 (broken) differ by 28 bytes of littlefs metadata, and branding/logo_320x240.png is byte-identical in both. The regression is firmware side. 5f51bb1 (MUI: Portduino curl maps, #11214) bumped device-ui ef573c3 -> 2f5a7dd9. That range contains device-ui a5db5ec ("replace LodePNG/STB decoder by PNGdec"), which sets LV_USE_LODEPNG=0 and never registers the PNGdec replacement as an lv_image_decoder_t - it is only called explicitly by the four map-tile services on PNG bytes already in RAM. LVGL is left with TJPGD and bin_decoder, so it has no decoder for a PNG *file* source. The boot logo is loaded exactly that way, via FileLoader::loadBootImage() -> lv_image_set_src(obj, "L:/boot/logo.png"). In LVGL 9.3.0 lv_image_set_src calls lv_image_decoder_get_info() first and returns early on failure, before storing the new src, so the object keeps the built-in logo it was initialised with in screens.c. The guard in TFTView_320x240::init() cannot catch it either: loadBootImage returns lv_image_get_src() != nullptr, which is true whether or not the decode succeeded. Stock builds ship no data/boot/logo.png, so the same path has always fallen through to the built-in logo - which is why only event/whitelabel MUI builds regress and nightly testing did not catch it. Holding the pin here restores the lodepng file decoder. Nothing ESP32 side is lost: the old pin still carries the lodepng tile path (ConvertPNG.c), so maps behave as in the b00d76f build. Only portduino/native curl map downloads are given up, and event branches do not build meshtasticd (dafa583). Revisit once device-ui registers a PNG file decoder upstream.
…c#11303) Followup to meshtastic#11214 Adds libcurl as a dependency in Debian and Fedora packages.
requires meshtastic/device-ui#353
Note: if you want to persist the downloaded map tiles
You can also use any other .url template file in any other map style directory for downloading/saving the other map style
🤝 Attestations
Summary by CodeRabbit
Summary
Bug Fixes
Chores