Release Highlights - 1. A new Samples Tab with advanced filtering and more Python samples (special thanks go to Cemal/CandleLight for this) 2. A new Microcontroller Tab allows programming and communicating with Microcontrollers running MicroPython or CircuitPython. You can plug a USB-C or OTG cable into your phone and send code and commands to boards such as the RaspberryPi Pico and many of the project boards found here - https://shop.pimoroni.com/search?q=rp2040 http://androidscript.org/beta/DroidScript_271b1/ Here is the full list of changes since the last official release - 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.