Highlights ========== - We've Updated to targetSdkVersion to SDK 35 and Billing Library 7.0.0 to keep Google Play happy. - Introduced a new cfg.EdgeToEdge option to enable edge-to-edge features in your apps so that you can draw under the status bar and navigation bar if desired. - You will see that the Hybrid template apps are now using modules instead of simple include files. We will be moving towards the use of modules going forward as they are now supported by most phones and browsers and work on front-end (browser) as well as back-end (NodeJS) code. They provide better protection against clashing of variable names/class names and a uniform and portable approach to modularisation, encapsulation and code re-use (which is always good). - The correct matching version of the APKBuilder is automatically used when downloading via the 'Plugins' menu. No need to manually install it for beta versions of DS anymore :) - We've added support for ESP32 based microcontroller boards when running Micropython and included some useful samples. See here if you are interested in experimenting with digital electronics: https://shop.pimoroni.com/search?q=ESP32 https://docs.micropython.org/en/latest/esp32/quickref.html - We've updated the obfuscator component, so you can use more modern js libs in your code and make use of useful newer js features like the ?. operator and default parameter values on functions. You can also call this in your code using ide.obfuscate( src, dest ) if you want to export protected code (for example when building DS extensions or plugins). - You might notice that If you add a new JS-Module file to your project, then the generated class will extend a class called 'Binder'. Doing this is optional but will make your life much easier when dealing with native callbacks or timer callbacks because it automatically binds all your class methods to your class instance so that you don't have to worry about the current context (ie. the 'this' keyword will always refer to the enclosing class, not some random context which can sometimes happen in JavaScript) Release History =============== DS 2.79.1b - Fixed missing ScratchPad extension on device IDE. - Fixed module/ESM based projects not working in APKs (new apkbuilder needed). - Fixed issue with app.SetScreenMode( "game" ) showing black bar at bottom. - Filtered .*android_webview/browser.* errors in NodeJS apps. - Added 'AllFiles' permission to app.GetPermissions/CheckPermissions (for X version). - Fixed import statements not working for libs in sub-folders. - Fixed issue with wifi-ide not showing app-icon.png files. DS 2.78.9 - Fixed app icon and provider authority issue in APK/AAB builder. - Set AAB builder default to SDK level 35. DS 2.78.8b - Added app.GetNavBarHeight method. - Updated nav bar detection/measuring to support runtime changes. DS 2.78.7b - Enabled drawing over camera notch. - Changed internal method for calculating Navbar height. DS 2.78b1 - Updated targetSdkVersion to SDK 35 - Updated Google Play Billing Library to version 7.0.0 - Added support for edge-to-edge mode on Android 15+. - Permission "Media" is now only added in 'X' version (due to GPlay restriction) - Fixed bug preventing spks/ppks/epks from being installed from file managers. - Fix docs open/close, unwanted refresh bug. - Added wbs.SetOnWsReceive, wbs.SetOnWsOpen, wbs.SetOnWsClose callbacks. - App name is now (space) trimmed when creating a new app on the device. - App now starts up faster (no orientation flips). - Added new cfg.EdgeToEdge mode to enable it if available on the device. - Added new app.IsEdgeToEdge() method. DS 2.77b2 - Fixed bug where HTTP PUT requests were failing in Hybrid and Python apps. - Added ForceCors option to app.SetOptions to force CORS checks on Hybrid and Python apps. - Added new obfuscator and made ide.Obfuscate modal. - Added support for Espressif ESP32 chips to UsbSerial module (tested on QT-Pi-ESP32-S3) - Added mobile programming support for ESP32 chips running MicroPython + examples. - Fixed editor not resizing after returning from docs when keyboard was show. - Fixed IDE 'Create Shortcut' error always showing on Android 26+. - Fixed APKBuilder mistakenly using old DS engine (caused mimetype errors etc). - Stopped using V8 libs for IDE (js engine too old for new obfuscator libs). - Downloading APKBuilder from plugins menu now downloads matching build version. - Fixed Notificationlistener or _AddOptions("NotifyService") making project behave like HTML project. - Fixed app.QueryContent() always asking for "Media" permissions (use _AddPermissions instead). - Marked 'Query Videos/Images' samples as 'X' version only (due to new Google Play restrictions). - Fixed HTML and Hybrid apps now auto-size when keyboard is shown. DS 2.77b1 - Removed READ_MEDIA_IMAGES/VIDEOS permissions for GPlay version (Google requirement). - Removed FOREGROUND_SERVICE_LOCATION permission for GPlay version (Google requirement). - Re-enabled 32bit ARM support (too many devices still running 32bit). DS 2.76b3 - Fixed bug when switching between 'Game' mode and 'Normal' mode. - Updated docs to include Python fixes. - Updated UI controls to v0.31. - Fixed delay when first showing left side panel (docs). - Wifi-IDE: New UI for text search (similar to Edit extension). - Wifi-IDE: When creating and naming new files, the enter key now confirms the dialog. - Wifi-IDE: Fixed meta key not working for MacBooks. - Fixed Pixel7 text sizing and offscreen button issues. - Fixed app.IsTablet response for Pixel7 (and other large phones). DS 2.76b2 - 'Game' mode now fills the camera notch area too (if present). - Added "application/wasm" mime type to jetty/ide server. - cfg.ESM is now automatic if 'export' or 'import' statements are found. - Added support for .mjs files. - Added new file type 'JS-Module'. - Changed Hybrid samples to use import statements. - Enabled creation of Python apps from wifi IDE. - Switched Python Hybrid default to light mode. - Removed Github feature (more work on wifi ide version needed). - Added missing imports from many Python samples in docs. - Html and Hybrid apps no longer allow pinch/zoom/scroll by default. - Added 'desktop' option to app.CreateWebView() methods (enables desktop mode) - Added WebView.SetOptions method so that (most) options can be changed at runtime. DS 2.76b1 - Fixed issue with null timer ids when using app.SetOnError in Node apps. - Added missing Bluetooth/Location permissions when app.DiscoverBtDevices is used. - Fixed right-click 'Install' option in wifi ide for ppks. - Fixed app.UnzipFile failure on some devices. - Added the .mjs MIME mapping to Jetty web server. - Fixed cfg.ESM mode for recent Android WebViews. - Fixed atob bug breaking pre-encoded plugin strings sent with CallScript method. - Fixed automatic resize for Hybrid and Python apps on screen rotation. - Added ext.deviceName and ext.appType fields to extension object. - Added appType parameter to ext_OnProject callback. - Fixed using app.CreateNode method inside services. - Fixed PlayStore.GetPurchases() not returning 'IAP' types. - Updated docs theme to look more modern (and match v3 editor). - Upgraded material icons version for docs and extensions. - Added SetWeight( weight, orient ) method to all controls. - Added Layout.SetWeightSum( sum ). - Switched plugin installer to use Android built-in zip extractor. - Fixed wiping out of .mjs files when using cfg.NodeESM mode. - Modified NodeJS os.homedir() func to return same as app.RealPath("/Private"). - Added (dark) Google group to forum tab. - Fixed bug stopping demos work after using docs pythons samples. 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.