github ALLFATHER-BV/wadamesh beta_68
wadamesh beta_68

latest releases: beta_90, beta_89, beta_88...
pre-releaseone month ago

Test build. Stable stays beta_65. Flash it from the web flasher at wadamesh.com with the Beta toggle on, or from the device under Settings > Updates with "Get test builds (beta)" enabled.

This drop is almost entirely new Lua SDK surface. If you write apps, this is the one to try. If you do not, the user-facing changes are a handful of fixes and two new Store apps.

Apps can now do the things the firmware does

The SDK gained the four capabilities that were keeping third-party apps a sketch of a built-in one.

wada.map puts the real map on an app's page. Not a drawing of a map: the same OpenStreetMap tiles, the same Web Mercator projection and the same on-disk cache the Map tab uses. Markers and lines are placed by latitude and longitude, taps convert back to coordinates, and map:tiles() reports how many tiles were actually placed so an app can say "nothing cached here" rather than showing an empty rectangle that looks like open water. It owns a small pool of its own rather than borrowing the Map tab's, so the two cannot evict each other's tiles.

wada.ui.list is the "pick one of N" widget that did not exist. Every app needing one drew rows by hand and tracked scrolling itself, which is most of why app screens looked worse than the firmware's own. Rows are real buttons, so keyboard and trackball navigation walks them on boards with no touchscreen.

app.on_packet delivers each received frame once, in arrival order. Polling rx_log() sampled a 16-deep ring on a timer, so in real traffic an app saw a subset and could not count anything.

wada.mesh.discover fires the active zero-hop discovery probe. A reply proves the link works from where you are standing, which listening can never establish, and each reply carries both directions: how well you heard them and how well they heard you. Those are rarely equal, and "I can hear the repeater but it cannot hear me" is a different fact from "no coverage". It sits behind its own permission, separate from sending messages, because a probe spends airtime on every neighbour's radio and not only yours.

Everything those need to be useful came with them:

  • Packets report who sent them, only where the frame honestly says so. An advert carries a real public key and is reported as one; addressed frames carry one-byte hashes and are reported as those; anything else stays anonymous. Nothing is inferred.
  • wada.ui.input for a line of text, using the firmware's own dialog and keyboard, so it behaves the same on touch, on a physical keyboard and on a trackball.
  • wada.geo for distance, bearing and compass point, in C. A dozen trigonometry calls per contact per tick was a real slice of an app's instruction budget. (It is not a compass: no board here has a magnetometer, so this is the direction to steer, not the direction you are facing.)
  • wada.sys.env for temperature, humidity and pressure, gated on whether the board has the sensors rather than on the memory limit that gates the rest of the extended SDK. Those are different questions.
  • Named and one-shot timers. An app had one clock; anything with a second cadence had to be a counter inside it.
  • wada.net.http_post, so a survey log or a sensor series can leave the device.
  • Exact coordinates. Lua is built with 32-bit floats, so anything logging a track was quietly losing about a metre. lat_e6/lon_e6 are the same reading as exact integers, alongside GPS altitude and satellite time.

Two new Store apps demonstrate the lot. Wardrive is a coverage survey: it probes on a cadence, discards samples taken without a GPS fix rather than logging them at 0,0, and writes a CSV with both link directions per node. Nearby puts your contacts on a real map sorted by distance, with bearing, and counts frames live.

Full reference, including the instruction budget and what it costs: wadamesh.com/sdk.html.

Fixes

  • The map zoom level was invisible if you used the +/- buttons instead of the slider. The number only ever lived above the slider and was hidden along with it, so buttons mode had no zoom indicator at all. Tapping + or - now shows the level briefly beside the buttons. Reported by pisti87.
  • Hungarian and Dutch had each other's translation of "No SD card": Hungarian users saw Dutch, Dutch users saw Hungarian. Both are back where they belong, and all thirteen languages were checked for the same fault.
  • The app and language Store is published by a script for the first time. It had no deploy path, so translations and newly published apps sat in the project instead of reaching devices. This is what made language downloads fail (#274).
  • The Tanmatsu could not be built at all. A variable added during the M9/V4-R8 audit work went into src/main.cpp, which the ESP32-P4 builds never compile, so every S3 board stayed green while the Tanmatsu failed to link.

For testers

Please exercise the new SDK calls and report anything that misbehaves. This is the largest SDK change so far and it has had less time on real hardware than usual.

A map view holds up to half a megabyte of tiles while it is open, so it is limited to boards with the memory for it and to one view per app. If anything looks like memory pressure, say so.

Community

Thanks to @pisti87 for the Hungarian translation work covering the strings added over the last few releases, and for the report that found the missing zoom indicator. Thanks to @cvhviz for the ThinkNode M9 and Heltec V4-R8 audit passes that landed in beta_67.

Don't miss a new wadamesh release

NewReleases is sending notifications on new releases.