This is a test build. Stable stays on beta_65. Flash it from wadamesh.com with the Beta toggle on, or turn on "Get test builds (beta)" on the device.
The crash on the regions screen
Adding or removing known regions and then leaving that screen crashed the device. If you have been stuck in Radio & mesh and had to reset to get out (#314), this was why.
The cause is general rather than anything to do with regions. When LVGL destroys a text field it sends that field one last LV_EVENT_DEFOCUSED, and seven fields in this firmware save their value on losing focus. So a field was reading its own text and writing it back from inside its own destructor, on memory that was already being freed. All seven now ignore a blur that is really a deletion.
Decoded from the core dump attached to #330 against a beta_69 image rebuilt from the tag. Sending that file is what made this findable, so thank you.
Translations: undoing damage we caused
Language file v18 shipped keys that exist nowhere in the firmware. Paste (move)Paste (copy) and Unblock Block are two separate buttons glued together, and one entry was a Dutch phrase that appears only inside a source-code comment.
That was a bug in the tool that decides which text belongs in a language file, which I introduced in the previous release. Fixed on both counts: it no longer joins the two halves of a ternary into one key, and it no longer reads string literals out of comments. 202 invented entries removed from all thirteen files, with nothing that had actually been translated touched.
Also: the curly quotes in the Hungarian map credits rendered as empty boxes, because no bundled font carries U+201E/U+201D. Five more strings are translatable (@pisti87 found them and gave line numbers). Language files are at v19; v18 is withdrawn.
The Store stops offering apps your board cannot run
Wardrive and Nearby need the extended SDK, which the Heltec V4 does not have. The Store offered both anyway, so the most common board in the mesh could download, install and open two apps that then refused to do anything. Apps declare requires in the catalog now, and the Store greys the button and says so on the row.
Community work
@oumike (11 commits this drop):
- WAV and MP3 playback for Lua apps (#316, closes #315), from the SD card or from memory.
- @-mention autocomplete in the device chat and the web interface (#313), suggesting people whose adverts this device actually heard rather than your whole contact list.
- Latching symbol and alt keys (#320): tap once for the next key, twice to lock the layer. No more holding a modifier down.
- A home page from the SD card for the web reader (#317), so a device with no internet still has somewhere to start.
- Wardrive survives emoji in node names (#324, closes #323, reported by @4nuts). Names are cut on character boundaries, and text from an app is validated before it reaches LVGL.
- Screenshots from the Control Center on the ThinkNode M9 and both Pagers, with a 0/3/10 second timer (#328, closes #327).
- M9 Home key works while typing, and Snake starts on the first direction pressed (#326).
- Tapping an already-focused chat composer reopens the keyboard (#325).
@codemonkeybr, a first contribution: "At a glance" (#319). A message arriving while the screen is dimmed shows a short preview without fully waking the device or lighting the keyboard. Optional, and it can be restricted to when the device is unlocked.
Also fixed
Granting an app a permission could silently take a permission away from a different app. The Settings switches packed the app's position and the permission bit into one value with too few bits for the bit, so "Send discovery probes" wrote the record of the app after it in the list, marking an app you had never touched as asked-and-refused. That is why apps reported "permission denied" with every permission granted, which @pisti87 hit twice.
For testers
The regions crash is the one most worth confirming: add and remove a few known regions, leave the screen, check the device stays up. If you translate, your file is clean again but has more untranslated entries than before, because strings that were invisible to the checker are now listed. Console mode is unchanged and still an early preview.