Human Emulator

Human Emulator


RPA и автоматизация действий в браузере

версия 7.0.78 · обновление от 18.10.2026

версия 8.1.6 · бета от 20.10.2026

sales@webemulator.com @saleshumanemulator

Бесплатная онлайн консультация по возможностям программы.

Журнал изменений Human Emulator 8 (бета)

Восьмая линейка — бета рядом с седьмой: она ведёт собственный журнал, версии не перескакивают с одной линейки на другую. Ниже хвост журнала 8.x; журнал седьмой линейки — на странице изменений 7.x. Полные файлы: журнал 8.x и журнал 7.x. Скачать сборку для проверки — демо восьмой (бета).

Скачать демо Поддержка

Демо — оценка Studio на Windows. Вопросы по установке и скриптам — поддержка или контакты.

Последние записи журнала 8.x

8.0.46 (28.07.2025)

  • Запрос подтверждения закрытия приложения при наличие несохраненных изменений;
  • Синхронизация темы редактора кода с визуальной темой приложения;
  • Переключение активного файла в редакторе кода в соответствии с текущим стек фреймом на паузе отладки;
  • Подсветка строки текущего и выбранного stack frame на паузе отладки;
  • Отладчик Python, опция паузы на старте (выключено по умолчанию);
  • Выполнение команд пошаговой отладки из меню;
  • Добавлен пакет установки набора плагинов в инсталлер (включено по умолчанию);
  • Добавлено преобразование имен методов API плагинов в snake case;
  • Улучшена работа сплиттера главной панели;
  • Добавлены шаги отката и удаления для образцов и примеров плагинов;
  • Изменен список подсказок в редакторе php;
  • Локализация информации о плагине нв странице настроек;
  • Добавлена кнопка открытия страницы документации на плагин;
  • Показ диалога ошибки повторной установки плагина;
  • Добавлен диалог подтверждения удаления плагина;
  • Исправлено закрытие приложения при сохранении настроек;
  • Исправлена ошибка стилей;
  • Добавлена панель `Быстрый старт` с полезными ярлыками;
  • Добавлена панель `Мои скрипты` с каталогом файлов;
  • Добавлено меню по работе с шаблонами в редакторе;
  • Небольшие правки багов в UI;
  • Поддержка отладки для PHP при исполнении на хост системе (не в контейнере);
  • Добавлена поддержка плагинов с исполнением кода;
  • В диалог About добавлена информация о версии сборки бекенда;

8.0.47 (26.11.2025)

  • MsExchange up lib ver;
  • Добавлены файлы php-host.ini и php-host.ini-debugger для запуска без использования Docker;
  • Запоминать состояние и размер редактора для востановления панели при перезапуске;
  • Добавлен в настройки 'Лог приложения' (EnableLog) и применен для Serilog;
  • Лог файл ограничен размером 50 МБайт и сокращен шабон сообщений лога;
  • Исправлено поведение авто-скрола панели Отладки;
  • Добавлена ​​турецкая локализация для классов пользовательского интерфейса и API;
  • Включены модули mbstring, mysql и другие для режима локального PHP на хосте (конфигурация в php.ini);
  • Обновлены тесты в пвпке TestSamples;
  • Добавлен ФО Logeger для записи логов в файлы, панель отладки или базу данных SQLite;
  • ФО LibreOffce добавлены методы чтения файлов ODT как текстовые блоки;
  • Добавлена панель Чата с ИИ ассистентом;
  • ФО MsExchange обновлен и исправлены ошибки в асинхронном вызове;
  • Для всех ФО удалены устаревшие классы Comatable;
  • Для всех ФО добавлены PHPDoc для всех команд;
  • ФО clipboard добавлены новые команды;
  • ФО xhe_table Добавлены команды add get_rows_count_by_number, add get_cols_count_by_number;
  • XHEInterfaces JS исправлен сбой не хвататет ссылок на модули классов;
  • XHEInterfaces Python исправлен сбой для вызова методов типичных для XHEInterface на объекте коллекции XHEInterfaces (для ограниченного набора команд);
  • XHEInterfaces, XHEUIS для PHP исправлена ошибка приведения типов для конструктора;
  • XHEInterfaces, XHEWindowInterfaces, XHEUIS исправлено: не добавлять в коллекцию элемент с пустым номером или с номером -1;
  • ФО mail улучшена работа с протоколом IMAP. Добавлена команда set_limit() для установки значения лимита глубины прохода при поиске писем (по умолчанию Limit = 5000);
  • Excelfile: новая типизация значений ячеек. При set_all_cell_values_as_string = true все значения ячеек записываются строками;
  • При set_all_cell_values_as_string = false (по умолчанию) тип значения ячейки берётся из JSON-типизации, а если словарь типов колонок содержит типы для этого файла и листа — из словаря;
  • Команды add_row, add_rows, set_col, set_cell, set_row, set_sheet работают с типами; для управления словарём колонок добавлены remove_column_types_dict и set_column_types_dict;
  • Добавлена панель использования ресурсов (Docker контейнеры);
  • Добавлена обработка опций командной строки аналогично Windows версии;
  • Апгрейд Electron и доработка встроенного браузера для поддержки свойства window.opener;
  • Восстановлена панель отладочного лога в RT версии;
  • Добавлена команда установки пакетов Python;
  • Устранены задержки на старте приложения при проблемах с сетью;
  • Передача URL сервиса в скрипт через окружение;
  • Поддержан Astra Linux 1.8 в установщике;
  • Добавлена поддержка Tesseract OCR;
  • Исправлен функционал диалога загрузки связанный с методом browser.enable_download_file_dialog;
  • Устранены ошибки исполнения JS плагинов;
  • Отдельные компоненты для установки Docker образов;
  • Отключена автоматическая загрузка неустановленных Docker образов;
  • Добавлена реализация метода browser.set_count();
  • Баг фикс pdffile->combine для docnet библиотеки;
  • Баг фикс excelfile->set_cell для числовых форматов;

8.0.48 (12.09.2026)

  • Интерфейс Studio без DevExtreme — панели, деревья, таблицы, док, браузер и отладчик в стиле ИИ-чата;
  • Панель «Расписание роботов» в стиле ИИ-чата — SVG-тулбар, светлая/тёмная тема, поиск и таблица задач;
  • Пункты ИИ вынесены из Вид/Сервис в отдельное меню ИИ после Плагины (панель, настройки, удаление архивных чатов);
  • Оставшиеся диалоги переработаны без DevExtreme — «Кодировать строку», шаблоны для вставки, «Добавить код», «Настройки для авторизации в приложении», «Авторизация пользователя», «О программе», «История версий» и активация: всё в стиле ИИ-чата и в светлой/тёмной теме;
  • Чекбоксы категорий в диалоге добавления кода с явной галочкой и фильтруют список объектов;
  • Настройки ИИ Ассистента как в Windows Studio: каталог провайдеров, тюнинг и прокси на провайдера, тема чата для диалога;

8.1.0 (14.09.2026)

  • Вид → Масштаб → Интерфейс масштабирует весь интерфейс Studio (50–200%), запоминается; масштаб браузера и редактора отдельно;
  • Тема Studio задаёт prefers-color-scheme для встроенного браузера, нативного меню/трея, системных диалогов и служебных окон;
  • Фон пустой вкладки браузера и окна Studio — палитра ИИ-чата; редактор по умолчанию Studio / Studio-Light с глобальной темой;
  • Меню «Навигация»: диалог «Профиль браузера» (UA, прокси, отпечатки, JSON) как в Windows Studio;
  • Меню «Навигация»: «Стартовая страница» и «Страница поиска» (как в Windows Studio);
  • Подсказки PHP в редакторе: Intelephense по require/include текущего робота, API из Templates, без объекта _;
  • «История версий»: поиск, «новое с прошлого раза», две колонки, счётчики, копирование версии и изменение размера окна;
  • Переключатель статического анализа — кнопка в тулбаре редактора;
  • Подсказки Python в редакторе: Pyright extraPaths = Templates_PY и workspace папки робота;
  • Заставка при старте на том же мониторе, куда открывается главное окно (не primary и не курсор);

8.1.1 (15.09.2026)

  • Старт: обязательные --apiPort и --instanceKey (у каждого экземпляра свои настройки, userData и single-instance), заставка живёт не дольше 120 с, при занятом порте API/CDP берутся свободные;
  • Старт и выключение снимают только Docker-контейнеры XWeb Human Emulator (префикс rpabot- и метка), чужие контейнеры WSL/хоста не трогаются;
  • Закладки браузера показывают title страницы; ПКМ — меню как в Windows Studio (закрыть / все / слева / справа / кроме этой);
  • Панель браузера: вкладки страниц под адресной строкой вместо комбобокса;
  • Панель информации: слушает пока видна (или всегда), компактный лог, поиск/фильтр, группировка повторов, длительность, экспорт и копирование API;
  • Панель информации: IsBusy/is_busy с ответом false не считается ошибкой;

8.1.2 (24.09.2026)

  • Визуальный робот: файл .wf открывается структурным видом — шаги деревом, свойства в панели, палитра доступных действий и список непереносённых мест; правка свойства сохраняется в сам файл (с отменой и .bak), а не в текст XAML, и если сохранение отвергнуто — файл остаётся прежним; XAML виден только по явному «Показать как текст» и только для чтения;
  • Визуальный робот: нового робота можно собрать, не открывая XAML — файл создаётся из дерева сценариев («Визуальный робот»), шаг добавляется в выбранный контейнер из палитры или контекстного меню, переносится между шагами, удаляется (с подтверждением, если внутри есть непереносимые места) и отменяется вместе с возвратом назад/вперёд, а собранный робот запускается и показывает результат; условие вставленного «если» правится на месте, а в ветку «иначе» шаг кладётся тем же контекстным меню. `TryCatch` и развилку по значению (`Switch`) добавить пока нечем;
  • Визуальный робот: у робота появились переменные — в свойствах блока шагов их можно объявить (имя, тип, значение по умолчанию) и снять, а шаг «Присвоить» вставляется из палитры или контекстного меню с уже выбранной переменной и приводит значение к её типу. Снять переменную, которую где-то используют, нельзя: сохранение отвергается целиком с названием узла-потребителя — как и одноимённое объявление в том же блоке, где второе молча потеряло бы первое. Объявить переменную массивного типа и переименовать существующую пока нечем;
  • Визуальный робот: открыв робота, панель проверки сразу говорит, что с ним можно делать здесь — «исполняется здесь», «исполняет только Windows Studio с плагином», «здесь не исполняется: в файле есть узлы вне подмножества net8», «формат не распознан» или «воркер не разобрал документ»; там же видно, сколько свойств и шагов доступно правке, сколько неизвестных мест и скрытых Activity за ними и под какими сборками они лежат, а для файла, который правкой здесь не покрывается, в панели есть кнопка «Показать файл в проводнике». Число мест считается по всему разбору, а не по показанному списку первых 50: ничего не теряется молча и не исправляется самовольно;
  • Визуальный робот: цикл «Для каждого» доведён до конца — у вставленного цикла его коллекция показана в панели свойств незаполненным полем, заполняется выражением (набор элементов или ссылка на переменную) и при запуске обходит элементы ровно по одному разу; тем же полем чинится пропущенное условие у «если». Пока обязательное свойство не задано, робот помечен как неисполняемый, а место названо в списке непереносённого — раньше и то, и другое лечилось только ручной правкой XAML в Windows Studio. Цикл по переменной-массиву, TryCatch и развилку по значению (Switch) добавить пока нечем;
  • Resource Monitor показывает статус CV/OCR, Docker и captcha; тема Studio синхронизируется с ИИ-чатом;
  • Планировщик: таймлайн 24ч с метками/повесткой и «Сегодня»; журнал запусков с фильтром ошибок и открытием лога;
  • Недавние в Quick Start синхронизируются с открытыми скриптами и показывают время;
  • Инспектор DOM: ПКМ вставляет код элемента в активный таб редактора;
  • Трей: пауза/возобновление планировщика, открыть планировщик, открыть последний скрипт;
  • Чекбокс PHP в установщике Windows кладёт PHP 8.2 и VC++ runtime из пакета, без скачивания с windows.php.net;
  • Панель загрузок: список с прогрессом, паузой и отменой, открыть файл и показать в папке;
  • Панель закладок редактора: список по файлам, переход, удаление и очистка;
  • Плагины Ollama и LM Studio в solution плагинов (чат, модели, картинка);
  • Подсветка HTML, XML/SVG, CSS, INI, YAML, SQL, BAT/CMD, Markdown и JSON; переход к определению открывает другой файл во вкладке;
  • Отладка: фильтр Переменных кнопкой; каналы «Служебное» и «ИИ чат»; по умолчанию вкладка «Сообщения»;
  • Мои скрипты: ограничить папку и открыть как проект ИИ, избранное/недавние, DnD, горячие клавиши, создать JSON/MD, точка последнего запуска;
  • Контекстное меню редактора: подменю «Переход» и «Операции», шаблоны, закладки, фрагмент в ИИ Ассистент; сохранение перед запуском; диалог выхода с «Сохранить все»;
  • В новом проекте браузер по умолчанию — Chromium (Internal); run.php нового PHP-робота грузит локальный init.php;
  • Браузер: кнопка «Остановить»; дублирование вкладок, Ctrl+1–9, DnD, overflow, Home и восстановление сессии;
  • ИИ Ассистент: «Новый проект» в шапке; сворачивание карточек инструментов и для одиночных; очередь steer в композере;

8.1.3 (25.09.2026)

  • Визуальный робот: зашифрованный робот (файл вида «имя.wf.encoded_wf») больше не молчит и не притворяется битым — редактор и запуск одним словом говорят, что это зашифрованный визуальный робот, который здесь не расшифровывается, и что нужно открыть исходный .wf или Windows Studio с паролем дешифрования. Раньше воркер называл целый файл «битым XML», вкладка предлагала править его как текст, а кнопка запуска молчала; сам контейнер при этом не меняется ни байтом, и расшифрованное содержимое нигде не появляется — ни в логе, ни в аргументах запущенного процесса;
  • Визуальный робот: режим «Показать как текст» перестал быть ходом в одну сторону — пока робот открыт текстом, к его структуре возвращает кнопка в тулбаре редактора, и этот ход ничего не стоит: очередь несохранённых правок, отмены/повторы, счётчик несохранённых правок и значение в поле свойств остаются теми же, а сохранение после возврата записывает правку тем же точечным механизмом. Раньше панель структуры размонтировалась вместе со своей кнопкой переключения, и вернуться можно было только закрытием и повторным открытием вкладки;
  • Визуальный робот: подсветка исполнения доведена до каждого шага — во время запуска светятся не только отдельные действия, но и контейнеры (последовательность, «если», «для каждого»), у шага внутри цикла видно который это проход («×3») и сколько он длился, у упавшего — причина, и она остаётся на строке до конца запуска, а не стирается следующими шагами; шаг, который не дождались на конце рана, назван «не завершён», а не «исполняется». Подсветка относится к тому роботу, который запущен: вкладки двух файлов с одинаковым именем из разных папок больше не светятся разом. Строка лога теперь говорит, каким шагом она напечатана;
  • Визуальный робот: шагу можно поставить точку останова — контекстное меню шага говорит «поставить точку останова» / «снять точку», а при запуске робот встаёт на этом шаге ДО его действия и ждёт команды: в контуре видно, какой шаг держит паузу, панель лога за это время не получает ни одной строчки от него, а в тулбаре появляется «Продолжить». Действие шаг сделает только после этой команды, поэтому побочный клик или запрос, который иначе ушёл бы в боевой сайт, можно остановить до того, как он случился; из паузы доступен и ■ (запуск завершается отменой, а не «ошибкой шага»). Раньше любую нежелательную ветку можно было только убить вместе с роботом. Точка относится к открытому сеансу: рестарт продукта её не переживает, ставится она на шаг целиком (не на строку XAML внутри него);
  • Визуальный робот: на паузе роботом можно идти по шагам — пока запуск стоит, в тулбаре документа появляются «В узел», «Следующий узел» и «Наружу». «В узел» спускает в шаги контейнера, а если спускаться некуда, переводит на следующий шаг; «Следующий узел» перескакивает содержимое контейнера, дав ему отработать целиком, и внутри цикла переходит по его проходам, оставаясь на том же шаге; «Наружу» поднимает на уровень выше, а с шага верхнего уровня доводит запуск до итога. Одна команда — одна остановка: робот встаёт ровно на том шаге, куда его обещали привести, и действия этого шага к моменту остановки не совершил; стоящая точка останова важнее шага и названа причиной паузы, а шаг, отданный вне паузы, отвергается с объяснением. Раньше из паузы была одна команда — снять её или убить запуск целиком. Значения переменных на паузе показывает отдельная панель — см. следующий пункт; не хватает шага внутри перехвата исключения: штатную запись TryCatch редактор пока не понимает;
  • Визуальный робот: пауза показывает значения — пока робот стоит на точке останова или на шаге, в правой колонке редактора появляется панель «Значения на паузе» с числом строк в снимке: переменные робота и их значения ровно в тот момент, когда робот встал, и «продолжить» двигает робота дальше именно с ними. Показываются только те значения, которым продукт доверяет: текст, число, дата, логическое, перечисление, Guid; у значения, которое показывать нечем, на его месте стоит «не показывается» с настоящим именем типа в подсказке строки. Ни для одного значения не вызывается чужой код, который мог бы напечатать секрет или уронить запуск. Защищённое значение (пароль) отдаётся словами «скрыто: защищённое значение», и его тела нет ни в панели, ни в логе. Длинные строки обрезаются с честной отметкой «обрезано, всего N симв.», переменная без значения названа «не присваивалось», пустая строка — «пустая строка», а если переменных больше 64, лишние не теряются молча: панель говорит «ещё N не вошло в снимок». Раньше пауза говорила только, на каком шаге робот встал, а куда он пойдёт с этими значениями, приходилось угадывать. Значения видны только на паузе: истории изменений нет, идущему без паузы роботу смотреть нечего, переменной массивного типа в редакторе пока нечем объявить, поэтому коллекции в этой панели ещё не видно, и нет снимка внутри перехвата исключения — штатную запись TryCatch редактор пока не понимает;
  • Визуальный робот: робот на паузе отвечает на команды по существу, а не молча делает вид. Кнопки «Продолжить», «В узел», «Следующий узел», «Наружу» и ■ работают тогда, когда команду действительно есть кому принять: процесс робота жив, и установленный исполнитель эту команду объявил. Иначе панель говорит почему — «процесса воркера нет: ран завершился или был остановлен, слушать команду некому», «Исполнитель такой-то сборки не умеет “шаг по узлам”; он объявил: …» — и нажатие не выдаётся за выполненное. Раньше ответ команды был четырьмя независимыми «да» без адреса: по нему было нельзя узнать, жив ли робот и принята ли команда, а отказ был неотличим от успеха. Пока робот стоит на паузе, редактор жив: шаг можно выбрать, посмотреть его свойства, уйти «как текст» и вернуться к структуре, а контур перечитать прямо с диска (самое медленное из этих действий — 0,12 с при пределе 4 с), и всё это время робот действия не совершает. Закрытие вкладки документа робота не останавливает — снять его можно только кнопкой ■, и она даёт «отменён», а не «ошибка шага»; если окно перезагрузить, та же пауза вместе с командами и снимком значений возвращается на тот же шаг. Ответа команды робот ждёт две секунды и, если вердикта не было, честно об этом говорит — сам робот при этом остаётся там, где стоял. Истории значений, точки внутри штатного перехвата исключения (TryCatch) и отладки роботов, собранных исполнителем, объявившим не все команды, в этом релизе нет;
  • Визуальный робот: гибель процесса исполнителя больше не выглядит как «робот ещё идёт» — если процесс, который ведёт визуального робота, упал или был снят снаружи, панель лога тут же получает ровно одну строку итога: «итог: lost · … · воркер вышел с кодом N без терминального события». Пауза и значок запущенного рана снимаются, кнопки «Продолжить», «В узел», «Следующий узел» и «Наружу» исчезают, ■ гаснет, а «продолжить», отданное мёртвому запуску, отвечает тем же названным отказом, а не молчаливым «да». Потеря видна и после перезагрузки окна — её больше не нужно угадывать по молчанию панели; следующий запуск того же файла работает как обычно, потеря одного запуска не заражает другой. Раньше об этом знало только внутреннее состояние рана: панель обрывалась на строке паузы, и убитый робот был неотличим от долгого. Не мерялось: гибель процесса посреди исполняющегося шага (вне паузы) и гибель самого бэкенда;
  • Визуальный робот: набор команд, который робот разрешено требовать от исполнителя, стал настраиваемым и видимым. Запуск продукта принимает список разрешённых возможностей (переменная окружения XHE_WF_CAPS): исполнитель объявляет ровно их, и всё остальное для редактора недоступно по-настоящему — кнопки «В узел», «Следующий узел» и «Наружу» (или «Продолжить», или панель значений — каждая по своей возможности) выключены, в подсказке названо, чего именно исполнитель не объявил, рядом лежит понятный без мыши чип отказа, а вместо молчаливого «да» панель говорит, что команде некому отозваться. Пустой список снимает объявление целиком: робот при этом собирается и выполняется как обычно, ■ на паузе по-прежнему даёт «отменён», и действие шага за это время не совершается; неизвестные имена и повторы в списке отбрасываются. Попутно закрыта утечка: исполнитель, которому снимок значений не разрешён, больше не выносит его наружу — раньше значения уезжали в поток всегда, а редактор их просто не показывал. Прежняя оговорка «отладки роботов, собранных исполнителем, объявившим не все команды, в этом релизе нет» этим снята. Границы: объявление — это право, а не умение (необъявленную команду исполнитель всё равно исполнит, если послать её ему напрямую), точкой останова объявление не ограничивается, проверка сделана на сборке, которой нужная команда запрещена списком, а не на сборке, где её физически нет; повторный запуск и остановка во время загрузки робота, а также гибель самого бэкенда в этом релизе не проверялись;
  • Инсталлятор не срывается, если Docker не может работать (гостевая ОС под VirtualBox/VMware): последняя страница перечисляет, что именно не будет работать, продукт при первом запуске показывает то же честное окно, а не запустившийся скрипт называет причину вместо системного сообщения;
  • Инсталлятор Windows: PHP 8.2 и VC++ runtime снова реально распаковываются из пакета (компонент пререквизитов собирался без архива данных, мастер останавливался на 41% и откатывал установку целиком);
  • Инсталлятор Windows больше не портит PATH: PHP дописывается в PATH пользователя без '%PATH%', который прежняя запись дублировал системный PATH при каждом входе в систему (и чинит уже испорченную запись);
  • Справка по API XHE (локальный MCP-сервер) лежит в каждой коробке этого выпуска, а кнопка «Проверить MCP» в ИИ-чате поднимает локальный сервер и отвечает за секунды;

8.1.4 (26.09.2026)

  • Визуальный робот: остановка, нажатая сразу после «Запустить», теперь действительно останавливает запуск. Раньше у кнопки ■ в тот момент, когда редактор уже назвал запуск, но процесс исполнителя ещё не родился, не было адресата: нажатие терялось, робот шёл дальше и успевал совершить действие, а ответ был «остановлено» — то есть ложь. Теперь отмена резервируется за запуском и передаётся исполнителю с самой первой его секунды: робот в таком случае получает итог «отменён» (в проверке — за 0,6 с) и не совершает ни одного действия, ни в одном из восьми прогонов. Тем же слоем остановка уже завершившегося робота перестала отвечать «успешно»: она говорит, что останавливать нечего, и это слово видно в панели лога. Границы: остановка по-прежнему работает на границе шага — начатое действие шага не прерывается на середине; повторный запуск во время идущего, запуск робота, стоящего на паузе, и гибель самого бэкенда в этом релизе не проверялись;
  • Визуальный робот: «Запустить», нажатое на роботе, который стоит на точке останова, больше не отменяет его молча и не выдаёт это за успех. Раньше у этого действия было две нечестные стороны: кнопка была выключена и подписана общим «Выполнить» — ни слова о том, почему робота нельзя запустить; а тот же запрос, пришедший снаружи (планировщик или прямой вызов), останавливал стоящий запуск, начинал новый и отвечал «успешно» — в проверке за 0,7 с робот, стоявший на паузе, был отменён и перезапущен, и в панели появился второй процесс. Теперь кнопка и запрос называют одно и то же: робот стоит перед шагом «имя (шага)», запуск того же файла паузу не снимает, для стоящего робота есть «Продолжить» и шаги. Подсказка выключенной кнопки говорит эти же слова, нажатие с клавиатуры показывает их всплывающей строкой, а запрос снаружи получает отказ вместо ложного «успешно» (в проверке — за 0,009 с). Отказ при этом не трогает стоящий запуск: робот остаётся на том же шаге, и «Продолжить» после отказа доводит его до конца ровно с одним действием шага. Границы: повторный запуск робота, который идёт и при этом не стоит на паузе, этим слоем не менялся; остановка по-прежнему работает на границе шага, а не посреди начатого действия;
  • Визуальный робот: «Запустить», посланное роботу, который идёт и при этом не стоит на паузе, больше не поднимает второй запуск того же файла. Раньше кнопка была выключена без объяснения, а тот же запрос снаружи отвечал «успешно» и не отменял идущий запуск — в проверке первый дошёл до конца сам, после чего стартовал второй: робот исполнялся дважды и делал свои побочные действия дважды, а не один раз, как ожидает тот, кто нажал кнопку. Теперь кнопка и запрос называют одно и то же: робот идёт на шаге «имя (шага)», остановите его кнопкой ■ и дождитесь итога; отказ приходит за 0,01 с и идущий запуск не трогает — в проверке робот с 180 000 итераций шёл 14 с, экран выключил кнопку и назвал её идущим шагом через 0,5 с, нажатие настоящей мышью за 1,5 с не породило ни запроса, ни отмены, ни второго итога, а сам запуск дошёл до конца с ровно одним итогом. Случай, когда ■ уже нажата и робот останавливается, назван теми же словами и тоже не выдаётся за успех. Границы: гибель самого бэкенда и отладка роботов под Linux в этом релизе не проверялись, остановка по-прежнему работает на границе шага, а не посреди начатого действия;
  • Робот в режиме «PHP на машине разработчика» снова запускается на Linux: продукт больше не указывает системному PHP, где искать расширения, поэтому модули, поставленные ОС, загружаются как раньше (скрипт умирал с «Unable to load dynamic library» / «Call to undefined function curl_init()»); на Windows собственные расширения передаются как раньше;

8.1.5 (13.10.2026)

  • пути Docker /d/... снова видны File.is_exist (робот больше не quit на settings.json);
  • по умолчанию PHP запускается на хосте, не в Docker;
  • close_all_tabs на встроенном браузере не трогает ChromeDriver; при одной вкладке — no-op;
  • CV/OCR на Windows снова доступен с хоста — контейнер публикует порт (-p), а не --net host;
  • монитор ресурсов — убрана плашка Captcha; в таблице все живые контейнеры роботов (метка/префикс), а не только те, у кого успел прийти docker stats;
  • встроенный Chromium снова принимает DOM/ввод из скрипта, если TEMP не %LocalAppData%\Temp (раньше ChromeDriver путал окно Studio с гостем);
  • Визуальный робот: структурный контур робота стал проходимым с клавиатуры и понятным программам чтения с экрана. Раньше его строки были для клавиатуры недоступны: на WF-поверхностях было 32 клавиатурные остановки, а стрелки по шагам ничего не двигали — робота правили только мышью. Теперь весь контур — одна клавиатурная остановка (на WF-поверхностях их стало 12): стрелки вверх/вниз водят выбор по шагам, вправо раскрывает контейнер и ведёт в него, влево возвращает к родителю, Home/End ведут к первому и последнему шагу, буква — к следующему шагу с этим именем, Enter открывает меню выбранного шага, а закрытое меню возвращает фокус тому же шагу, Delete снимает правку этого шага из очереди; мышь по-прежнему делает то, что делала. Меню шага и палитра конструкций тоже проходятся с клавиатуры — из поля поиска палитры в список ведёт стрелка вниз, а у конструкции названо её место в общем списке. Выбранный шаг, раскрытый контейнер и шаг, на котором робот встал, помечены так, что их различает программа чтения с экрана, а вердикт панели проверки и отказ произносятся вслух (живая область), а не только показаны цветом. Границы: как именно эти метки озвучивает конкретная программа чтения с экрана, не проверялось — проверены сами роли, состояния и путь клавиатуры в работающем продукте; имя строки пока называет тип дважды («DebugMessageDebugMessage…»), это правит следующий слой того же трека; обратный путь Shift+Tab от контура до кнопки сохранения в первой проверке не дошёл (45 шагов), и этим же слоем выяснено, что 45 было границей самой пробы, а не экрана: на чистом экране обратный ход доходит до кнопки сохранения за 12 шагов; клавиатурная семантика панелей свойств и проверки сделана частично;
  • Визуальный робот: состояние шага в контуре стало читаться без наведения мыши и без различения цветом. Раньше о том, что шаг исполняется, упал, стоит на точке, не дошёл до конца или скрыт, говорили цвет, тонкая полоска и значок, а настоящее объяснение пряталось в подсказке: его было видно только наведя курсор, и программа чтения с экрана его не произносила. Теперь строка шага несёт своё состояние словами — «исполняется», «на паузе», «отказ», «не завершён», «точка останова», «скрыт», «не сохранён», — и эти слова лежат на самой строке: их видно без наведения и их читает программа чтения с экрана. У отказа тем же текстом показана причина, а не только в подсказке, и точка останова остаётся на строке, пока робот идёт, не перекрывая его состояние. Пока робот читается с диска, вместо пустой панели показывается заготовка строк; пустой контур больше не молчит — в нём одна кнопка «Прочитать заново». Имя шага перестало называть свой тип дважды: было «DebugMessageDebugMessage», стало «DebugMessage». Проверено в работающем продукте на роботе с отказом: из 15 шагов состоянием названы 7, и все 7 читаются без текста значка; на собранном прямо в окне роботе с точкой останова и падением — 3 полосатых строки, и все 3 названы словами, плюс 2 пойманных по ходу запуска исполняемых шага, тоже названных; подсказок, остающихся единственным источником смысла, — 0, имён с удвоенным типом — 0; соседние проверки отладки (подсветка исполнения, пауза по точке, жизнь рана на паузе) зелёные. Границы: как именно эти метки озвучивает конкретная программа чтения с экрана, не проверялось — проверена разметка в работающем продукте, а не дерево доступности; состояния «скрыт» и «не сохранён» полосой в живом прогоне не пойманы (первое требует робота с непонятым исполнителем шагом, второе видно в прогоне как счётчик несохранённых правок), заготовка строк и пустой контур покрыты тестами оболочки, а не живым прогоном; переходы между состояниями и поведение при «уменьшенном движении» — следующий слой того же трека;
  • Визуальный робот: подсветка шагов в контуре теперь движется только вместе со сменой состояния, а системная просьба «уменьшить количество движения» гасит её целиком. Раньше состояние шага переключалось мгновенно, и «исполняется» было неотличимо от «только что было» (на роботе с циклом в 300 проходов — ни одного анимированного перехода), а настройка ОС над контуром не властвовала: по ней продолжали шевелиться элементы, пришедшие из общего интерфейса. Теперь смена состояния шага (исполняется, пауза, отказ, отработал, точка останова) ведётся коротким переходом цвета той же полосы и глифа — той же длительностью, что наведение и фокус, а при уменьшенном движении на поверхностях визуальных роботов не остаётся ни одного анимированного элемента. Проверено живьём: за прогон робота с циклом в 300 проходов начинается 30 переходов, и все 30 заканчиваются (ни одного оборванного), состояние строки переписывается не чаще одного раза на событие (343 записи на 302 прохода), ни одна строка контура при этом не пересоздаётся, а число движущихся элементов на экране робота меняется с 3 на 41 и на 0 под системной просьбой — и обратно на 41, как только просьбу снять;
  • Визуальный робот: экран робота стал приспосабливаться к собственной ширине, а его текст и кнопки — быть читаемыми. Раньше ширины панелей были заданы на все случаи: если месту робота доставало тесно, подпись строки уезжала за край с горизонтальной прокруткой и без всякого предупреждения, часть подписей была нарисована серым, который не отличался от фона (самый плохой контраст текста — 1,84 при пороге доступности 4,5), а кое-какие цели клика были меньше 24×24 точки. Теперь уровень раскладки считается от ширины самого экрана робота, а не от размера окна (окну в 1024 точки соответствует поверхность 418 точки — по ширине окна раскладка осталась бы полной, хотя места там хватает только на рельсы); боковые панели на узком месте сворачиваются в узкие рельсы с кнопкой возврата и, пока свёрнуты, не перехватывают переключение Tab, так что клавиатура не бродит по невидимому; словесные подписи перешли на цвета, которые держат контраст в обеих темах, а цели клика и строк выросли до порога. Проверено живьём в работающем продукте на четырёх ширинах окна (1920 / 1440 / 1280 / 1024) и в обеих темах: горизонтальной прокрутки контура не осталось (было 166 точек на узкой ширине), подписей с контрастом ниже порога — 0 (было 37 на худшем замере, сам худший скор 1,84 → 5,23), целей клика меньше 24×24 точки — 0 (было 35 и 41), обрезанных подписей без пояснения в подсказке — 0; экран того же робота дополнительно снят в трёх языках интерфейса и обеих темах (шесть кадров). Границы: панель свойств на длинных выражениях по-прежнему прокручивается сама — это следующий слой того же трека; названия шагов печатает исполнитель, поэтому в английском и турецком окнах строки контура остаются русскими, а страница не сообщает программам чтения с экрана свой язык (везде «en») — обе вещи найдены этой сеткой и тоже переданы следующему слою; экран робота в две тысячи шагов этим срезом не проверялся, и как именно раскладку ведут разрешения 768 и ниже на других ОС, не мерялось;
  • Визуальный робот: поля палитры и панели свойств получили настоящие подписи, а длинные значения — перенос вместо горизонтальной прокрутки. Раньше имя поля держалось только внутри самого поля как подсказка при вводе: программа чтения с экрана произносила вместо «Url» всё, что стояло в строке, обязательный аргумент, которого нет в файле, ничем не отличался от заполненного, группы конструкций не говорили, сколько в них элементов, а панель свойств на длинном выражении уезжала за край с горизонтальной прокруткой (24 точки на широком экране и 64 на узком). Теперь у каждого поля есть подпись, которая не исчезает при вводе; чем записано значение — выражением, переменной или литералом — видно в самой строке поля, а не только под курсором; незаполненный обязательный аргумент назван словом и помечен на самой строке; группы палитры несут число своих элементов, найденные поиском совпадения подсвечены, а описание конструкции показывается, когда она в фокусе клавиатуры, и не только под мышью; панель свойств переносит длинные значения вместо прокрутки; рамка поля стала достаточно контрастной, чтобы её было видно (1,47 → 3,62 при пороге 3) — в обеих темах; страница робота теперь сообщает программам чтения с экрана язык интерфейса, а не английский всегда. Проверено живьём в работающем продукте: полей, живущих одной подсказкой, — 0; доступное имя без терминов значка читают 4 поля контура из 4, 1 поле палитры из 1 и 3 поля панели свойств из 3 — и на исполняемом, и на блокированном роботе; горизонтальной прокрутки панели свойств — 0 точек (было 24 и 64); подписей и рамок с контрастом ниже порога — 0 из двадцати замеренных сочетаний «элемент × тема × область», самый плохой контраст текста — 5,23 в светлой теме и 5,90 в тёмной; целей клика меньше 24×24 точки — 0; под системной просьбой «уменьшить количество движения» не остаётся ни одного движущегося элемента (из 51 и из 74); групп палитры со счётчиком — 2 из 2, а фильтр по слову «Web» даёт 2 строки и 2 подсвеченных совпадения; язык страницы в русском интерфейсе прочитан «ru» (раньше на всех трёх языках было «en»). Границы: язык страницы переснят живьём только в русском интерфейсе — в английском и турецком правка идёт тем же значением, но числом не покрыта; на разрешениях 1024 и 1280 панель свойств свёрнута, и «все поля названы» там не мерялось; названия шагов и событий отладки печатает исполнитель, поэтому в турецком окне они остаются русскими — это не правка экрана; область проверки на блокированном роботе по-прежнему прокручивается сама (156 точек), и значок сохранённой ревизии объясняет себя только на наведении — обе вещи переданы следующему слою того же трека;
  • Визуальный робот: список замечаний в панели проверки перестал быть лентой строк — замечания одного шага стоят теперь под одним заголовком, заголовок говорит словами, что с этим шагом («блокирует» или «правится здесь»), и печатает число замечаний; блокирующие шаги показываются выше исправляемых; строка замечания стала путём в робот — щелчок или Enter раскрывает свёрнутые блоки и ставит выделение на нужный шаг, а если показать нечего, панель говорит это словами и держит ответ на экране; весь список обходится с клавиатуры (одна остановка Tab и стрелки), длинное замечание переносится, а не уезжает за край; значок сохранённой ревизии теперь печатает слово «ревизия», а не только восемь незнакомых символов. Проверено живьём в работающем продукте: групп замечаний стало 3 вместо 0, заголовков 7 вместо 4, строк, достижимых без мыши, 1 вместо 0 (все три адресованные строки ходятся стрелками), прокрутка области по горизонтали сократилась с 230 до 27 точек; на роботе, подобранном так, что порядок разбора спорит с порядком чтения, замечаний, стоящих ниже исправляемых, — 0 вместо 2; значок, объясняющий себя только наведением, в контуре — 0 вместо 1. Границы: 27 точек горизонтальной прокрутки области проверки на узких разрешениях остались и переданы следующему слою того же трека; случай «показать нечего» живьём не мерялся (у всех замечаний подобранного робота есть адрес шага) и доказан тестом, как и группировка двух замечаний одного шага (в корпусе такого шага нет); кнопка «Сохранить» общего тулбара по-прежнему объясняет себя только наведением — она вне экрана робота;
  • Визуальный робот: снимок значений на паузе стал таблицей, а слова о паузе, итоге и отказе — видимыми на экране, а не только под курсором. Раньше переменные робота на паузе печатались лентой: у строк не было ни колонок, ни ролей, программа чтения с экрана не могла сказать, где имя, где тип, где значение, а чем записано значение (текст, число, «скрыто», «не показывается»), у одних строк было напечатано прямо внутри значения и путалось с ним, а у других не было видно вовсе; команды паузы и отказ «запустить нельзя» существовали только в подсказке кнопки. Теперь снимок — таблица с колонками «имя», «тип», «значение», «состояние»: у строки есть своё имя, каждая ячейка адресована своей колонке, род значения несёт отдельный знак и в самом значении больше не повторяется, длинное значение по-прежнему обрезается с честным числом, но уже в своей колонке. Экран паузы и конец запуска произносятся вслух программам чтения с экрана: «Пауза рана на шаге …», «Итог рана: … · N мс», а отказ запустить робота, который уже стоит на паузе или идёт, напечатан на экране теми же словами, что и в подсказке. Клавиатуре больше не нужно обходить весь робот, чтобы дотянуться до «продолжить»: от выбранного шага до неё один ход Tab (раньше тридцать шагов, и экран по пути покидался). Колонка свойств робота на паузе перестала уезжать за своё место — было 4050 точек горизонтальной прокрутки при колонке в 350. Этим же замером нашлись и закрыты три мелочи, не видимые по отдельности: список замечаний в панели проверки больше не прокручивается сам (27 → 0), подписи, разобранные на отдельные куски, собраны в одну строку (4 → 0), а кнопка «Сохранить» вне экрана робота получила имя, которого у неё раньше не было. Проверено живьём в работающем продукте: строк таблицы с ролью было 0 — стало 5, ячеек, привязанных к своей колонке, 0 — 15, строк с родом на своём знаке 0 — 5 из 5, живых областей, называющих паузу и итог, 0 — по одной на каждое; текстов с контрастом ниже порога читаемости — 0 и в светлой, и в тёмной теме, целей клика меньше 24 × 24 точек — 0. Границы: замер снят на светлой теме и полном уровне раскладки — узкие уровни, снимок внутри штатного перехвата исключения (TryCatch) и значения-коллекции (массив, список) этим слоем не проверялись, обратный ход Shift+Tab от строки шага до команд по-прежнему идёт через весь документ, а цена кадра на паузе (медиана 31,2 мс) больше предела, который поставит следующий слой этого трека;
  • Визуальный робот: большой робот назван числом, а не обещанием. Экран собирает и держит две тысячи шагов без расплывчатой «виртуализации»: на модели в 2000 шагов (5997 свойств, файл в 22 000 строк) смонтировано 32 185 узлов страницы при 25 видимых в кадре — в восемьдесят раз больше видимого, прокрутка проходит 55 320 из 56 051 точки, а кадр остаётся на частоте экрана (медиана 17,4…17,5 мс при том, что сам экран отдаёт 17,4…17,6 мс), то есть виртуализация контуру не нужна, и это сказано числом. Заодно закрыто поведение при холодном открытии файла: раньше первый кадр успевал показаться на старой ширине, список палитры растягивался, а его подпись перепрыгивала на другую строку, кнопки возврата панелей и значок числа шагов доезжали справа уже после отрисовки и сдвигали соседей — теперь всё это собрано до первого кадра, и смещение вёрстки при холодном открытии большого файла стало 0 (было 0,0028 и 0,00366 в двух прогонах). Названо честное нарушение: время до первой отрисовки на двух тысячах шагов — 542,8 мс при пороге 400 мс, и 427 мс из них занимает отчёт исполнителя о структуре файла, а не страница (на фронте остаётся 115,8 мс); ниже перелома порог держится — 601 шаг 212,8 мс, 1000 шагов 281,4 мс, — значит перелом лежит между 1000 и 2000, и судьба самого порога на таком объёме оставлена решением финального слоя трека, а не объявлена выполненной. Границы: плотность палитры и панели свойств на двух тысячах шагов, тёмная тема и переключение вкладки без перезапуска окна этим слоем не мерялись; порог «16 мс на кадр» на экране 60 Гц неизмерим в принципе, поэтому проверка меряет «не больше пола стенда плюс 3 мс»;
  • Визуальный робот: переменные робота стало можно объявлять массивом. Раньше редактор позволял только шесть скалярных типов; теперь к каждому из них добавлены одномерный массив и двумерная матрица — восемнадцать типов, и список в панели переменных печатается ровно тем же порядком, каким их разрешает исполнитель. Одномерному массиву можно задать значение списком элементов, и по нему работает цикл «для каждого элемента»: робот, собранный прямо в редакторе (объявление → цикл → шаг тела), исполняется до итога «готово» и обращается к текущему элементу в теле как к обычной переменной. Матрице значение присвоить нельзя — это ограничение читателя старой Studio, измеренное на ней, а не выдумка редактора: попытка ввести значение не портит файл, редактор словами называет, что многомерному объявлению значение не присваивается, начатая правка остаётся в очереди и чип «не сохранено» на месте, а робот на диске не переписывается;
  • Визуальный робот: правка, приехавшая на перечитываемый или не показанный сейчас робота, больше не исчезает молча. Раньше экран продолжал держать введённое в поле значение там, где бэкенд его уже не принимал (сразу после любого сохранения файл перечитывается, и всё, что успели ввести в это окно, терялось, никак об этом не сказав). Теперь такое поле отвечает словом — «документ перечитывается — правка не принята, дождитесь конца перечитывания» или «документ не показан — правка не принята» — и говорит это до того, как правка попала в очередь, а не вместо неё. Назван и остаток: текст, введённый в это окно, не возвращается — правка отказана, а не отложена;
  • Визуальный робот: развилка «если» перестала делать вид, что она заполнена, и научилась говорить, по какой ветке она прошла. Раньше новый блок «если» приезжал в робот уже с вписанным условием «ложь»: робот из одного шага внутри «тогда» заканчивался статусом «готово», не выполнив ни одного действия, а запуск рапортовал, что выбрана ветка «иначе», — той ветки в файле не было вовсе. Теперь незаполненное условие названо: собранный прямо в редакторе робот со «если» и двумя шагами показывает «не понято: 1» и словами говорит, что обязательный аргумент «Condition» у «If» в файле не задан или записан пустым, а запуск такого робота заканчивается статусом «не поддержано» без единого побочного действия и без единой подсвеченной строки. Заполненное условие возвращает роботу право запускаться, и запуск называет взятую ветвь: на строке отработавшего шага видно «шаг отработал, взята ветвь тогда» или «взята ветвь иначе», а шаги проигнорированной ветки помечены «ветвь не взята» — то есть не взятая ветка отличается от той, до которой запуск просто не дошёл. Заодно экран перестал держать собственное мнение о файле после сохранения: знак «не понято» снимается по перечитанному к тому моменту роботу, а не по тому, что экран нарисовал сам (было «не понято: 3» до правки и то же число после сохранения — стало 1 и пусто). Проверено живьём в работающем продукте: обе ветки собраны и прогнаны в редакторе, при «[1 = 1]» — «готово · 192 мс», ветвь «тогда», 4 события узла и 4 подсветки, маркеров «взята/чужая» 1 и 0; при «[1 = 2]» — «готово · 168 мс», ветвь «иначе», те же 4 и 4 и те же 1 и 0. Границы: развилка внутри развилки живьём не собиралась; слово «ветвь не взята» мерялось на широком экране и в тёмной теме — на узких уровнях, в светлой теме и в английском и турецком интерфейсах правка идёт общим правилом, но числом не покрыта; установленного продукта с этой правкой пока нет — сборка инсталлятора на этом прогоне упала на своей внутренней ошибке, а замер снят на собранной, но не установленной версии;
  • профиль браузера: пресет собирает Client Hints вместе с User-Agent, живой часовой пояс с летним временем и шум canvas/audio/bounds, а на вкладке включает запрет локального IP через WebRTC; Chromium применяет подсказки через CDP, языки берёт из профиля, а не из языка Studio, и подменяет разрешение экрана;
  • встроенная вкладка применяет профиль — User-Agent с Client Hints, языки, экран, прокси и шум canvas/WebGL/audio/bounds; страница вкладки больше не видит window.electron; запрет локального IP через WebRTC ставится на сессию вкладки; часовой пояс один, по имени из профиля;
  • встроенная вкладка отдаёт из профиля число ядер, память, плотность пикселей, класс процессора и координаты, а локаль Intl ставит тем же вызовом, что и часовой пояс;
  • скрипты профиля встроенной вкладки ставятся по одному, шум audio не обрывает экран, железо и WebGL; видеокарта берётся из полей профиля, плотность пикселей — с окна;
  • профиль браузера: пресет собирает Chrome 152–154 с GREASE Client Hints, часть профилей — Windows 11 в подсказках, видеокарты новее UHD 620, плагины PDF и пустой cpuClass; проверка называет устаревший мажор, пустые плагины, заданный cpuClass и выход без прокси при заданных гео или поясе; страница прокси пишет, применится ли строка, а на пресете видна сводка истории;
  • встроенная вкладка прячет webdriver, дорисовывает window.chrome, срезает хвост Electron из appVersion, отдаёт плагины, шрифты Windows, устройства mediaDevices, голос языка профиля, батарею и «разрешено» для геолокации, шумит readPixels и OffscreenCanvas; availHeight меньше экрана на панель задач, а outerWidth и outerHeight совпадают с экраном профиля, а не с размером окна; папка cookies профиля получает свой раздел сессии;
  • внешний Chrome робота получает ту же поверхность, что встроенная вкладка (Client Hints, часовой пояс, языки, плагины, шрифты, батарея, размер окна); SOCKS с логином на вкладке идёт через локальный переходник, а заголовок Accept-Language берётся из списка языков профиля; модульный воркер тоже прячет webdriver;
  • встроенная вкладка поднимает Shadowsocks ss:// (aes-128-gcm, aes-256-gcm и chacha20-ietf-poly1305) через локальный переходник и ставит расширения Selenium из папки, zip или crx; список шифров SSL по-прежнему только у отдельного Chrome;
  • мини-тур «Показать интерфейс» из диалога «Начните здесь» (дерево, редактор, браузер, чат, справка) и e2e-скрипт проверки онбординга;
  • дерево окон: в узкой панели заголовок узла больше не переносится и не печатается второй строкой поверх соседних узлов — узел держится одной строкой, длинное имя срезано многоточием, а целиком его видно во всплывающей подсказке;
  • панель «Элементы DOM» → вкладка «Инспектор»: свойства элемента сгруппированы в сворачиваемые блоки по категориям вместо повторяющейся колонки категории, у каждого значения появилась кнопка копирования в буфер (у логических значений её нет — в ячейке чекбокс), а в тулбаре — копирование XPath элемента, обновление свойств и метка времени снимка. Копирование XPath выключено, когда ответ пришёл без адреса элемента: точка вне элемента даёт свойства с пустым xpath, и раньше такая кнопка выглядела рабочей, но молча ничего не делала. Поиск раскрывает свёрнутые блоки, а совпадение с названием категории оставляет блок целиком;
  • дерево UI: панель больше не растягивает список хостов на всю свою высоту и не выталкивает дерево за нижнюю границу — дерево целиком видно в панели, а строка поиска и список хостов держат свою высоту; подписи узлов, как и в дереве окон, идут одной строкой с многоточием и полным именем в подсказке;
  • инспектор окон и инспектор UI: кнопка выбора окна и элемента снова выбирает — клик левой или средней кнопкой мыши, а повторное нажатие на кнопку отменяет ожидание и возвращает её в исходное состояние; отменённый выбор не сбрасывает уже выбранное окно или элемент;
  • Помощник кода: дерево и сниппеты Windows и Electron собираются из одного описания — узлы «получить позицию курсора» и «щелкнуть правой кнопкой мыши» снова ведут к своим файлам, у узла «получить версию Windows» появились сниппеты и описание в обеих ставках, а Python-сниппеты доехали до Windows-ставки (845 файлов);
  • помощник кода: под деревом показано описание выбранного узла — как в Windows-версии; у робота на Python описание на Python, а если скрипт не открыт — общий текст;
  • Помощник кода: поиск по дереву ищет по обоим именам узла — в русской ставке «browser» находит «Браузер», в английской «мышь» находит «Mouse»; запрос прощает регистр, разделители, слитное написание («proxylist» ловит «Proxy List») и одну опечатку («brower» ловит «Browser»), а правило одно для Windows-версии и Electron, поэтому обе ставки находят одни и те же узлы;
  • Помощник кода: вставка перестала молчать — если в редакторе нет открытого скрипта, открыт визуальный робот-конструктор или у узла нет сниппета на языке открытого скрипта, панель называет причину отказа («откройте скрипт php, cs, js или py», «визуальный робот собирается из активностей, текст в него добавить нельзя», «для этой конструкции нет сниппета на языке PY») — в Windows-версии и Electron по одному правилу;
  • помощник кода: у ответа сервера появилась причина — если папка с готовыми фрагментами не установлена, такого узла в ней нет или файл фрагмента не читается, панель называет это прямо, а не прячет за «для этой конструкции нет сниппета на языке PY»;
  • если ChromeDriver потерял сессию (invalid session id), она поднимается заново — переход по адресу снова работает, лог не засыпается одной и той же ошибкой;
  • новый адрес в браузере больше не ждёт таймаут предыдущего сайта — зависший ya.ru не блокирует google.com;
  • Стоп и новый адрес сразу рвут текущую загрузку — кнопки не ждут ответа сервера, старый сайт не продолжает грузиться;
  • ошибка загрузки страницы в тёмной теме больше не чёрным по тёмному — текст светлый, фон как у студии;
  • во время загрузки страницы снова можно открыть вкладку и контекстное меню — плюс и меню не ждут ChromeDriver;
  • «не показывать при запуске» для стартовых диалогов переживает перезапуск — отказ пишется в настройки, а не в профиль, который меняется при смене порта;
  • диалог настроек снова сохраняет — переключатель подсветки пробелов в редакторе уходил на сервер текстом вместо флага, из-за чего сервер отвергал весь набор правок и не сохранялась ни одна вкладка; пароль из одних букв и цифр больше не блокирует сохранение, а если сервер всё же отверг правки, окно остаётся открытым и показывает несохранённые изменения, а не закрывается молча;
  • панель «Элементы DOM» → вкладка «Инспектор»: кнопка подсветки элемента — страница прокручивается к выбранному элементу и обводит его красной рамкой; через полторы секунды рамка снимается сама и прежнее оформление элемента возвращается. Кнопка недоступна, пока элемент не выбран, а при отказе страницы показывает предупреждение;
  • панели «Элементы DOM» и «Окна» (дерево, список, инспектор): строка поиска больше не растягивается на всю панель — поле высотой в одну строку под тулбаром, а свойства и дерево остаются под ним и не уезжают за край панели;
  • панель «Элементы DOM» (Инспектор): поиск подсвечивает совпадения прямо в именах и значениях свойств и показывает счётчик «Найдено: N»;
  • панель «Элементы DOM» (Инспектор): у поиска появился фильтр по категориям свойств, а звездо́чкой свойство закрепляется в блоке «Избранные» поверх списка — закрепления сохраняются между запусками;
  • панель «Элементы DOM» (Инспектор): горячие клавиши — Ctrl+F открывает поиск по свойствам, F5 обновляет снимок, Ctrl+Shift+C подсвечивает элемент на странице, Esc закрывает поиск и просмотр HTML;
  • панель «Элементы DOM» (Инспектор): снимок свойств экспортируется в файл Markdown или JSON вместе с XPath и меткой времени;
  • панель «Элементы DOM» (Инспектор): кнопка «HTML элемента» открывает outer HTML с отступами по вложенности — разметку можно прочитать и скопировать;
  • панель «Элементы DOM» (Инспектор): появилась категория «Вычисленные стили» — все computed-свойства элемента (цвет, шрифты, отступы и т.д.) отдельным сворачиваемым блоком; они участвуют в поиске, фильтре категорий, закреплении и экспорте;
  • панель «Элементы DOM» (Инспектор): сверху показана диаграмма блочной модели элемента — вложенные кольца отступа, границы и полей с числами по сторонам и размером содержимого, как во вкладке Computed браузерного DevTools;
  • панель «Элементы DOM» (Инспектор): над списком свойств появилась цепочка предков элемента (html › body › … › сам элемент) — клик по любому уровню переносит инспектор на него;
  • панель «Элементы DOM» (Инспектор): кнопка «История» хранит последние осмотренные элементы и возвращает инспектор к любому из них одним кликом;
  • плагины JSON, XML, словарь, преобразователь дат и процессы собраны под net8 — объект снова связан с id, недоступный браузер не роняет бэкенд;
  • относительный путь в командах «…from_file» разбирает хост от папки запущенного скрипта — как в Windows-Studio, а не от того, что сам робот дописал к пути;
  • плагин «Массив строк» (Plgn_CollectionsArray) собран под net8 — все 16 команд со списком работают под Windows-именами, список передаётся на проводе тем же id, что и словарь;
  • плагин «Генератор пароля» (Plgn_PasswordGenerator) собран под net8 — команда generate отвечает под Windows-именем, наборы символов и длина совпадают с Windows (в том числе русские буквы и спецсимволы);
  • плагин «Различать, сопоставлять и исправлять» (Plgn_DiffMatchPatch) собран под net8 — шесть команд сравнения, поиска и сшивки текста работают под Windows-именами, наложенный патч даёт тот же результат, что под Windows;
  • плагин «CSV» (Plgn_CSV) собран под net8 — все 23 команды работы с файлом читаются под Windows-именами, разделитель задаётся один раз, а запись строки и очистка столбца ведут те же легаси-особенности, что под Windows;
  • плагин «Конвертер форматов» (Plgn_FormatConverter) собран под net8 — convert_xls работает под Windows-именем: xls конвертируется в xlsx тем же FreeSpire.XLS, что и в Windows, а пакет плагина дополнен нативной библиотекой SkiaSharp для Linux;
  • Визуальный робот: отказ снять используемую переменную называет шаги, которые её читают, а не только число мест;
  • Визуальный робот: защищённое значение на паузе и в журнале показано как скрытое — тела пароля в панели и в логе нет;
  • Визуальный робот: если воркер умер на точке останова, шаг назван незавершённым, а не пустым;
  • Визуальный робот: замечания разбора идут в порядке файла, панель по-прежнему поднимает блокирующие выше исправляемых;
  • помощник кода: кнопка «найти конструкцию строки» подсвечивает в дереве узел, фрагмент которого стоит под курсором, — путь до него раскрывается сам, описание показывается сразу, а если строка есть в нескольких конструкциях, панель называет их число без модального окна;
  • Помощник кода: дерево узлов в Studio, Electron и поиске собирает один общий код — кривая иконка узла больше не обнуляет всё дерево, а раздел «Система» скрывается и в русском интерфейсе Electron на Linux и macOS;
  • помощник кода: повторное открытие панели больше не сворачивает её;
  • Исправлено: rar_folder() (folder_tools) - архивирует через folder->rar(), а не через bat с нерабочим ключом -mdE (архив не создавался) и без проверки кода; имя папки с подпапками больше не склеивается, Electron-копия помощника больше не зовёт несуществующий метод;
  • Vision: Tesseract OCR: get_segmented_regions и get_region_by_text работают и в Linux/Electron (были недоступны), область поиска по тексту ищется по координатам слов, а не по индексу символа;
  • Помощник кода: дерево в Electron читает тот же обходчик, что и Studio, корпус двух ставок синхронизирован (появился узел «получить версию Windows»), панель измеряется живым смоуком B39;
  • модели браузера в списке как в Studio 7 — Chrome/Firefox/MS Edge/… Selenium WebDriver (и Headless), а не короткие Chrome/Firefox;
  • set_model("Chromium") как в классической Studio 7 переключает на Chromium (Internal) без минутного таймаута Selenium; get_model() для встроенного браузера возвращает Chromium (Internal);
  • Визуальный робот: на Windows робот `.wf` запускается через net48-мост (полный спектр Activity классической Studio); Linux остаётся на подмножестве зеркала; зашифрованные `.encoded_wf` и шаг отладки на мосту — честный отказ;
  • Визуальный робот: ▶ передаёт мосту порт API Studio (не дефолт фабрики 7010) — иначе ран не доходит до строки «итог» в журнале;
  • Визуальный робот: мост компилирует VB-выражения после шима типов; Assign из палитры пишется как OutArgument/VariableReference (как в классической Studio), а не To="[n]" — иначе мост не грузит робота;
  • тихая установка больше не висит на UAC Docker и загрузке образов — образы ставятся только в интерактивном мастере;
  • На Windows визуальный робот (.wf) исполняется тем же движком .NET Framework 4.8, что и классическая Studio: в коробке рядом с редакторным воркером лежит WfBridge. Linux по-прежнему гоняет подмножество, которое умеет net8-воркер; зашифрованный робот и шаг отладки на мосту отвергаются по имени, а не молча пропускаются. Цикл ForEach из палитры подписывается как строка, поэтому тело с [item] на Windows доходит до конца так же, как в классической Studio. Шаблоны Templates WF и учебные Test Samples WF лежат рядом с программой, как в классической Studio;
  • Координатные команды мыши в браузере Electron переставляют настоящий системный указатель: mouse_move_to, mouse_click, mouse_double_click и mouse_down/mouse_up отвечали false или били не туда, потому что точка страницы пересчитывалась по формуле рамки окна приложения, а в этом продукте рамка несимметрична - указатель не доезжал до страницы браузера. Теперь точка берётся из самой области отрисовки браузера вместе с масштабом монитора и зумом страницы, поэтому клик, двойной клик и наведение по координатам вьюпорта работают на живой странице: стиль CSS :hover загорается, а скрипты страницы получают события ровно так же, как когда человек двигает мышь. Команды, адресованные экрану (move_on_screen), и событийная семья send_mouse_* ведут себя как раньше. На Linux координатная семья по-прежнему отвечает отказом, а не делает вид, что кликнула: канал указателя этой платформы не реализован;
  • Печать всей страницы браузера из робота работает в браузере Electron: print_body отвечал false и не создавал файла, потому что снимок всей страницы за этим вызовом не был реализован для движков этого семейства, а поиску по картинке страницы (get_pos_in_webpage_picture) было негде искать. Теперь страница снимается целиком, включая прокрутку: длинный чек или таблицу с прокруткой можно сохранить одной картинкой и искать по ней; снятие видимой части (print_screen) работало и раньше, оно не изменилось. В этом же продукте для Firefox снимок всей страницы пока недоступен;
  • Чтение страницы браузера из робота больше не возвращает пустоту в браузере Electron: get_selected_text, get_cpu_class, get_referer, get_ready_state, save_page_as, get_parents_count и счётчик фреймов у is_all_completed строили JavaScript так, что значение вычислялось, но не возвращалось, а Selenium-движок выполняет скрипт как тело функции - поэтому выделенный текст приходил пустой строкой, платформа и реферер тоже пустыми, сохранение страницы записывало пустой файл, готовность страницы приходила пустой, а при числе фреймов -1 цикл по фреймам не запускался и is_all_completed объявлял все фреймы загруженными. В Windows-студии те же вызовы работали, потому что её движки браузеров игнорируют этот маркер; теперь робот получает одинаковый ответ при чтении страницы в обоих продуктах;
  • Робот с несколькими открытыми вкладками браузера больше не читает окно программы вместо страницы: после navigate адрес и исходник страницы могли относиться к оболочке, хотя вкладка уже загрузилась, - get_url отвечал стартовой страницей самой программы, и все последующие чтения текста давали пустоту. Теперь браузер привязывается к той вкладке, на которой действительно стоит запрошенный адрес, прежде чем читать дальше, а страница, до которой адрес не дошёл, считается незагрузившейся, а не молча пустой;
  • В «Настройки» — «Браузер» вернулось поле прокси: оно показывает прокси текущей вкладки в виде «адрес[;логин;пароль]», «Применить» пишет его в профиль вкладки и пересоздаёт браузер, пустая строка снимает прокси. Значение принадлежит профилю вкладки, поэтому в отличие от остальных полей диалога оно не сохраняется вместе с настройками приложения;
  • Поиск в «Настройках» больше не ограничивается заголовками страниц: теперь он читает весь справочный корпус страницы - описания разделов, подписи полей, подсказки и текст «?» - на всех трёх языках интерфейса, а запрос из нескольких слов оставляет только те страницы, где есть каждое слово, поэтому «xdebug port» или «idekey» ведут на страницу PHP, хотя в её заголовке этих слов нет. Настройки ИИ-ассистента ищут так же;
  • Отладка PHP на интерпретаторе разработчика больше не навязывает модуль Xdebug, если этот интерпретатор его не грузит: чужой PHP с неподходящей сборкой Xdebug (Thread Safety или версия Zend API) начинал каждый запуск робота предупреждением «Cannot load Xdebug - it was built with configuration ...», а страница «Настройки - PHP» теперь прямо говорит, подключится ли отладчик и почему нет;
  • Чистая Windows-установка больше не открывается окном «Docker недоступен» с выключенным распознаванием текста (OCR): образ CV Tools был единственным из пяти, который предлагался неотмеченным, поэтому не загружался, хотя его архив ехал в коробке;
  • Настройки программы и настройки профиля вкладки разложены по блокам с подписями, и у каждой опции появился «?» — коротко объясняет, за что она отвечает и к чему приводит её изменение, а кнопка в шапке держит справа панель «Справка по разделу» со всеми пояснениями открытого блока;
  • В диалоге настроек появилась страница «Python»: режим запуска (встроенный контейнер или машина разработчика), папка с интерпретатором и снимок «что запустится сейчас», который переключается по галке сразу — до Save. Установка requirements.txt стала кнопкой там же, а пункт меню «Сервис → Инструменты Python» убран;
  • «Python → Пакеты» — менеджер библиотек робота: список читается прямо с папки установки (имя и версия, без запуска интерпретатора), пакет можно добавить по одному или сразу несколько, снять либо поставить всё из requirements.txt; requirements.txt правится только по фактическому успеху pip, а снятие убирает с диска все копии одного имени;
  • PHP получила ту же рамку, что и Python: страница «PHP → Интерпретатор» с режимом запуска и снимком «что запустится сейчас» (галка «на машине разработчика» меняет его до Save); прежняя галка переехала туда с «Роботы → Общие»;
  • «PHP → Расширения» — каталог модулей рядом с тем php.exe, который реально используется, с включением и выключением на месте: продукт записывает php.ini-ext и затем проверяет результат настоящим php -m, поэтому в списке показывается уже загруженный модуль, а не обещание. Если набор задаёт пакетная система ОС или docker-образ, страница честно говорит, что она только для чтения, и почему;
  • Если при установке Docker недоступен, первый запуск сам выполняет PHP и Python на хосте и ставит папку PHP на интерпретатор рядом с программой. В настройках появилось поле папки PHP рядом с полем Python. Сообщение больше не говорит, что PHP недоступен: выполнение в образе Docker отключено, оба языка работают только на хосте;
  • В диалоге профиля вкладки появился антидетект-пресет: User-Agent, язык, часовой пояс, гео, железо, экран и WebGL заполняются из одного регионального набора (Россия, Германия, Великобритания, Польша, Нидерланды, США — или случайный связный), и рядом работает проверка консистентности: противоречащие друг другу поля больше не применяются молча, диалог показывает ошибки и предупреждения с пояснением и просит подтвердить «применить всё равно»;
  • Диалог «Шаблоны для вставки в редактор по ключам» больше не теряет библиотеку: удаление шаблона и сохранение правки перечитывают файл перед записью, поэтому список ключей и содержимое файла расходятся только вместе; вставка по Ctrl+↓ без выбранного скрипта или с пустым шаблоном не трогает редактор, а строки списка больше не вытаскиваются перетаскиванием наружу;
  • Импорт набора шаблонов объединяет его с текущим по ключам: новые добавляются, совпавшие заменяются, остальное остаётся, и диалог показывает сколько ключей добавилось. Экспорт и импорт идут через оболочку — сервер отдаёт и принимает содержимое, а файл пишет приложение, поэтому сорванная запись показывается ошибкой, а не молчаливым «сохранено». Окно шаблонов осталось только в Студии — в Runtime-сборке его больше нет;
  • excel.cut_range_to_clipboard и excel.copy_range_to_clipboard: диапазон наконец попадает в системный буфер обмена (раньше он оставался пустым), а вырезание ещё и очищает ячейки — текст буфера пишет сам продукт, а не Excel, поэтому он доживает до вставки;
  • Шифрование текста: пароль теперь участвует в ключе, поэтому crypt_text даёт разные контейнеры для разных паролей, а uncrypt_text на неверном пароле возвращает пустую строку, а не чужой текст. Ранее закодированные значения остаются читаемыми;
  • Коробка Runtime подписана отдельно от Студии: мастер установки, список компонентов, ярлык и заголовок окна до ответа API называют «XWeb Human Emulator RT», а не «XWeb Human Emulator Studio». Каталог установки и пути к данным не менялись;
  • Исполнитель .wf больше не пишет в вывод робота: строки рана живут на своей закладке «Журнал WF» в панели отладки, на «Выводе» остаётся только то, что печатает сам робот, а «Все» по-прежнему показывает и то и другое в порядке появления;
  • Цикл над списком, записанным прямо в поле Values без отдельной переменной, проводится по одному разу на каждый элемент, а не один раз на весь список; шаг тела, который читает [item], больше не отказывает — проходов ровно столько, сколько элементов в списке;
  • Папки «Мои скрипты» и PHP из настроек больше не уезжают в корень диска: путь, записанный относительно папки программы (так его хранила классическая версия), раскрывается от неё, а не от текущего диска, — после чистой установки на C: роботы лежат там, где их ищет панель;
  • Страница «PHP → Интерпретатор»: предупреждение загрузки модулей больше не прячется внутри строки версии — оно отдельной строкой, а PHP, который ставил не установщик, помечается как чужой и не получает наш набор расширений (отсюда бралось «Unable to load dynamic library 'curl' … C:\php\ext»);
  • Установка на Windows ставит локальный пакет PHP по умолчанию: раньше галка была снята, и программа молча брала php.exe из PATH;
  • Если Docker Desktop в момент запуска ещё просыпается, программа больше не объявляет его выключенным: окно говорит «ещё запускается», не предлагает от него отказаться и даёт кнопку «Проверить снова» без перезапуска, а PHP и Python не переключаются на хост по такому неверному ответу;
  • Браузер робота, который перестал отвечать, больше не блокирует остальные браузеры того же процесса Студии или Runtime: у каждого браузера теперь своя блокировка команд вместо одной на весь процесс, а вызов, заставший свой браузер занятым, отказывает через 30 секунд - отдаёт пустой результат и оставляет предупреждение в логе вместо вечного ожидания. Браузеры по-прежнему создаются по одному, поэтому один и тот же профиль не открывается дважды;
  • Браузер, который перестал отвечать, больше не зависает навсегда: Студия и Runtime сами замечают команду, которую Chromium не вернул (браузер держит её дольше 35 секунд), пересобирают сессию этого браузера и снова начинают его читать - запуск робота в такой браузер отвечает за секунды вместо минуты молчания, а читающие методы страницы возвращают данные, а не пустой результат. Косметическая подготовка запуска (сброс масштаба, скрытие полосы прогресса, снятие CapsLock) больше не мешает роботу: если браузер в этот момент занят чужой командой, подготовка пропускается, а её ожидание ограничено двумя секундами;
  • Вкладка «PHP» в Настройках теперь говорит правду о том, как именно запускается робот. Версия PHP и предупреждение интерпретатора раньше мерились голым `php -v`, то есть собственным конфигом интерпретатора: клиент, держащий PHP в `C:\php`, видел там «Unable to load dynamic library 'curl'», тогда как робот, стартующий со своими аргументами, таких строк не печатал. Теперь и то, и другое спрашивается с теми же `-c` и `-d`, что передаёт робот. Страница также явно говорит, если указанной папки PHP нет и `php.exe` берётся из PATH — раньше это выглядело как обычная строка «Исполнитель: php.exe». Подсказка про интерпретатор вне папки приложения больше не обещает, что продукт ему ничего не навязывает: робот запускает такой PHP с `php-host.ini` этого продукта, поэтому собственный `php.ini` интерпретатора не действует, а расширения берутся из `php.ini-ext` на странице «Расширения», а если этого файла нет — из папки `ext` рядом с этим интерпретатором;
  • В палитре workflow появился шаг ShellExecute: вызов app.shell_execute, давно доступный из PHP, JS, Python и C#, теперь вставляется как активность workflow с параметрами Operation, Path, командной строкой, папкой и ShowMode;
  • app.run_as_python больше не виснет на большом выводе скрипта: вывод и ошибки читаются параллельно с исполнением, вызов сразу возвращает полный текст (раньше ожидание завершения до чтения вешало Studio до ручного снятия python);
  • run_as_console и run_as_js (запуск node) больше не виснут на большом выводе — та же причина и то же лечение, что у run_as_python;
  • run_as_php заработал: старт с перехватом вывода больше не бросает исключение, большой вывод возвращается как у остальных run_as_*;

8.1.6 (20.10.2026)

  • Визуальный робот: копирование и вставка шага, поиск по контуру, аргументы робота и ссылки на сборки;
  • Визуальный робот: контекстное меню на активности в палитре — вставить в контур и избранное;
  • Визуальный робот: аргументы робота и сборки — отдельная панель, не свойства шага;
  • Визуальный робот: под шагами убрана кнопка «Добавить шаг в конец»;
  • Визуальный робот: иконки тулбара раскрашены по смыслу — отмена, вид, палитра, свойства, переменные, проверка, сохранение;
  • Визуальный робот: палитра — каталог, поиск и закладки иконками с подсказкой; подсказка обязательных аргументов; перетаскивание и несколько шагов; пометка «не выполнять» и комментарий в редакторе;
  • Визуальный робот: переименование шага в строке, замена типа, пустые обязательные у сохранения, свернуть и развернуть контур, закладки, запуск до шага и с шага;
  • Визуальный робот: поля только что вставленного шага правятся сразу, без сохранения документа;
  • Визуальный робот: закладка шага — флажок на вкладке «Служебные», без имени; тип и адрес шага с этой вкладки убраны;
  • Визуальный робот: комментарий шага занимает всё свободное место вкладки;
  • Визуальный робот: шаг с закладкой отмечен иконкой в контуре;
  • Визуальный робот: в шапке свойств — имя шага, его можно переименовать; иконка и цвет — вкладка «Вид»; вкладки свойств — значки с подсказкой; в строке шага только имя, цвет красит иконку, полоса уровня на иконку не наезжает; «вставить перед/после» кладёт поток в подменю «Поток» с переведёнными именами; опечатка PDF_Fiel исправлена на PDF_File, старые .wf поправляются при открытии; легенда шага — отдельная панель слева от свойств, по умолчанию скрыта, показ из тулбара; обязательный аргумент помечен звёздочкой *, а не значком избранного; в файл вид пишется так, что старая Studio его пропускает;
  • Визуальный робот: число шагов в категории палитры только во всплывающей подсказке;
  • Визуальный робот: палитра — категории и подкатегории как в тулбоксе Studio 7 (по пространству имён);
  • Визуальный робот: при развороте редактора сплиттеры палитры и свойств остаются на месте;
  • Визуальный робот: DebugMessage и WriteLine пишутся во вкладку «Вывод» панели отладки;
  • Визуальный робот: шаги Excel SetRowBorder и SetRowColor подписаны «Excel», а не «Браузер»;
  • Файл → Создать → Workflow — новый визуальный робот в папке «Мои скрипты»;
  • Визуальный робот: палитра — поток управления как в Studio 7 (в том числе Flowchart, TryCatch, Delay, WriteLine) и шаги Excel, PDF, Word, S3, WebDAV, File, Folder, Mail, Telegram;
  • старт помогает новичку — диалог «Начните здесь» (три шага до первого робота, с кнопками), секция «Начните здесь» первой в дереве быстрого старта, совет дня на сплэше, мини-гайд в пустом ИИ-чате и пункт меню «ИИ агент → Как начать» (первый пункт, отделён разделителем);
  • Визуальный робот: в палитре короткое имя шага (как в меню), полный тип — в подсказке и панели деталей; род действия локализован;
  • Визуальный робот: на паузе Tab от шага сразу ведёт к «Продолжить» — хвост «добавить» на время паузы скрыт;
  • Визуальный робот: в палитре path-hint без подчёркиваний CLR (`Java Script` вместо `Java_Script`), заголовок и счётчики на русском без английского «activity»;
  • Визуальный робот: ширину каталога исполнителя и панели свойств можно тянуть сплиттером — размер запоминается между открытиями;
  • Визуальный робот: «Каталог исполнителя» переименован в «Палитру» — поиск с очисткой, счётчики-чипы, без повтора «действие» на каждой строке, Enter/двойной клик добавляет шаг;
  • Визуальный робот: в шапке редактора отмена, повтор, «как текст», палитра и свойства — иконки с подсказкой;
  • Визуальный робот: «Сохранить»/«Сохранено» в шапке — иконка справа от разделителя с подсказкой;
  • Визуальный робот: «Сохранить» в шапке стоит самым правым — после чипа ревизии;
  • Визуальный робот: в палитре семьи по умолчанию свёрнуты — открываются кликом или поиском;
  • Визуальный робот: внизу палитры — блок-легенда с именем шага; путь к исходному коду скрыт, «обязательный» — иконка с подсказкой;
  • Визуальный робот: в легенде палитры «Добавить» и куда встанет шаг — в одну строку;
  • Визуальный робот: в палитре только рабочие вставляемые шаги — отказные Switch…/Flowchart/TryCatch больше не показываются плитками;
  • Визуальный робот: нижнюю легенду палитры можно скрыть кнопкой в шапке палитры;
  • Визуальный робот: переменные — отдельная панель справа от свойств, открывается из шапки, по умолчанию скрыта;
  • Визуальный робот: имена параметров в легенде палитры и панели свойств — как в Studio (LocalizedDisplayName / Resources);
  • Визуальный робот: категория «Поток управления» как Control Flow Base в Studio — While, DoWhile, Parallel, ParallelForEach, Pick, PickBranch, Switch;
  • Визуальный робот: в панели свойств поля отодвинуты от сплиттера — больше боковой отступ;
  • Визуальный робот: конструкции потока (Если, Последовательность, Присвоить, Для каждого и др.) переведены в палитре, меню и контуре;
  • Визуальный робот: поиск в палитре открывается иконкой, как в панели отладки — поле не занимает место, пока не нужно;
  • Визуальный робот: в палитре и свойствах человекочитаемые подписи — CLR, path и термины протокола убраны в подсказки;
  • Визуальный робот: в палитре и меню те же названия шагов, что в контуре (DisplayName Studio); при вставке имя сразу пишется в файл;
  • Визуальный робот: сплиттеры палитры и свойств не пропадают при развороте редактора; «конструктор»/«отказ» в палитре — иконки с подсказкой; палитра — дерево семей; проверка — отдельная панель, её можно спрятать и открыть из шапки;
  • Визуальный робот: в контекстном меню шага — иконки у пунктов, подписи в одну строку без переноса;
  • Визуальный робот: панель свойств — тихая сетка полей без карточек; проверка — отдельная колонка справа от свойств и по умолчанию скрыта;
  • Визуальный робот: панель свойств — поля карточками столбиком, длинное имя шага с многоточием, логические True/False переключателем;
  • Визуальный робот: в отчёте открытия робота есть действие «Открыть в Studio 7» — классическая студия стартует только если задан путь (XHE_STUDIO7_EXE или установленная 7.x), иначе назван отказ, второе окно само не открывается;
  • Визуальный робот: на Linux шаги рабочего стола и COM (Excel, Word, Outlook, клавиатура, мышь, окна) отказываются до запуска и называют платформу (Windows-only); на Windows их по-прежнему исполняет мост;
  • Координатная мышь снова двигает настоящий курсор: команды mouse_click, mouse_move_to, mouse_double_click и mouse_down/mouse_up ставят физический указатель в точку страницы в окне гостя — и в Studio 7, и в Electron. Точка пересчитывается по области отрисовки страницы с учётом DPI и зума, поэтому попадание верное на любом масштабе: страницы видят наведение и получают события так же, как от человека. Раньше команды мыши не доходили до экрана — наведение не загоралось, перетаскивания не работали;
  • запуск без окна (--without-frontend) больше не ждёт ответ панели отладки на каждую команду журнала — робот не стоит по минуте на «Вывести»;
  • Визуальный робот: «Открыть в Studio 7» находит установленную 7.x по имени XWeb Human Emulator Studio.exe и по WOW6432Node (раньше — studio7-not-configured при пустом DisplayVersion);
  • в «Настройках → Главные → Окно и трей» появился счётчик «Количество последних файлов» (по умолчанию 20) — подменю «Файл → Последние» больше не обрезается десятью пунктами и перестраивается сразу после сохранения, без перезапуска;
  • Визуальный робот: новый робот («Файл → Создать → Workflow») — готовый пример: открыть ya.ru, напечатать текст в строке поиска и нажать Enter; раньше текст присваивался полю, и поиск не срабатывал;
  • в меню «Файл» появился пункт «Открыть папку...» — выбранная папка становится текущей рабочей: дерево файлов и «Быстрый старт» показывают её как корень (папка вне «Моих скриптов» получает свою секцию «Текущая папка»), ИИ Ассистент начинает работать с ней, а настройка «Мои скрипты» не меняется;
  • панель «Git» (меню «Вид → Git») по выбранной текущей папке показывает ветку, список веток, изменённые файлы с построчным дифом и журнал коммитов; панель только читает — коммитить и переключать ветки из неё нельзя;
  • Дочерние скрипты run_as_python теперь дозваниваются до приложения на любом порту: адрес хоста ребёнка всегда собирался с портом по умолчанию 7010, поэтому на установке, где приложение слушает другой порт, ребёнок не мог обратиться назад — get_port и команды ребёнка падали с connection refused, пока родитель ждал завершения дочернего скрипта. Теперь ребёнок получает порт, на котором приложение слушает реально;
  • В отчёте открытия визуального робота (.wf) появилось действие «Открыть в Studio 7»: классическая студия запускается на этом роботе по явному пути к её exe, который берётся из настроек классического продукта; если Studio 7 не установлена, действие сообщает об этом, а не падает;
  • Тихая установка больше не прерывается и не откатывается целиком, если внутренний хук isUnattended в этой сборке установщика не функция, и больше не ждёт диалога UAC Docker Desktop: тихая установка пропускает этот путь повышения прав и продолжает работу;
  • Аргументы init() логгера снова доезжают до движка: обёртка складывала параметры под ключами, которые диспетчер не читал, поэтому минимальный уровень записи, вывод в панель отладки и вызов через shell никогда не применялись. Отсутствующие необязательные аргументы больше не превращаются в нули и false: чтение журнала без явного уровня возвращает записи всех уровней вместо пустого результата, страница по умолчанию — 100 записей, разделитель CSV — «;»;

Показаны последние 10 записей (в журнале их 48). Полный журнал беты 8.x — change_log_studio_8.txt, полный лог Studio 7.x — change_log_studio.txt.

Смотрите также: возможности 8, FAQ, требования и установка, поддержка.

Готовы автоматизировать браузер?

Актуальная линейка — Human Emulator Studio и RT. Посмотрите примеры задач, скачайте демо или сразу купите лицензию. Вопросы — в Telegram или на странице поддержки.

Скачать демо Поддержка

Купить →   |   Что нового →   |   О Studio →   |   FAQ →