Highlights: - Added USB Drive SAF support + Updated 'Storage Access' sample. - Support for APKs/AABs running on Android 13. - Better support for non-latin app titles. - Default targeting of Android API 33. - Added ScratchPad extension to device ide. - Support for Python in 'experiments' mode. - Support for full-screen mode in the WebView, for example Youtube expand button will now work. - You can now bypass CORS and i-frame restrictions when showing remote websites using the 'NoCors' option. - Wifi IDE extensions can now have server side nodejs scripts associated with them. Here is the full list of changes since the last official release: DS 2.64b2 - Fixed missing callback on app.LoadScript() when using cfg.Node. - Added USB Drive SAF support + Updated 'Storage Access' sample. - Enabled editing of Python apps in Wifi IDE (but not creating). - Disabled AndroidTV mode in IDE (was not working properly). - *.Batch calls can now have the optional params left out. - app.Tween() is now available to cfg.Node apps. - Fixed 'IgnoreErrors' in WebViews for cfg.Node. - Added support for new notification permissions in Android 13. - Added new 'Notify' permission keyword. - Fixed shortcuts to Python apps. DS 2.64b1 - Added usb.GetDTR(), usb.GetRTS(), usb.GetCD() methods. - Changed to usb.IsConnected() method to actively check for device presence. - Fixed AAB builds ignoring build.json on scoped storage. - Added webview 'Persist' option, keeps file cache, history and form data between re-loads/startups. - Added webview 'ClearCookies' option, clears cookies at startup. - Added webview.ClearCookies() method. - Added webview.SetInject( file ) injects a script immediately after page load. - Added warning about non-latin chars on package name. - Fixed AAB building with non-latin chars in app title. - Fixed Saving/Loading of SPKs with non-latin names. - Added 'spk' option to app.ZipFolder() method, creates an SPK from a DS project folder. - Added support for showing Img/app-icon.png in device IDE apps list. - Removed image file case sensitivity check in APKs (for speed). - Added warning about non-latin file names during apk/aab builds. - Fixed issue with "No Permissions" on Android 13 APK installs. DS 2.63b1 - Default AAB/APK target API is now 33. - Upgraded app.CreatePlayStore() to use Android Billing library 6.0.1 - Added 'version' field to getinfo end-point response (for wifi ide). - Added 'ScratchPad' extension to device IDE. - Updated UI libs/Layout editor to v0.26 (for experiments mode) - Added 'local' option to webview, loads urls starting with / from /Storage/[AppName]/ instead. - Added READ_SMS permission to X version of DS. - Added Python support under 'experiments' mode. DS 2.62b3 - Added app.IsDebugVisible() method. - Added 'dialog' and 'clear' options to app.ShowDebug() method. - Added ext.Post( extName, msg ) method for posting between IDE extensions. - Added 'add' option to web/app.SetUserAgent() appends to default user agent. - Added support for Img/app-icon.png as alternative source of app icon. - Small bugfix in XMLHttpRequest polyfill for V8/cgf.Fast mode. - Added new cfg.Serv option, serves html/hybrid apps from a built-in http server. - Prevented _Init function being called from app.js when not in DS webview. - Fixed docs/samps animation flicker after disconnecting wifi editor. - Stopped the 'Blocked a frame' error on Hybrid i-frames with CORS. - Changed app.Alert to use standard alert() function if no title specified. - Prevented screen lock while app is running inside IDE. - Debug overlay now shown before OnStart() is called. - Added new ext.isConnected() method + ext_OnConnect/ext_OnDisconnect callbacks for extensions. - Added new ext_OnProject callback, called when new project is loaded by IDE. - Fixed CodeEdit control calling OnChange when the SetText method is called. - Fixed app.CreateNode() missing error logging issue. - Added new cfg.Console option, shows console instead of GUI (drawers still work). - Added new app.GetDebug() method to return the current debug switches. - Added web.LoadFailed() method to detect WebView page load errors. - Added web.GetHomeUrl() to get starting url. - Updated DroidStore to use Justin's latest minimal dark version. DS 2.62b2 - Added 'NoCors' option to app.SetOptions() for Hybrid apps. - Enabled 'NoCors' option by default for Hybrid apps. - Update UI components to version 0.24. - Fixed DS 'Light' Theme not working when phone in dark-mode. - Allowed users to build APK even if builder is out of date. - Fixed Job scheduler not working in APKs. - Updated the extension.js to support ext_OnOpen. - Added 'NoAccel' option to WebView (allow use on OrangePi 3). DS 2.62b1 - Added support for full screen mode in WebView. - Added 'NoScrollbar' option to ScrollView. - Added webView.SetContextMenus( "Copy URL,Open URL", "Download Image" ) - Added webView.SetOnContextMenu callback (=> item, url, img, type ) - Removed 'annoying' dot from debug output of NodeJs. - Added optional 'newPaths' parameter to node.Run method (sets new module search folders). - Changed Node component not to use named pipes for messaging (use 'legacy' option to revert). - Enabled DS extensions to run server side node scripts (/Extensions/Test/Server/node_Test.js) - Added 'DS_DIR' environment variable for DS extensions to get full path to DS folder. - Added 'NoCors' option to webview (attempts to disable CORS and i-frame restrictions) - Fixed issue with css and json files with the same name as app being renamed to _main_*. - Added 'ShowWhenLocked', 'TurnScreenOn' and 'KeepScreenOn' options to app.CreateOverlay method. DS 2.61 - Updated UI plugin to v0.22 DS 2.60b1_p4 - FileManager extension now supports remote install of APKs/SPKs/PPKs. - FileManager extension now allows diff comparison of two text files. - Device now displays multiple remote (wifi ide) connections. - Fixed crash when switching to terminal. - Fixed crash after subscribing to monthly premium. - Added yearly premium subscription option (cheaper). DS 2.60b1_p3 - Extension API func ext.Open() now switches to coding tabs when loading/displaying a file. - Added new 'options' param to ide.Obfuscate(), use 'noswap' to prevent app.* swapify. - Fixed missing 'Billing' permission in AABs when using app.CreatePlayStore. - Fixed missing 'Accounts' permission in AABs when using app.GetUser/Accounts. - Fixed the double-tap wifi "EADDRINUSE" error in wifi ide. - Added DS build number to About box + new app.GetDSBuild() method. - Tidied up app.CreateBluetoothList() layout. - Prevented ide.AddModule from firing more than once per run. DS 2.60b1_p2 - Fixed issue with using ctrl.Batch() method with obfuscation. - Removed troublesome bytecode file. DS 2.60b1 - Added FLAG_MUTABLE to app.SetInForeground() and others to stop API 31 error. - Added app.GetIsBatteryOptimized() detects if app is being optimized. - Added app.ShowBatterySettings() show user battery optimization settings. - Added foreground location service support for Android 10+. - Project dir is now added to module search paths for cfg.Node apps. - Added new obfuscate option to build.json (array of extra files to obfuscate). - Added ide.Obfuscate( src,dest ) method (useful for building extensions/plugins). - Added new !clean IDE command (cleans internal cache/temp dirs and re-extracts internal assets) - Added new !reset IDE command (resets to fresh install state, keeps projects & prefs) - Fixed bug with app.HttpRequest() and docs sample. - Upgraded Node from version 12 to version 16. - Fixed issue with ide.AddModule() randomly missing out modules. - Fixed problem with multiple @ symbols in ide.AddModule() method. - Added new cfg.NodeESM option to support use of ES modules. - Added new 'esm' option to app.CreateNode() to support ES modules. - Added new 'debug' option to app.CreateNode() enables generic debug trace for express and others. - Added new 'id' parameter to node.Run/Execute calls (for isolating script contexts in extended mode). - Fixed issue with BLE onUartReceive returning atob wrapped values. - Fixed issue building APKs with non-english characters in app title. - Fixed bug with quotes in debug run box causing DS crash. - Update internal docs to v237. - Fixed mail.Send for Android 11. - GameView: Added default loading splash screen. - GameView: Added gfx.SetSplash() (allows use of animated gif during load). - GameView: Fixed bug where OnReady called too early when loading text. - GameView: Added gfx.useCanvas property (use outside of OnLoad). - GameView: Added new gfx.debug=true option to visualise physics objects (use outside OnLoad) - GameView: Added new AddShape( 'polygon', [[x,y],[x,y],..] ) option to physics. - GameView: Fixed keyboard bug where keydown not being called in OnControl function. - GameView: Fixed bug where natural size of sprites was not available after load. - GameView: Added new ide.Export("GameView",src,dest) command to export game as HTML. DS 2.58b1 - UI plugin now automatically added to APKs when building Hybrid apps. - Fixed atob2 errors in Hybrid apps. - Fixed plugin sub-folders unwanted .js extension swaps in APK builds. - Fixed building APK with Hybrid apps. - Fixed missing options parameter on app.UpdateProgressBar. - Added 'shallow' option to app.ExtractAssets() method (only extracts top level). - Added 'extended' option to app.CreateNode() method (allows use of app.* methods). - Added 'documents' to app.GetSpecialFolder() method. - Added new Bluetooth permissions for Android 12. - Improved notification listener robustness. - Added app.GetPublicFolder() - Added app.GetTempFolder() method (Android automatically deletes old files if needed) - Added '/Public' file path support (maps to scoped/sandbox public folder for app). - Added '/Private' file path support (maps to app's private folder). - Added '/Temp' file path support (maps to app's cache/temp folder). - Added 'uri' type to app.SendIntent() extras. - Added 'Camera Photo' sample (uses built-in camera app) - Changed app.SaveJson() to take any object type. - Added node.SetEnv( name, val ) method to nodejs component. - Fixed list control not auto-expanding when calling SetTextSize or SetDivider. - Added 'Expand' method to list control. - Fixed app.Uri2Path for folder names containing blanks. - Fixed issue with drawer not displaying in cfg.Fast mode. - Fixed edit.setCursorColor() for Android 10+. - Added new edit.SetSelectColor() method.