Release Highlights - 1. Apps that use NodeJS and 'Node Native' apps (also the DroidScript IDE itself) are now more battery friendly as they consume far less cpu time than before. 2. You should no longer get the 'Unsafe cipher mode' warnings from Google Play when publishing your apps. Here is the full list of changes since the last official release - DS 2.75b2 - Prevented high CPU/power usage of NodeJS apps. - Fixed DoEvents to prevent lockups in Node based apps. - Added 'doevents' option to app.CopyFolder (keeps UI alive when copying large folders). - Fixed 'Simple' Node Native template. DS 2.75b1 - Fixed crash when calling !buildapk option from Wifi-IDE. - Added extra 'password' param to !buildapk (user.keystore musts exist). - Added new '!buildaab' command to Wifi-IDE. - Added 'noHeadless' option to config.json (block TV/Headless mode). - Fixed app.SetOnError method for Node based apps (trap errors to prevent app exit). - Crypto now uses "AES/GCM/NoPadding" (pass "AES/ECB/PKCS5Padding" to app.CreateCrypt for old method) - Removed old samples tab from Wifi-IDE. - Removed scanning for 'HeartRate' keyword (related to restricted body sensor permission). - Fixed missing docs + 90% installation lockup for TV devices. DS 2.74 - Removed body sensor permission (due to new Google Play restriction) DS 2.73b1 - Updated Microcontroller extension to support unix style commands: ls,cd,pwd,cat,cp,rm,mkdir,rmdir. - Added Servo-2040, Motor-2040, Tiny-FX samples to Microcontroller extension. - Added support for micro_main.py file in normal apps (runs it on microcontroller if connected) - Changed WebView.SetRedirect() method 'from' param to use regex match instead of includes match. - Fixed crash when hiding keyboard in remote terminal. - Fixed unreliability of Notification listener on some devices. - Fixed app.SetDebug/app.SetDebugEnabled for Node services/apps. - Enabled word-wrap on samples list/extension. DS 2.72b1 - Fixed issue with chopped off samples. - Moved TV mode to X version (due to GooglePlay AAB only restriction) DS 2.71b1 - Added new Samples extension (with extra python samps). - Added new microcontroller extension. - Fixed app.SetOptions('UseBrowser') for HTML apps. - Enabled AndroidTV support. - Added !settings remote command to show settings dialog on TVs. - Enabled cam.SetDuplicateImage to be used with single image (allows flipping of preview). - Added __dirname and __filename support for DS extension server scripts. - Fixed Python/Hybrid template 'datetimepicker' error popup. - Fixed FileManager extension tilde filename issue + text searching. - Remove TV manifest entries unless cfg.TV is enabled. - Removed language selector (we don't have enough human resources to support it) - Removed deep links and unused services from APK/AAB manifests. - Fixed issue with with backspace hiding keyboard on blank lines when editing on device. - Fixed security exception when loading .jar based plugins on Android 14+. - Added internal retry mechanism for PlayStore component + new SetOnReady method. DS 2.70b1 - Fixed app.SetOrientation in Python apps. - Fixed bug in app.CheckPermission for top level folders. - Added new "Media" permission for Android 13+. - Added missing "Query Images" to on-device samples list. - No longer need to disable password for local file browser to work. - Removed tab chars from Python 'Simple' template (4 spaces instead). DS 2.69b2p4 - User no longer needs to remove extra .zip extension from downloaded ppk/spk files. - Set wifi ide editorToolbar width to 99%. DS 2.69b2p3 - Added speech.SetLanguage() method. eg. speech.SetLanguage("Fr"). - Modified wifi server to work on Samsung devices. - Fix for hybrid app template with latest UI libs. - Removed wifi ide editorToolbar width (to prevent scrollbars). DS 2.69b2p2 - Fixed APK install 'NOT VALID' failure caused by min api v23 change. - Fixed cfg.NodeESM crash out error caused by chdir on .mjs file. - Fixed crash/lockup when opening of .ppk files. DS 2.69b2p1 - Fixed ide.AddModule() crash out. - Updated UI components to v28. - Fixed double slash problem with ext.ReadFile in extensions. - Added PhoneState.GetNumber() method + required permission. - Fixed SAF bug where folders with same root name assumed permissions were ok. DS 2.69b2 - Added web.SetOnBlob() method to handle objectUrls/blobs. - Enabled wifi button to work when hotspot running. - Added app.HideDialogs() method. - Wifi connect IP/Info dialog now hidden automatically on remote connect. - Upgraded Wifi IDE to use CodeMirror editor instead of Ace. - Added local File Browser extension. - Enabled cfg.ESM in Hybrid apps (Main class must be exported). - Fix Web App template. DS 2.69b1 - Moved up to minSdkVersion 23 (Android 6). - Added 'BypassDnd' option to CreateNotification() method. - Added app.Print() method (prints contents of the app screen). - Added app.HasExternalStorage() to check for read/write external sdcard/partition. - Fixed parent.SendMessage() in nodejs apps. - Added node.Func() and parent.Func() method to node apps. - Fixed docs plugin not extracting after update or .edit folder deletion. - Added Premium+ subscription option (Cloud Services). - Improved error handling for ds:/* includes. - Added cfg.ESM to enable ES module imports (Note: OnStart func must be exported). - Added app.Import() and app.Include() methods (app.Include now preferred over app.Script). Here is an example of using our Premium+ cloud database in a native app - app.Import( "PocketBase", "https://cdn.jsdelivr.net/gh/pocketbase/js-sdk/dist/pocketbase.es.js" ) async function OnStart() { try { var pb = new PocketBase('https://${username}-db.droidscript.cloud') const records = await pb.collection('people').getFullList({ sort: '-created', }) alert( JSON.stringify(records) ) } catch( e ) { console.error( e ) } } Note: If you want to use Premium+, then you will need to cancel your current Premium subscription and then signup for Premium+, then send an email to support@droidscript.org asking for your personal cloud key.