Chat extension now deleted on install (using Discord now).
UpdateProgressBar now has 'doevents' option to force ui update in v8 mode.
Fixed issue with slow APK builds.
Fixed issue with APK install just showing folder after build.
Hybrid apps are now auto-detected (don't need cfg.Hybrid)
Hybrid apps now removed from samples list, use UI plugin docs instead.
Main DS App class changed to DsApp, so won't clash with Hybrid/Enjine apps.
Added include() function for compatibility with Hybrid/Enjine apps.
Updated Hybrid templates.
Fixed crash with Notification listener during WhatsApp messages.
Added new 'CloudStore' tab to device IDE.
Added new SSH/Device Terminal tab to device IDE.
Switched device IDE 'Chat' tab to use Discord.
Added new 'RemoteTerminal' SSH extension to wifi IDE.
Move UI controls into an updatable internal DS plugin.
Support ds:/* style paths in
HTML elements (eg. ds:/Sys/app.js).
The 'FontAwesome' option can now be used with app.CreateTabs.
Changed wifi IDE right side tabs to show icons only.
Changed node.Run() method to use separate VM contexts on each call.
Changed FileDiff extension to full browser width.
Fixed problem of ide.AddModule() only working once after DS restart.
Added link to playstore unsubscribe page.
APKBuilder now defaults to target
API level 31.
Fixed playback of transparent animated gifs in Image control.
APKBuilder is no longer sensitive to spaces around brackets of LoadPlugin call.
List.OnTouch() event now returns unicode chars with correct upper case hex codes.
Transparent apps now startup with zero size (to prevent black flash).
Added cfg.Legacy option to enable various legacy transparent app behaviour.
Added app.UpdateUI() method for forcing UI drawing during heavy processing.
Enabled 3rd party cookies by default for webviews, fetch and xmlHttpRequest.
Fixed broken app.SetAlarm() method.
app.ListFolder() now supports SAF (can list outside scoped storage).
Added app.ListPermissions and app.RemovePermissions.
Added support for /Internal/* and /External/* SAF paths.
app.GetPermission() now supports 'external' and 'internal' keywords.
Replaced 'Sdcard Access' sample with 'Storage Access' sample.
Improved permissions detection for file:/ / / android_asset paths.
Fixed 'Share SPK' for scoped storage devices.
Fixed app.SendFile, app.SendImage, app.SendMail for scoped storage devices.
Added QUERY_ALL_PACKAGES permission to X version.
Removed default params from edit/mui.js (older webviews don't not like it)
Added web.Func(name,args…) for easy calling of functions defined in a WebView.
Added app.Func(name,args…) for easy calling of main script functions from a WebView.
app.SimulateTouch() now copes with lower case keywords.
Fixed 'atob' issue with console logging in NodeJS apps.
Added new GetDocumentFile() method to Plugin parent object.
Added new app.GetRouterAddress() method.
Added tabs.SetTextSize(size,mode) method.
Added cfg.Fast mode for premium users (3x faster apps!)
Added XMLHttpRequest polyfill for Fast mode.