Asynchronous functions
A new module 'Call function asynchronously' has been added. It allows to start function execution in separate thread, wait for results or stop it if necessary.

Using this module, you can dynamically control threads. It has many features such as: limit maximum number of running threads, task queue, optimized thread start, limit execution time. One of the frequently asked questions: "How to make as many threads as there are lines in a file?" can now be solved simply and quickly:

You can find more information in interactive documentation
Calling BAS functions from other programming languages
New version allows calling BAS functions from other programming languages. We are making libraries for C#, Node.js and Python. Only version for C# is currently implemented. It is called BASRemote.NET. It can be found at this link, where you can also find installation instructions, and wiki with examples:
https://github.com/CheshireCaat/BASRemote.NET
Library is developed by @Oyasumi-Punpun
This changes allows you to write applications in your favorite programming language, while using BAS to interact with the browser.
It is important to understand, that this update allows you to run BAS code from C#, but not C# code from BAS.
Improved interaction with browser in manual mode
Working in manual control mode has become much more convenient. Here is the list of changes:
- Added context menu for browser.

- Possibility to open developer tools and view page source.



-
Page search, Ctrl-F shortcut.
-
Increased browser responsiveness.
-
Downloading files through a browser.
-
Highlight current tab.
Improved working with tabs
-
Mechanism for opening a new tab was revoked. After update, new tabs are created even after page loading error, other problems have been fixed.
-
Option for delayed launch of new tabs. This option allows you to create lot of tabs at once, without actually loading pages. The page will be loaded only after first time tab gets activated.
-
Added new action 'Get information about tabs'.
-
Added a new api to get tab list from the web interface https://wiki.bablosoft.com/web-interface/#/inspectingbrowser?id=method-gettabs
-
Fixed a problem with opening a tab from a page without js context, for example, from a page that consists only of an image.
-
Holding the Ctrl key while click opens a new tab.
-
Added param 'Hold ctrl key' for mouse clicks.
FingerprintManager was updated
All changes in tabs implementation and manual control mode were also transferred to the FingerprintManager.
FingerprintManager now supports saving tabs between sessions. When profile starts, previously opened tabs are launched in the delayed launch mode. This was done by @Fox.
Action "Create or switch to local profile" now loads and saves proxies in FingerprintManager profiles.
Other changes
Added new action "Get all items from cache", it allows you to receive the entire list of requests and responses from the server added to the cache. These include: HTTP request status, request headers, response headers, request body, url, post data.
Silent installation of the scheduler. This method must be called before you start working with the scheduler from the web interface https://wiki.bablosoft.com/web-interface/#/interactingwithscheduler
Added JSON module.
A mechanism for native modules has been implemented which ignores module code in run mode if module is not used in the project. Previously, this mechanism was available only for custom modules.
Moving the cursor off the page is now available if the page is scrolled down.
Fixed bugs
Fixed language change with en-GB proxies.
Save cookies optimization.
Fixed opening database manager after it was opened from web interface.
Improved finding frame algorithm.
Fix deleting function params.
Fix font changing issue for image processing module.
OpenUrl web interface API accepts command line params.