Функции теперь имеют параметры и возвращаемое значение.
Добавлены действия Получить Параметр Функции и Return.
Задать список параметров и их описание можно в менеджере функций
Теперь одну и ту же функцию можно вызывать с разными параметрами, что упростит повторное использование кода.
Новые действия содержат интерактивную документацию, подробности можно узнать там.

Менеджер функций.
Работать с функциями теперь можно в отдельном окне, которое называется менеджером функций.
Все элементы управления, а именно: создание, редактирование, удаление функций, были перенесены туда.
Добавлена возможность поиска функций и задание параметров.
Основное окно:

Задание параметров функции:

Действия Получить Параметр Функции и Return добавляются в редактор скрипта автоматически.
Расширение API для веб интерфейса.
Добавлено множество методов, которые можно вызывать из веб интерфейса.
Методы для взаимодействия с системным окном:
-
MoveWindow - смена положения окна.
-
ResizeWindow - изменение размеров окна.
-
Api.OpenFileDialog, Api.SaveFileDialog - вызов системного диалога выбора файла.
-
ShowNotification - показ системных уведомлений в трее.
-
OpenUrl - посещение заданного url, открытие файла или программы.
Больше подробностей можно узнать здесь:
https://wiki.bablosoft.com/web-interface/#/interactingnativewindow
Все генерируемые диалоги для выбора файла были заменены на нативные.

Добавлено синхронное API для работы с файловой системой. Сюда входит: чтение/запись файлов, работа с папками.
Больше подробностей можно узнать здесь:
https://wiki.bablosoft.com/web-interface/#/filesystem
Начальные размеры окна можно задать прямо в его настройках:

Создавать интерфейс теперь можно с нуля.
Это можно было делать и раньше, но сейчас для этого появились дополнительные возможности.
При создании и генериции интерфейса можно выбрать его тип:

Появилась возможность сохранять изменения прямо из редактора кода и вообще не заходить в визуальный редактор интерфейса.
Новый тип интерфейса заставляет BAS работать принципиально новым способом, вместо того, чтобы запускать один скрипт сразу, как это было раньше, теперь можно реагировать на события на странице(например, нажатия кнопок) вызывая BAS функции, а параметры для этих функций можно брать прямо из веб интерфейса.
Вызов функций BAS и создание потоков из веб интерфейса.
Теперь неограниченное число потоков можно создавать прямо из веб интерфейса, а также вызывать в них функции с заданными параметрами.
Для получения результатов можно использовать объект Promise или ключевое слово await.
//Создаем поток
var Thread = new BASThread()
//Устанавливаем прокси
await Thread.RunFunction("SetProxy", {"ProxyLine": "socks5://127.0.0.1:11185"})
//Вызываем функцию для парсинга
var LinksList = await Thread.RunFunction("MakeGoogleQuery", {"Query": "cats"})
//Останавливаем поток
Thread.StopThread()
Данное API умеет обрабатывать ошибки и имеет специальное расширение к объекту Promise, которое останавливает поток.
Более подробно здесь:
https://wiki.bablosoft.com/web-interface/#/callbasfunction
Существует возможность отлаживать выполнение функций прямо в BAS:

Приложение ParseGoogle. Демонстрация функционала.
Было создано новое приложение ParseGoogle. Оно парсит выдачу по заданному запросу.
Приложение довольно примитивно с точки зрения функционала, зато имеет приятный интерфейс и хорошо демонстрирует новые возможности.

Конечно же, все это сделано на BAS.
Скомпилированное приложение
https://bablosoft.com/distr/ParseGoogleDistr/ParseGoogle.zip
Проект BAS
https://bablosoft.com/distr/ParseGoogleDistr/ParseGoogle.xml
Веб интерфейс
https://bablosoft.com/distr/ParseGoogleDistr/ParseGoogle.main.interface.txt
Данное видео демонстрирует процесс создания:
https://www.youtube.com/watch?v=SOu0uBhNewE
Вызов функций BAS и создание потоков из node.js.
Функции BAS теперь можно вызывать и из node.js.
Так же, как и для веб интерфейса есть возможность ожидать результатов и обрабатывать ошибки.
var Result = await BAS_FUNCTION(
"FunctionName",
{ParamName1: "ParamValue1", ParamName2: "ParamValue2"}
)
Подробней здесь:
https://wiki.bablosoft.com/doku.php?id=node.js#calling_bas_functions
Этот метод значительно упрощает взаимодействие с браузером и с BAS из node.js
Улучшения интерфейса
Внешний вид редактора скриптов был переработан.
Добавлена визуализация меток, метки можно создавать перетаскиванием специального элемента управления:

Добавлена справка по основным возможностям BAS:

В нее можно попасть нажав на кнопку по центру, справа в редакторе скрипта.
Справка содержит описание для каждой группы(циклов, условий, парсинга и т .д.), с основными принципами работы.
Там также находятся основные действия и примеры использования.
Был обновлен инспектор переменных - теперь он показывает состояние ресурсов, его размер может быть изменен.

Переход к функции может быть осуществлен по клику на названии функции в действии "Вызов функции".
Место для активной вставки действия не изменяется при редактировании скрипта.
Описание действия сохраняется вместе с сохранением данных.
Верхняя панель в редакторе скрипта была заменена на меню.
Вместо задания количества успешных и неудачных выполнений теперь можно выбрать "Повторять"
Обзор нового интерфейса можно найти в этом видео:
https://www.youtube.com/watch?v=z6iTuFyL9CA
Исправление ошибок
- Планировщик не перестает работать при питании от аккумулятора.
- Исправлено решение рекапчи если функция ответа является строкой.
- Исправлено падение при сворачивании веб интерфейса в трей на Windows 10.
- При отсутствии информации о кодировке почтового сообщения, BAS не подразумевает что письмо закодировано в quoted printable.
- Исправлено падение при установке скорости мыши из строки.
- Исправлено смешивание ресурсов если планировщик запускает одинаковые проекты одновременно.