Журнал изменений Human Emulator Studio
Актуальная линейка — Studio и RT на Chromium. Ниже последняя запись лога седьмой линейки; восьмая (бета) ведёт свой журнал отдельно. Полные файлы: журнал 7.x, журнал 8.x и исторический лог классической линейки. Скачать сборку для проверки — официальное демо.
Демо — оценка Studio на Windows. Вопросы по установке и скриптам — поддержка или контакты.
Последняя запись лога 7.x
7.0.78 (11.11.2026)
- Новый визуальный робот открывает https://ya.ru и пишет «тест» в поле поиска;
- Активация: сначала локальный license.lic, при неуспехе — онлайн; сбой разбора файла больше не отдаёт Server error 500;
- ИИ Ассистент: генерация PHP-проектов робота:
- пустая папка проекта получает каркас сама (init, tools/core, слайсы, AGENTS.md), ассистент запускает робота только через среду - из консоли API недоступен;
- исправлено: выгрузка в CSV падала с "Class CsvHelper not found" во всех новых проектах робота;
- исправлено: за один запрос агент делал не больше 25 шагов и обрывался на чтении проекта - лимит поднят до 60 и настраивается;
- исправлено: разные команды в терминале считались повтором и обрывали ход как «зацикливание»;
- исправлено: вложенный субагент мог держать ход «молча» десятки минут - тулз task выключен во всех режимах.
- Браузеры: движки обновлены до последних версий (151, CefSharp / CEF 151.3.240);
- ИИ Ассистент (панель ИИ чата):
- волна новых возможностей: пикер элемента (кнопка-прицел дает локатор-сниппет), скриншот при любой ошибке верификации, офлайн-каталог частотных методов при выключенном MCP, бриф перед написанием скрипта, тосты и звук при завершении задачи и запросе к пользователю;
- применение правок до записи файла: диалог с диффом - Отклонить / Применить / Применить все для задачи;
- /replay - повторный прогон без агента со сверкой живого запуска (заголовок, URL, артефакт);
- честный линт скрипта при отсутствии интерпретатора;
- вкладка нового чата, очередь сообщений во время работы агента, статусная панель агента с деталями;
- композер: @-упоминания (файл, браузер, лог, вкладка и др.), слеш-команды, меню «еще» (копия и экспорт чата), кнопки действий сообщения;
- откат правок: Отклонить карточку, Откатить шаг (все файлы шага агента);
- справка в панели: обновлен список «Что получается» по подтвержденным сценариям;
- ИИ Ассистент (панель ИИ чата): исправления:
- тултип кнопки сворачивания панели инструментов теперь меняется «Свернуть»/«Развернуть» по состоянию;
- вкладка «Новый чат» появляется сразу при создании черновика;
- выравнивание кнопок и комбинации режимов композера, добавлены недостающие иконки;
- локализация тултипов и подписей панели (англ/рус/тур);
- ИИ Ассистент:
- поддержка прокси HTTP/HTTPS/SOCKS5: общая настройка и отдельно на провайдера;
- настройки скорости ответа: отключение thinking, сокращённый набор инструментов, уменьшенный контекст;
- стартеры с вкладками для быстрого запуска типовых задач;
- закреплённый статус-бар с прогрессом по этапам выполнения;
- короткие имена моделей в списке выбора;
- офлайн-каталог документации API (PHPDoc) для подсказок без интернета;
- ИИ Ассистент: исправления:
- настройки приложения сохраняются атомарно — защита файла настроек от повреждения при сбое;
- исправлен сбой в load_web_page при коротких URL;
- убраны зашитые сетевые учётные данные из impersonate_user;
- ИИ Ассистент: настройка «Свернуть карточки инструментов» сворачивает и одиночные карточки (раньше оставались развёрнутыми);
- ИИ Ассистент: стрим с thinking больше не обрывается через 30 с паузы и не запускает второй запрос без потока — простой считается по таймауту запроса, сломанный SSE по-прежнему повторяется без стрима;
- ИИ Ассистент: методы API модель берёт через `search_api` из Templates (и при MCP off); неизвестный метод в записи указывает на этот тул, а не «включи MCP»;
- ИИ Ассистент: PHP DOM — только `->`, не `::`; `get_by_*` даёт XHEInterface (`
$el->set_value`), не аргумент для `set_value_by_name`; `WINDOW::$window` — окно ОС, не поле страницы; - ИИ Ассистент: нет `WEB::$keyboard` (это `SYSTEM::$keyboard` / `
$el->send_key`); нет CSS-селекторов в API; `search_api` без `__` в имени тула всё равно находится; - ИИ Ассистент: пустые SSE-строки и keepalive не сбрасывают таймаут стрима — зависшая модель обрывается по лимиту запроса;
- ИИ Ассистент: сумма токенов — кольцо заполнения контекста (вызов / окно) с подсветкой на 70 % и 90 %, клик по ней даёт разбивку расхода и кнопку «Сжать контекст»; в панели чата считается сумма всего хода, а не одного сообщения;
- ИИ Ассистент: повторный XML-вызов тула больше не падает в базе чата (уникальный id, не xml_1);
- ИИ Ассистент: карточки чата компактнее — шапки «Пользователь», «Размышления», «Система» и инструмента показаны иконкой с подсказкой на языке интерфейса, тело результата развёрнуто сразу, у блока «Система» — оценка токенов в шапке и прокрутка;
- ИИ Ассистент: PHP Deprecated в логе запуска больше не считается ошибкой скрипта;
- ИИ Ассистент: XML-вызов тула в тексте/размышлении (Qwen `<tool_call>`) исполняется как обычный tool_call — без пустого хода;
- ИИ Ассистент: пустой ход модели — «Модель завершила ход без текста» вместо «Call: stop»; служебный nudge скрыт;
- ИИ Ассистент: `init.php` робот берёт только из Studio `Templates` (для далёкой папки — абсолютный require), копия в папку робота не нужна и не создаётся; без слэша в `__DIR__ . "init.php"` запись отклоняется;
- ИИ Ассистент: search_replace учитывает CRLF и trim строк; короткие имена tools; компакт логов с хвоста; стоп doom-loop и битого JSON аргументов;
- ИИ Ассистент: панель плана над полем ввода — раскрываемый чеклист шагов агента (счётчик 2/6, перечёркивание выполненных, текущий шаг выделен);
- ИИ Ассистент: сброс настроек не очищает папку проекта; на стартовом экране кнопки показывают локализованный текст, а не ID ресурса;
- ИИ Ассистент: проверка MCP с индикатором «Checking…» по адресу из формы (таймаут 3 с);
- ИИ Ассистент: экспорт и сохранение настроек работают без предварительного Save;
- ИИ Ассистент: ввод температуры в настройках не сбрасывается при наборе десятичной дроби;
- ИИ Ассистент: при приближении к лимиту контекста история сжимается сама (саммари Objective / Work State), не дожидаясь ошибки модели;
- ИИ Ассистент: запись PHP-робота без `<?php` отклоняется (Studio иначе не исполняет файл); `TEST_POLYGON_URL` без `constForTestSamples.php` тоже;
- ИИ Ассистент: в узкой панели кнопка «ещё» не уезжает за край — лишние иконки уходят в меню;
- ИИ Ассистент: запись PHP с `escapeshellarg`/`escapeshellcmd` или `LOG::$app` отклоняется — на Windows ломают пути, лог через `SYSTEM::$textfile`;
- ИИ Ассистент: A−/A+ в меню «ещё» сохраняют ChatFontPx в ai_settings (как Ctrl+/−), не только zoom в localStorage;
- ИИ Ассистент: стрим ответа не подвешивает окно — текст обновляется плавно; если сервер модели перестал отвечать, платформа выходит из состояния «занято» примерно за 30 с, а не ждёт полный таймаут запроса;
- ИИ Ассистент: провайдер Anthropic Claude — убран нерабочий адрес по умолчанию api.anthropic.com (нативный API /v1/messages не реализован), добавлена подсказка указать OpenAI-совместимый эндпоинт/прокси (напр. OpenRouter);
- Установка: инсталлятор теперь при необходимости доустанавливает Microsoft Edge WebView2 Runtime — без него на чистой машине не работал браузерный движок Edge;
- ИИ Ассистент: NVIDIA NIM — отдельный провайдер с собственными настройками (модель, ключ, адрес); сохранённые ранее ключ и модель переносятся автоматически;
- ИИ Ассистент: блоки в чате сворачиваются в одну строку — системный промпт, «Thinking» и карточки инструментов по умолчанию свёрнуты, клик по заголовку раскрывает;
- ИИ Ассистент: диалог настроек разбит на страницы по закладкам (General, Model, Agent, …) и переключается; открывается в теме чата и без белой вспышки при загрузке;
- ИИ Ассистент: интерфейс чата и настроек пересобран без DevExtreme — открывается заметно быстрее и выглядит как прежний диалог; исправлен выбор провайдера (раньше список не раскрывался);
- ИИ Ассистент: полировка диалога настроек — иконочные кнопки, карточки режимов в одну строку, кнопки «Открыть»/«Выбрать папку» справа от полей, тёмная тема без пробелов, подтверждение при закрытии с несохранёнными изменениями, вкладка «Инструменты» теперь показывает и семейство PowerShell;
- ИИ Ассистент: «Компактный набор инструментов» и «Быстрый локальный контекст» по умолчанию выключены — модель получает полный набор инструментов и полный контекст;
- ИИ Ассистент: LLM-судья артефактов отвечает на языке интерфейса — карточка в чате объясняет причину отклонения или недоступности судьи по-русски;
- ИИ Ассистент: на вкладке «Правила» можно создать файл правила и редактировать содержимое существующих — без ручного похода в папку .agents/rules;
- ИИ Ассистент: вкладка «Инструменты» полностью на русском — понятные названия сервисов и категорий, человеческие описания «что это и зачем» у каждого инструмента, поиск тоже по русскому тексту;
- ИИ Ассистент: на вкладке «Агент» блок настроек прокси сворачивается кликом по заголовку и по умолчанию свёрнут;
- ИИ Ассистент: «Проверить соединение» работает с адресами без http:// и порта (например, 192.168.1.109 для LM Studio — схема и порт достраиваются автоматически) и показывает причину сбоя вместо голого «Ошибка соединения»;
- ИИ Ассистент: диалог настроек всегда в теме ИИ-чата — кнопка смены темы и блок «Тема чата» из настроек убраны (тема переключается в самом чате), при незаданной теме учитывается скин приложения;
- ИИ Ассистент (Windows): исправлена маршрутизация запросов с параметрами в мосту WebView2 — «Проверить соединение» и сохранение настроек ИИ молча не срабатывали;
- ИИ Ассистент: бейдж «thinking» у провайдера в настройках заменён иконкой с подсказкой на языке интерфейса;
- ИИ Ассистент (Windows): окна настроек и справки закрываются сами после сохранения/закрытия — раньше на экране оставалось пустое белое окно;
- ИИ Ассистент: понятные сообщения об ошибках модели — если модель недоступна для аккаунта провайдера, снята с поддержки или не найдена (например, NVIDIA NIM), чат объясняет это человеческим языком и предлагает выбрать другую модель в настройках ИИ вместо сырого HTTP-ответа;
- ИИ Ассистент: локализация чата — роли сообщений (Пользователь/Ассистент/Система/Инструмент), режимы (Вопросы/План/Код) и их подсказки, «Авто» в выборе языка, кнопка копирования у блоков кода и прочие мелкие строки теперь на языке интерфейса;
- ИИ Ассистент: кнопка «Очистить всю историю» действительно удаляет все чаты — раньше она чистила только архив и список истории оставался на экране;
- ИИ Ассистент: поля настроек не теряют фокус при вводе текста — раньше диалог перехватывал фокус после каждого символа;
- ИИ Ассистент (Windows): сохранённые настройки (размер шрифта чата, скрытие/свёртывание блоков и др.) сразу применяются в панели чата — раньше шрифт обновлялся только после перезапуска;
- ИИ Ассистент: на странице «Модель» блок выбора провайдера свёрнут по умолчанию — выбранный провайдер и модель видны прямо в заголовке секции;
- ИИ Ассистент: настройки открываются на той вкладке, которая использовалась в прошлый раз;
- ИИ Ассистент: поле «Базовый системный промпт» на вкладке «Контекст» стало высоким и растягивается по вертикали — раньше оно было в одну строку;
- ИИ Ассистент: на каждой странице настроек появилась кнопка «Справка» — открывает справку ассистента на разделе об этой странице с описанием каждой настройки простым языком (русский, английский, турецкий);
- ИИ Ассистент: подсказка «Сессия» в шапке чата (провайдер, модель, режим, MCP) обновляется сразу после сохранения настроек — раньше оставалась со старыми значениями;
- ИИ Ассистент: размер шрифта чата настраивается в диапазоне 8–40 px (раньше 11–20);
- ИИ Ассистент: незавершённый ответ (закрытие Studio, обрыв связи) больше не остаётся в чате пустым пузырём «…» — при следующем запуске он помечается как прерванный с подсказкой продолжить;
- ИИ Ассистент: пузыри ответов в разных диалогах больше не склеиваются — текст одного ответа не перезаписывает соседний (раньше одинаковое содержимое хранилось одной записью на несколько сообщений);
- ИИ Ассистент: новый инструмент «открыть файл в редакторе» — на просьбу «открой в редакторе то, что создал» ассистент сам показывает файл во вкладке редактора, ничего в нём не меняя;
- ИИ Ассистент: если ход прерван (кнопка «Стоп», ошибка модели, лимит итераций или времени), в чате появляется блок [TURN STATE] — сколько итераций пройдено, какой скрипт записан, класс ошибки и какое действие ждёт вашего подтверждения;
- ИИ Ассистент: действие, не подтверждённое вовремя в диалоге подтверждения, больше не считается отказом — ассистент сообщает, что действие ждёт подтверждения, вместо того чтобы молча бросать задачу;
- ИИ Ассистент: сообщение, отправленное во время работы агента, не теряется — Enter ставит его в очередь (виден статус и полоска «подхвачу на следующем шаге»), ассистент подхватывает его на следующем шаге; раньше такое сообщение уходило незамеченным, а в чате стартовал второй параллельный ход, из-за которого «Стоп» переставал действовать на первый;
- ИИ Ассистент: в стриминге у провайдера теперь запрашивается статистика токенов — в истории хода появляются реальные значения вместо нулей; провайдеры, которые не поддерживают это поле, определяются автоматически и продолжают работать как раньше;
- ИИ Ассистент: в первом сообщении диалога до модели теперь доходят @-упоминания файлов и состояние рабочей папки (раньше этот блок на первом ходу терялся), а в повторных ходах он больше не дублируется в системном промпте;
- ИИ Ассистент: длинный диалог больше не обрывается ошибкой шаблона модели после сжатия истории — запрос всегда начинается с пользовательского сообщения, как того требуют локальные модели qwen (раньше ход падал с «No user query found in messages»);
- ИИ Ассистент (Windows): панель ИИ-чата скрывается по крестику (HideOnClose), как остальные док-панели;
- Редактор: контекстное меню закладок — закрыть / остальные / все, сохранить, переименовать, перечитать, проводник, путь, удалить; у пунктов иконки;
- ИИ Ассистент: пункты панели и настроек вынесены из «Вид»/«Сервис» в отдельное меню «ИИ» после «Плагины»;
- Панель браузера: адрес в комбобоксе не затирается во время набора;
- Браузер: в списке моделей появились Brave и Opera и переключение на них (Selenium) в панели браузера;
- ИИ Ассистент: вкладка модели не проверяет подключение сама — только по кнопке «Проверить соединение»; ошибка недоступности не сыплется в панель отладки;
- ИИ Ассистент: числа и bool в вызовах тулов принимаются и строкой ("5"/"true"); повтор той же ошибки даёт подсказку; после первого тула в Code размышление отключается; правки search_replace линтятся по целому файлу, а не по фрагменту;
- ИИ Ассистент: вызов метода на чужом объекте (
webpage->get_by_inner_text) отклоняется до запуска — подсказка с правильным DOM/WEB фасадом; - ИИ Ассистент: поиск в Google агент пишет по рабочему сценарию — `set_inner_text_by_name` / `send_input`, Enter через `
send_key(VK_ENTER)`, после Enter только `sleep(3)` без `wait_js` (иначе зависание), заголовки `get_by_number` без «Почта/Картинки» и футера, `data/` через `mkdir` и `__DIR__`; - ИИ Ассистент: `harvest_locators` и snapshot — тулы чата, не методы PHP; карточки MCP/search не краснеют из-за JSON `null`; `*_by_name` только на фасаде, не на `$el`;
- ИИ Ассистент: пустой STOP с thinking — хвост reasoning в чат; после лимита empty_stop — краткое резюме хода;
- заставка при старте показывается на том же мониторе, что и главное окно;
- ИИ Ассистент: XHE MCP ставится со Studio (готовый индекс в `{app}\MCP`) и поднимается только при первой проверке или включении MCP, не при старте программы;
- ИИ Ассистент: после ответа вкладка остаётся «ИИ Ассистент», а не «Готово»; окончание работы — всплывающее уведомление;
- ИИ Ассистент: llama.cpp больше не падает HTTP 500 на втором ходе с тулами — в сообщениях не уходит JSON null вместо строки (content, id вызова, tool_call_id);
- Справка: онлайн-справка и справки по PHP / JS / Python / C# открываются во внешнем браузере по умолчанию;
- Скриншот: выбор области — контрастная пульсирующая рамка и кнопка камеры в стиле ИИ-чата; диалог сохранения — меню «Сохранить / Открыть / Инструменты» (копирование, размер, вписать в окно, перевыбор);
- Скриншот: рамка выбора области снова ресайзится; в диалоге сохранения — масштаб изображения (− / % / +, вписать) и изменение размера самого окна;
- диалог установки плагинов: запоминает последний путь и по умолчанию открывается в папке Plugins рядом с программой;
- Редактор: на панели кнопка включения/выключения режима отладчика PHP;
- отладка: панель стека вызовов — имя функции и тип кадра, локали выбранного кадра в Watch, текущий кадр, копирование, скрытие Templates/vendor, пустое состояние, клавиатура;
- Outlook: несколько экземпляров Studio и роботов больше не мешают друг другу — межпроцессный lock, attach к уже запущенному Outlook, one-shot не делает Quit,
close()не убивает процесс; COM на выделенном STA-потоке с повтором при CALL_REJECTED, плагин outlook2 не гасит чужой Outlook; - ИИ Ассистент: в классической Studio `run_script` идёт через встроенный запуск (F5 / панель отладки), а не отдельным консольным окном;
- ИИ Ассистент: кнопка «Новый проект» в чате — папка в «Мои роботы» с правилами/скилами; главный скрипт только из этой папки, не leftover с прошлого прогона;
- ИИ Ассистент: после doom loop (один и тот же tool 3 раза) в ленту пишется итог хода, а не только карточка тула;
- Мои роботы: в тулбаре и контекстном меню папки — «Показать только эту папку», «Показать все папки» (выход из режима) и «Открыть как проект в ИИ-чате»;
- Мои роботы: дерево само обновляется при создании/удалении проекта, если папка развёрнута и видна;
- Мои роботы: «Очистить папку» — удаляет все файлы и подпапки, сама папка остаётся;
- Мои роботы: JSON и Markdown — и в фильтре дерева рядом с PHP/JS/Python, и в меню «Создать»;
- Мои роботы: «Недавние» и «Избранное» — поиск открывается кнопкой (поле скрыто до нажатия), контекстное меню «Удалить из недавних» и «Очистить», в подсказке дата и время открытия и родительская папка (различать одноимённые файлы), иконки того же цвета, что в дереве;
- Мои роботы: в тултипе дерева — дата изменения файла, чип «Служ.» скрывает .ai, log, temp и .git;
- Мои роботы: у папки-робота точка последнего запуска (OK / ошибка / не запускали) по хвосту лога;
- Мои роботы: файлы и папки перетаскиваются по дереву; горячие клавиши F2 / Del / Ctrl+D / Ctrl+Enter (открыть папку как проект в ИИ-чате);
- Мои роботы: в контекстном меню папки — «Открыть AGENTS.md» и паспорт;
- Мои роботы: «Недавние» и «Избранное» скрываются, фильтр типов — выпадающий список, тулбар в одну строку с «…», контекстное меню с подменю, полоска «Папка: …» цветом папки и бледнее, иконки MD/docs бирюзовые;
- Редактор: после правок ИИ Ассистента скрипт сохраняется перед запуском;
- Редактор: подсветка синтаксиса для Markdown, JSON, HTML, XML/SVG, CSS, INI, YAML, SQL и BAT/CMD;
- ИИ Ассистент: движок агента выбирается в настройках — «Встроенное» или «Сервер» (`{app}\Tools\AI\RPAloop1\RPAloop1.exe`, кладётся в установщик); без бренда OpenCode в UI;
- ИИ Ассистент: движок «Сервер» больше не подвешивает чат — после записи файла возвращается в ожидание, ответ не дублирует вопрос и не теряется в размышлениях (короткие ответы врод «4» тоже попадают в ответ), в чат не пишутся служебные system/скрипт, а зависший на порту процесс снимается перед запуском и порт при первом старте подбирается свободный;
- ИИ Ассистент: карточки тулов — имя в шапке и итог ok/error без спама pending/running, строка ответа не дублируется; ход «Сервер» не рвётся, пока тул выполняется, финальный ответ отдельно от рассуждений;
- ИИ Ассистент: в движке «Сервер» робот пишет файлы и запускает их инструментами Studio (после записи файл открывается в редакторе), подтверждение правок — Deny / Approve / Approve all, в движок уходят режим Спросить/План/Код и AGENTS.md;
- ИИ Ассистент: режимы движка «Сервер» разграничены — «Спросить» не пишет файлы, «План» сохраняет PLAN.md и не оставляет .php, в «Код» открыт нативный набор инструментов;
- ИИ Ассистент: локальный мост инструментов движка «Сервер» отклоняет запросы без авторизации и действия, запрещённые режимом; системный промпт передаётся одним каналом;
- ИИ Ассистент: на вкладке «Инструменты» — реальные тулзы текущего движка, каждый с чекбоксом вкл/выкл; выключенный тулз не уходит модели и не выполняется (в «Сервере» его файл не пишется в tools-папку и мост отвечает отказом);
- ИИ Ассистент: у движка «Сервер» свои правила вместо встроенных подсказок OpenCode — ответы полные и на языке пользователя, проверка робота — его запуск в эмуляторе; аргументы инструментов описаны в самих инструментах и не дублируются в системном промпте;
- ИИ Ассистент: удаление первого сообщения в диалоге больше не делает историю нечитаемой (раньше чат не открывался, панель крутила «занято»);
- ИИ Ассистент: движок «Сервер» получил те же инструменты, что и «Встроенное» — адрес страницы, список и переключение вкладок, снимок экрана, проверка текста на странице, а также лог робота, проверка что он завершился и его остановка;
- ИИ Ассистент: второй и каждый следующий запрос в открытом чате снова дожидаются ответа (раньше панель показывала только ваш вопрос и больше не обращалась к движку);
- ИИ Ассистент: честная проверка результата робота — файлы, обещанные внутри подключённых файлов проекта (slices/adapters), и выгрузка в xlsx/xls теперь тоже проверяются; пустой или мусорный файл больше не выдаётся за выполненную задачу.
- ИИ Ассистент: справка по API XHE («поиск методов») отдаёт вызовы, которые действительно запускаются: раньше готовая строка выводилась с объявлением параметров — `
send_key(bool $is_key, …)` — и скопированный в робота код падал; теперь остаётся только имя переменной. - ИИ Ассистент: карточка запуска робота в движке «Сервер» показывает красный статус, когда проверка не пройдена (раньше за «успех» выдавался завершившийся с ошибкой скрипт); csv с одной строкой заголовков и ноль строк данных больше не считается выполненной задачей;
- ИИ Ассистент: подсказки после падения робота и справочный каталог больше не советуют несуществующих объектов (`WEB::$textfile`, `DOM::$heading`) и вызовов — все имена берутся из живых Templates/Objects;
- ИИ Ассистент: уточнение, отправленное посреди хода, доходит до движка «Сервер» — сообщение встаёт в очередь, виден его статус, а ответ разбивается на раунды (раньше такое сообщение молча терялось);
- ИИ Ассистент: движок «Сервер» называет причину пустого хода — отказ модели или стенда (например, «не хватает контекста») и превышение лимита времени больше не прячутся за «сервер завершил ход без текста», при таймауте показывается сделанное;
- ИИ Ассистент: длинная задача в движке «Сервер» больше не встаёт на уточняющем вопросе модели и не обрывается на обходе страниц;
- ИИ Ассистент: застрявшая на повторе одного и того же вызова модель получает подсказку сменить тактику и доводит задачу до конца (раньше ход обрывался на третьем повторе, в том числе на безобидном обращении к справочнику API);
- ИИ Ассистент: робот, созданный в чате, пишет файлы по относительным путям в свою папку проекта (раньше `data/…` уходило в папку программы, а проверка результата его там не находила);
- ИИ Ассистент: в движке «Сервер» о выдуманном методе XHE модель узнаёт из результата этого же запуска робота и чинит скрипт в том же ходе (раньше замечание о правде API доходило только во встроенном движке, и «Сервер» переписывал выдуманный метод другим выдуманным);
- ИИ Ассистент: перед запуском ловятся молча ломающиеся скрипты — однострочник, где `//` отрезает весь остаток (ни кликов, ни сохранения файла), и скалярная работа со списком из `get_all_by_…` (раньше `
trim()` и сравнение со строкой давали пусто вместо найденных элементов); - Классический рантайм (отдельная RT-версия): скрипт с действиями из категории «Строки» больше не вылетает при запуске — раньше такие роботы работали только в Студии, а в рантайме программа завершалась сразу;
- ИИ Ассистент: карточка инструмента показывает вывод целиком — раньше он обрывался на 500 символах, и остаток нельзя было посмотреть; запуск робота теперь несёт расширенный хвост лога, а в движке «Сервер» — и начало, и конец длинного вывода;
- Excel: `
excelfile->` — новый лист создаётся сразу с заголовками в первой строке, одним вызовом (раньше заголовки требовали второго обращения к файлу и лишнего пересохранения книги); доступно в PHP, JS, Python и C#;add_sheet(файл, лист, заголовки) - ИИ Ассистент: справка по API XHE («поиск методов») показывает примеры реального вызова не только для объектов страницы, но и для работы с экраном и изображением (XHETesseractOCR, XHEFineReaderOCR), окнами (XHEWindow, XHEUI, XHEScheduler), системой (XHEClipboard, XHEBd, XHEExcel) и браузером (XHEBrowser, XHERest, сервисы капчи);
- Справка по API XHE: список параметров метода больше не обрезается - сигнатуры с необязательным типом (?array), выбором типов (string|array), типом из пространства имён и передачей по ссылке (&$var) теряли параметры (у XHERest::request доходило 2 из 5); теперь параметров ровно столько, сколько в объявлении метода;
- Локализация: подписи, которые показывались оператору сырым ключом, переведены — 24 в турецком (группы настроек ИИ Ассистента, провайдеры, диалог несохранённых изменений, каталог MCP), 2 в русском (шкала планировщика: «сейчас» и пустой график) и 1 в английском («Обновить» в контекстном меню); впредь расхождение наборов ключей между ru, en и tr ловит тест;
- MCP: справка API в установленном продукте снова отдаёт примеры вызовов — в конфигурации пакуемого сервера осталась настройка, вырезавшая их из выдачи;
- pdffile.get_page_count (WF): параметр ожидания теперь «Таймаут операции» в секундах, а не «Интервал ввода» (эта подпись досталась от клавиатурных блоков); 0 и отрицательное значение больше не означают «ждать вечно» — берётся таймаут по умолчанию;
- pdffile.get_page_count: когда файла нет по указанному пути или PDF не читается, в лог пишется причина, а не молча возвращается -1;
$connection->: возвращает IPv4-адрес машины, а не последний адрес из DNS-записи её имени (на машинах с IPv6 отдавался IPv6-адрес);get_local_ip()$connection->: новая команда — все локальные IP адреса машины (IPv4 и IPv6) в виде массива;get_all_local_ip()- pdffile: одна нечитаемая аннотация в PDF больше не обнуляла весь список — get_all_links, get_links_count и get_link_by_number отдают все читаемые ссылки, а ошибка по битой пишется в лог;
- WF: у блоков запуска BAT/Console/JS/PHP/Python/PowerShell, «Запрос к БД» и «Вставить картинку в PDF» параметр ожидания подписан «Таймаут операции» в секундах — раньше он нёс клавиатурную подпись «Интервал ввода»; у «Запуска JS» заданный таймаут наконец доходит до команды;
- PHP- и C#-клиенты: таймаут 0 или меньше в команде больше не означает «ждать ответа вечно» — берётся таймаут по умолчанию, робот не зависает;
- Инсталлятор: vc_redist больше не скачивается при установке - оба redistributable (x86 и x64) лежат внутри setup.exe и ставятся только если их нет на машине;
- Инсталлятор: отказ зависимости (vc_redist, WebView2) больше не отменяет установку продукта - она продолжается без неё, а в конце называется, что именно не установилось;
- Инсталлятор: диалоги загрузки и установки зависимостей говорят по-русски (раньше открывались на немецком);
- Windows Studio, Chrome: страница робота получает ту же поверхность, что внешний Chrome в Electron — webdriver скрыт и toString выглядит как native code, window.chrome на месте, cpuClass не публикуется, плагины, шрифты Windows, mediaDevices, голос, батарея и геолокация берутся из профиля, экран и outerWidth/outerHeight совпадают с профилем, а не с окном; Client Hints с GREASE, полный Accept-Language, часовой пояс и локаль ставятся через CDP, языки navigator — из профиля, а не из языка Studio; модульный воркер тоже прячет webdriver; список шифров SSL и расширения Selenium по-прежнему задаются при запуске Chrome; Shadowsocks ss:// остаётся только у встроенной вкладки Electron;
- Windows Studio: ChromeDriver обновлён до 154.0.8037.92 под установленный Chrome 154 — с драйвером 152 сессия Chrome не создавалась;
- Chrome: видеокарта в отчёте WebGL берётся из полного названия профиля, а не из короткого WebKit; ядра, память и плотность пикселей доходят и до заголовков Client Hints; команды set_screen_resolution, set_battery_api, set_accept_language и set_blocked_chipers на Selenium применяют значения сразу, а не только после отдельного обновления;
- Редактор: если вкладка указывает на файл, удалённый между запусками, в сообщении «файл не найден» есть «Больше не показывать» — отмеченное скрывает такие сообщения и при этом запуске, и при следующих;
- Визуальный робот: снимок элемента по номеру дожидается элемента и передаёт серый режим как as_gray, а не как exactly;
- Анонимность: Windows Studio и внешний Chrome поднимают ss:// (aes-128-gcm, aes-256-gcm, chacha20-ietf-poly1305, 2022-blake3-aes-128/256-gcm), trojan:// и vless:// через локальный SOCKS; Firefox и Edge получают ту же поверхность, что Chrome (шрифты под ОС, голоса, устройства, Intl, WebGPU, параметры WebGL, шум в воркере и AudioWorklet, DOMRect, WebRTC без локального адреса и IPv6, connection, раскладка, разрешения, GPC/DNT, дрейф батареи); при прокси DNS и IPv6 не идут мимо туннеля; список шифров SSL по-прежнему только у отдельного браузера, на вкладке это написано; проверка профиля ловит расхождение языка с поясом, Client Hints, PDF-плагин и мобильный User-Agent без касаний;
- Профиль браузера Windows: на странице шифров есть переключатель Global Privacy Control и пояснение, что список шифров на встроенной вкладке Electron не применяется;
- WebRTC: host-кандидат без IPv4 (имя .local) отбрасывается, а не уходит как есть;
- BrowserLeaks: WebRTC читается и через onicecandidate и через SDP; шрифты меряются шириной по списку ОС; WebGL и WebGPU подменяют карту только вместе с полями профиля, без чужой строки версии;
- Edge берёт User-Agent и Client Hints профиля через CDP, Firefox оставляет свой штатный override без старого геттера; если WebGPU-адаптера нет, а карта в профиле задана, страница видит её, а не пусто;
- Профиль браузера: кнопка «Проверить целостность» показывает карту нестыковок, «Сбросить подмену» возвращает отпечаток к значениям без подмены и оставляет имя, куки и прокси; хуки отпечатка ставятся и во фреймы, которые страница создаёт позже;
- Профиль: экран с панелью задач и ориентацией, таблица расширений WebGL под заявленную карту, аудио 48000, пояс в Worker и SharedWorker, полные Client Hints, кнопка «Подстроить под выход», DNS вкладки через прокси и координаты до города;
- Профиль: гео, камера, микрофон и уведомления читаются из одной таблицы разрешений, квота диска согласована с deviceMemory;
- Профиль: toString хуков называется по функции и стоит во всех браузерах и в Worker, языки Edge и Firefox идут за Accept-Language, Date.toString сохраняет имя пояса, WebGL отдаёт маскированные строки и константы расширений, WebGPU берёт архитектуру из имени карты, ширина прямоугольника совпадает с offsetWidth, аудио скрывает задержку и число каналов, в плагинах больше нет Native Client;
- Профиль: matchMedia совпадает с типом устройства, голоса зависят от ОС и языка, measureText и fonts.check режут чужие шрифты, canvas с аудио делят один сдвиг, deviceId стабилен и без подписи до разрешения, getStats не отдаёт локальный адрес;
- Профиль: заголовок Accept-Language совпадает с языком страницы и без User-Agent, видимый Chrome берёт видеокарту системы, внешний размер окна остаётся настоящим, шум canvas не красит прозрачный пиксель;
- Профиль: у Chrome убран второй слой шрифтов, голоса и устройств и принудительное «разрешено» для геолокации — их задаёт общая поверхность и таблица разрешений;
- excel.cut_range_to_clipboard и excel.copy_range_to_clipboard: диапазон наконец попадает в системный буфер обмена (раньше буфер оставался пустым), а вырезание ещё и очищает ячейки;
- cryptography.crypt_text и uncrypt_text: текст больше не расшифровывается чужим паролем — пароль участвует в ключе, и при неверном пароле возвращается пустая строка; ранее закодированные тексты читаются как раньше;
- Помощник кода: тексты корпуса, сохранённые в windows-1251 (286 файлов), читаются нормально — раньше кириллица в них выходила вопросительными знаками;
- Помощник кода: описание узла читается на языке открытого скрипта — у роботов на Python панель показывает python-текст (у 20 узлов в обеих ставках), для остальных языков и без открытого скрипта остаётся тот же php-текст;
- Быстрый старт: кнопки над деревом только иконками, дерево идёт под полоской и ею не перекрывается;
- Новый проект: ход создания пишется во вкладку «Служебное», а не в панель отладки;
- ИИ Ассистент: отправка первого сообщения больше не залипает студию — копирование каркаса проекта уходит с UI-потока;
- ИИ Ассистент: окно настроек больше не зависает при открытии — WebView2 поднимается без модального ShowDialog;
- selenium: add_page и close_all_pages на Selenium-моделях — паузы между операциями стали реальными (Task.Delay раньше не ждал никогда, и новая вкладка могла не успеть открыться перед загрузкой URL);
- selenium: add_plugins при битом JSON больше не отчитывается успехом и не сбрасывает прежний список плагинов — ошибка пишется в лог; поведение $selenium и $browser выровнено (у $browser раньше не включался флаг плагинов и не принимались папки);
- selenium: новая команда get_opened_page_titles — заголовки открытых страниц текущего драйвера ($selenium и PHP/C#-шаблоны);
- selenium: C#-шаблон add_page передаёт параметр type (tab|window) — раньше он молча терялся и всегда открывалась вкладка;
- Инспектор DOM: блок «Альтернативные селекторы» — готовые CSS-селекторы элемента с проверкой уникальности и копированием в один клик.
- Инспектор DOM: блок «Доступность» — роль, доступное имя, ARIA-атрибуты и контраст текста по WCAG (AA/AAA).
- Инспектор DOM: значение свойства можно править прямо в панели — карандаш у строки, Enter или галочка применяют изменение к элементу на странице.
- Панель DOM: синхронизация выделения между деревом, списком и инспектором — выбор элемента в одной панели сразу подсвечивает тот же элемент в двух других.
- Инспектор DOM: панель больше не перезапрашивает элемент при перетяживании края дока — снимок свойств остаётся прежним, обновление только по кнопке.
- Инспектор DOM: миниатюра выделенного элемента — кнопка снимает прямоугольник элемента со страницы и показывает его в панели, с повторным снятием по требованию.
- Инспектор DOM: режим прицела — кнопка включает выбор элемента кликом прямо на странице (перекрестие и подсветка под курсором), клик заполняет инспектор, Esc или повторное нажатие выключают режим.
- Инспектор DOM: блок «Слушатели событий» — показывает привязанные к элементу обработчики с типом события, флагами capture/once/passive и адресом исходника, текст обработчика копируется одной кнопкой;
- Починка клиента SOAP: set_headers и call_by_bodies проверяют корректность XML запроса и тела (понятная ошибка вместо исключения разбора XML), set_version отклоняет неверную версию (false), call_from_xml не отдаёт пустой ответ при ошибке разбора.
- Команда SOAP set_timeout (в секундах, <=0 означает отсутствие таймаута) одинаково работает на всех языках (PHP/PY/JS/CS).
- ИИ Ассистент: диалог настроек в Windows Studio больше не остаётся на спиннере — страница получает текущие настройки сразу, ответ моста возвращается в окно;
- ИИ Ассистент: панель чата в Windows Studio по умолчанию открывается справа, а не в нижней полосе отладки;
- Редактор: в оболочке Telerik поле кода занимает всю ширину панели;
- Браузер: в оболочке Telerik при открытии занимает всю область документа;
- Строка состояния: в оболочке Telerik индикаторы снова справа, а не пачкой слева;
- Соединения: set_mac_address_by_number менял MAC только у адаптера №0 и сообщал об успехе даже при отказе Windows — теперь работает любой номер адаптера, а номер читается и меняется по одному списку (раньше get и set указывали на разные устройства), и ошибка попадает в лог;
- Соединения: set_local_ip больше не сообщает об успехе, когда Windows отклонила настройку — код возврата WMI проверяется, и в лог пишется, что именно не сработало;
- Соединения: get_connection_parameters на компьютере без настроенного модема больше не отвечает «not responded» — флаги соединения читаются независимо от того, установлен ли RAS;
- Исправлено:
folder->(rar()$folder->rar) - параметр опций доходит до Rar.exe, дефолт исправлен с нерабочего -mdE на a -r -ep1 -s -m5; если WinRAR лежит не по дефолтному пути, в лог пишется его путь, а не errorlevel 9009; - Исправлено: логические команды робота больше не читаются как «нет» — программа отдаёт «True»/«False» с заглавной буквы, а все клиенты (PHP, C#, JS, Python) сравнивали точно с «true», поэтому
is_connect_to_internet(),check_ping_site()и прочие всегда возвращали роботу false; - Соединения: enable_proxy больше не теряет память, не роняет команду ошибкой и подтверждает результат чтением прокси обратно; get_current_proxy не падает, если соединения с таким именем нет;
- Соединения: get_real_ip отдаёт только настоящий IP-адрес — раньше вместо адреса мог вернуться HTML страницы или страница с проверкой, и к адресу приписывался хвостовой перевод строки;
- Соединения: restart_lan_by_number и set_local_ip считают сетевые адаптеры по тому же списку, что и чтение и смена MAC, — раньше «адаптер №1» означал разные устройства в разных командах;
- Соединения: get_all_connection_ras больше не добавляет пустой элемент в конец списка, hang_up_ras дожидается реального разрыва соединения, check_ping_site отбрасывает путь и порт из адреса, restart_lan проверяет результат отключения и включения адаптера и сравнивает имя без учёта регистра;
- Соединения: create_vpn честно сообщает «команда не поддерживается» вместо того, что VPN создался не бывает — метод не реализован и раньше всегда отвечал «не получилось»;
- Исправлено:
folder->- Rar.exe запускается напрямую, а не через bat рядом с папкой (архиватор 32-битный или установлен на пользователя - находится сам, в Program Files (x86) и %LOCALAPPDATA%\Programs\WinRAR); зависшая внешняя утилита снимается через 30 минут вместо ожидания 100; код возврата 1 (предупреждения, архив записан) больше не ошибка.rar() - SEO (seo): удалена команда get_alexa_rank - сервис Alexa закрыт, метод всегда возвращал заглушку;
- SEO (seo): реализована команда get_sitemap - обход страниц того же хоста с записью XML-карты сайта (urlset) в пределах timeout (защита - не более 500 страниц);
- SEO (seo): get_all_sitemap_links теперь учитывает separator; внутренние и внешние ссылки определяются по хосту через Uri, мусорные схемы (mailto:, javascript:) отбрасываются, дубли убраны, ошибки записи файла возвращаются текстом вместо молчания;
- Соединения: enable_proxy больше не сообщает об отказе там, где прокси применён, — Windows отдаёт адрес либо как «host:port», либо как «http=host:port;https=host:port», а прямое подключение помечает «direct», и сверка шла по строкам;
- SEO (seo): чтение robots.txt (get_robots_txt) и проверка запретов (is_allowed_by_robots) - учитывается секция User-agent *, подстановки * и $, побеждает самое длинное правило;
- SEO (seo): чтение готового sitemap.xml (get_sitemap_urls) с распознаванием sitemap-index и пределом числа карт;
- SEO (seo): таймаут обхода влияет на каждую страницу целиком - больше нет отдельного потолка ожидания в 30 секунд;
- Selenium: сообщение «команда только для Selenium-браузеров» называет саму команду - раньше вместо имени в лог попадало служебное MoveNext, и было непонятно, какая команда не сработала;
- Selenium: add_page без типа страницы открывает вкладку, а не отдельное окно; тип, отличный от tab и window, отклоняется с записью в лог;
- Selenium: close_page без номера закрывает текущую страницу (раньше - нулевую), номер вне диапазона и пропущенный номер set_active_page пишутся в лог, а не теряются в пустом catch драйвера;
- Selenium: get_opened_page_titles больше не блокирует поток робота, add_plugins не включает глобальный флаг плагинов при пустом списке, set_model_binary_path честно сообщает, что команда не поддерживается.
- Починка клиента SOAP: замена IHttpClientFactory (убрана привязка к Logging 10.x), таймаут <=0 больше не ломает отправку запроса, чтение ответа 1/2, action в Content-Type для SOAP 1.2.
- Добавлены методы SOAP get_last_request/get_last_response (диагностика) на всех языках; WF-компоненту SetTimeout вернули (был ошибочно переименован в SetVersion).
- SOAP: добавлена авторизация Basic (set_authorization), insecure-флаг для сертификатов (set_allow_insecure), чтение Fault (is_fault/get_faultstring); это же для REST set_authorization (был недоступен ранее).
- SEO (seo): get_sitemap_urls, get_all_sitemap_links и get_all_outside_links больше не теряют последний адрес в списке (исправлена обрезка по разделителю в TrimLastSeparator);
- SEO (seo): get_sitemap больше не переводит вкладку браузера робота на сторонний сайт - обход идёт прямым HTTP-запросом, недоступная страница перезапрашивается;
- Браузер: ожидание загрузки страницы больше не срывается на первом же check - навигация отслеживается по событию загрузки, а не по опросу (is_busy сразу после перехода на страницу отдавал «занят» как false, и код успевал прочитать старый DOM);
- Браузер: WaitLoading больше не блокирует поток интерфейса и возвращает Task, поэтому ожидание можно дождаться;
- SEO (seo): недоступный сайт больше не выглядит как пустой sitemap - get_sitemap_urls отдаёт «No Sitemap», get_robots_txt и is_allowed_by_robots отдают «Error: ...» с адресом, а не текст внутренней ошибки WebClient и не «таймаут»;
- $raw: get_last_* с номером по умолчанию -1 больше не роняет команду (отрицательный номер трактуется как «последний»); в Debug-сборке это было падение процесса.
- $raw: clear_last_requests_array умеет фильтровать по URL: параметры url и exactly доведены во всех 7 языковых обёртках и в WF-активити, команда больше не возвращает true, не удалив ничего.
- $raw: хуки (set_hook_on_begin_transaction / on_response / on_readed) больше не подвешивают браузер - ожидание результата ограничено 30 секундами с записью в лог; исправлено чтение не того файла в post datas.
- $raw: геттеры ответов и редиректов больше не читают коллекции без лока - при параллельной записи из CEF и прокси робот мог получить обрезанный список; лок один на всё состояние $raw, включая правила фаервола.
- $raw: хук на начало запроса на движке GeckoFX больше не дублирует протокол - имена файлов, ожидание с таймаутом и разбор ответа вынесены в общий код; на GeckoFX post datas, которые вернул хук, теперь честно пишутся в лог как неприменённые (движок не умеет подменять тело запроса) вместо молчаливой подмены.
- $raw: разбор post datas хука исправлен - элементы больше не разбиваются по каждому переводу строки, поэтому подмена post применялась неверно на всех движках; заголовки из хука обрезаются по краям.
- Vision: Tesseract OCR: параметр timeout распознавания перестал игнорироваться, добавлена проверка наличия Tesseract и понятная ошибка вместо исключения движка;
- Vision: Yandex Vision: get_region_by_text действительно ищет область по тексту (раньше игнорировал текст), починён невалидный JSON запроса, убраны зашитые ключи из исходника, добавлены таймаут и разбор ошибок HTTP;
- Vision: Image: create_qr_code, convert, unborder, get_rotated_angle, get_dpi, save_as_blackhat и параметры Tesseract доступны как действия в студии;
- Vision: Image: add_image больше не затирает исходную картинку при неизвестной стороне и корректно склеивает по сторонам up/down;
- Vision: Image: убрана путаница struct_h/struct_v в remove_lines и get_lines, get_lines теперь отдаёт регионы в том же формате, что и Tesseract OCR;
- Vision: категория Vision и действия Image Tools: Regions больше не показываются как «Computer Vision» и «без категории», в английской локализации появился Tesseract OCR;
- Vision: FineReader OCR: распознавание и конвертация больше не висят бесконечно (добавлен таймаут), результат пишется во временный файл, язык передаётся в кавычках;
- Vision: из C#-API объекта image убраны неработающие вызовы recognize_by_anticaptcha/rucaptcha/bypasscaptcha - серверной реализации нет; PHP-версия xhe_image.php и плагин Captcha работают как раньше.
- Vision: Tesseract OCR: распознавание больше не оставляет временные файлы в папке порта и во временной папке - конфиг и результат удаляются после каждого вызова;
- Vision: Tesseract OCR: действие Set Denied Chars переименовано (было Set Denieded Chars), старое имя остаётся рабочим, но скрыто из конструктора; метод tesseractOCR.set_denied_chars доступен в сценариях;
- Vision: прямоугольники Vision (XHE_Rectangle) корректно печатаются в JSON - прежний формат нельзя было разобрать обратно.
- Vision: языки распознавания задаются единым образом для всех трёх объектов - "ru+en", "rus+eng" и "Russian English" понимаются одинаково и приводятся к кодам нужного движка;
- Vision: Tesseract OCR - параметр "версия движка" больше не вводит в заблуждение: на хостах без нативной библиотеки в лог пишется, что отработал консольный Tesseract 5;
- Vision: описание уровня сегментации Tesseract OCR исправлено - уровень 4 (символ) недоступен, вместо него возвращаются слова.
- Инспектор DOM: блок «Слушатели событий» — показывает привязанные к элементу обработчики с типом события, флагами capture/once/passive и адресом исходника, текст обработчика копируется одной кнопкой.
- WebDAV: исправлена потеря данных - put_file с перезаписью больше не удаляет папку на сервере (PROPFIND отвечает и на папку, поэтому is_file_exists считал папку файлом); is_file_exists и is_directory_exists теперь различают файлы и папки.
- WebDAV: get_folder больше не портит имена файлов при указании пути с ведущим или завершающим слэшем, имена с '+' и пробелами сохраняются как есть, пустые папки создаются.
- WebDAV: put_folder создаёт все промежуточные папки на сервере, ошибка по одному файлу не отменяет загрузку остальных.
- WebDAV: connect больше не выполняет лишний запрос, ошибки проверок существования пишутся в лог (кроме штатного "элемента нет").
- WebDAV: в C# и WF list_files/list_folders возвращают список файлов, а не JSON-строку; в C# передан таймаут операции; из put_folder/get_folder в C# и WF убран неработавший параметр IsFailOnExists.
- WebDAV: list_files/list_folders больше не возвращают дубликаты и саму запрошенную папку.
- WebDAV: put_file и create_directory сами создают промежуточные папки на сервере (раньше нужен был отдельный вызов для каждого уровня).
- WebDAV: get_file больше не удаляет локальный файл, если загрузка не удалась или сервер не подключён - файл сначала скачивается во временный, и заменяется только при успехе.
- Submitter: пол `sex_for_RU` больше не зависит от регистра - `Man`/`MAN`/`мужской` больше не выдают женские имена; добавлены синонимы (male/f/woman/women/жен/муж), неизвестное значение пишется в лог и трактуется как man.
- Submitter: `lang` больше не падает с NullReferenceException, если язык не передан (раньше падал `lang.
ToLower()`); добавлен единый дефолт `EN` во всех 4 шаблонах (PHP/JS/PY/C#). - Submitter: число из `generate_random_number` больше не зависит от локали машины - точка как разделитель дробной части задаётся явно; в C#-шаблоне убран `Convert.ToDouble` без CultureInfo, из-за которого был FormatException на en-US.
- Submitter: кодировка БД задаётся явно (WIN1251) вместо закомментированной строки - поведение на русских таблицах больше не зависит от настроек машины.
- Submitter: `generate_random_text` и `generate_random_nick_name` останавливаются при остановке скрипта и не крутят длинный результат до конца; добавлена проверка `len <= 0` и `min > max`.
- WebDAV: rename теперь работает и поверх существующего файла (раньше сервер отвечал 412) - старое содержимое цели уводится в сторону и удаляется только после успеха; если переименование сорвалось, цель возвращается на место, а если не вернулась - в лог пишется, под каким именем её искать.
- WebDAV: общий список WebDAV-соединений защищён блокировкой - параллельные операции роботов больше не гоняются по общему словарю.
- Submitter: если файла БД нет, больше не делается 100 попыток подключения по 50 мс - причина сразу пишется в лог (раньше вызов висел 5 секунд и молча возвращал пустое значение).
- Submitter: ошибка чтения из БД больше не проглатывается пустым catch - попадает в лог; соединение корректно закрывается, таблица с 0 или 1 строкой больше не роняет вызов.
- Submitter: генерация случайного текста исправлена - в режиме "только кириллица" больше не выдаются латинские y и x, а буква я стала достижимой; в латинском режиме появилась буква y. Ник больше не теряет букву z и гласную y.
- Submitter: генератор случайных чисел стал потокобезопасным - при многопоточном скрипте больше не выдаются повторы и нули (затрагивает все объекты Studio, а не только Submitter).
- Submitter: на Linux методы, читающие базу, теперь сразу сообщают о недоступности и возвращают прочерк вместо зависания на 5 секунд; generate_random_text, generate_random_nick_name и generate_random_number работают как прежде.
- WF: роботы, сохранённые до 04.10.2026, снова открываются в редакторе - свойство IsFailOnExists у WebDAV-папок возвращено как нерабочее (оно и раньше никуда не передавалось), а ActivityXamlServices.Load больше не роняет такой XAML.
- Инсталлятор теперь ставит Visual C++ 2010 x64: он нужен встроенному Firebird, без него генерация случайных данных (Submitter) не работает.
- Исправлен выбор случайного элемента: при ровно одном подходящем элементе (одна ссылка на странице, один файл в папке, один прокси) методы select_random, select_random_by_number/name/attribute, get_random_file, get_random_file_content и ротация прокси больше не падают, а возвращают false или пустое значение. Причина: диапазон выбирался на один элемент меньше нужного, поэтому последний элемент списка не выбирался никогда, а при единственном кандидате вызов падал с ошибкой.
- Активация: раньше выданные лицензионные коды снова принимаются без окна активации. Аппаратный ID зависел от того, какой сетевой адаптер окажется первым в списке, а список перестал быть стабильным - на части машин ID сдвигался, и верный код не подходил.
- Панель отладки: предупреждения лога в тёмной теме — светло-синий (#7EB8FF) вместо тёмного CSS blue, чтобы DEMO и другие WARN читались;
- При закрытии Studio порт приёма команд освобождается сразу (до остановки браузера и сохранения), чтобы следующий запуск мог занять тот же порт;
- Панель отладки: закладка «Журнал WF» убрана — поток WF теперь радиобокс на вкладке «Сообщения» (рядом с Вывод/Служебное);
- Панель отладки: выбранный радиобокс канала сообщений (Вывод/WF/…) запоминается между открытиями панели и перезапусками;
- Редактор: правый щелчок по выделенному тексту больше не сбрасывает выделение;
- WF: действие shell_execute переименовано в «Выполнить через shell» (было «Выполнить операцию над файлом»), чтобы находилось поиском по shell.
- app.run_as_python больше не виснет на большом выводе скрипта: вывод и ошибки читаются параллельно с исполнением, Studio возвращается сразу с полным текстом (раньше ожидание завершения до чтения вывода вешало Studio до ручного снятия python).
- run_as_console и run_as_js (запуск node) больше не виснут на большом выводе — та же причина и то же лечение, что у run_as_python.
- run_as_php заработал: старт с перехватом вывода больше не бросает исключение, большой вывод возвращается как у остальных run_as_*.
- run_as_js (запуск Node.js): скрипт не запускался из-за неверно собранного пути к node.exe — теперь Node.js берётся из настроек и run_as_js возвращает вывод целиком;
- активация по файлу лицензии: на вкладке «Основные» появились галка «Использовать лицензию с сервера» и поле имени файла. Файл лицензии (по умолчанию license.lic рядом с программой) проверяется офлайн — без обращения к сайту лицензий;
- файл лицензии теперь читают обе линии: раньше его видел только RPAbot, то есть Хуман Эмулятор без сайта не активировался;
- баг фикс /check_license: проверка выполнялась до загрузки настроек и пустого code.txt, поэтому писала "unativated" на любой активированной коробке;
- баг фикс App.run_as_python / run_as_js / run_as_php / run_as_console: дочерний скрипт снова дозванивается в тот же хост — раньше родитель ждал его, удерживая единственный командный канал, и Studio зависала до ручного снятия процесса python (симптом был и в PHP-роботах, и в workflow); ребёнку передаётся RPABOT_HOST_URL с текущим портом;
- баг фикс логгера: аргументы
init(...)снова доезжают до движка — минимальный уровень записи, вывод в панель и вызов через shell применяются (раньше ключи аргументов не совпадали с ожидаемыми и настройки терялись). Отсутствующие параметры больше не подменяются нулями: чтение журнала без явного уровня возвращает записи всех уровней (раньше — пусто), страница журнала по умолчанию 100 строк, разделитель CSV — «;»; - онлайн-проверка лицензии больше не вешает запуск: ответ сайта лицензий ждётся не дольше 8 секунд (раньше при недоступном сайте Studio стояла до 100 секунд), а неразборчивый ответ сервера (страница не найдена, ошибка хостинга, подменная страница провайдера) пишется в журнал как «лицензия не проверена» и подтверждением не считается;
- Папка: get_all_files для отсутствующей папки возвращает пустой JSON-массив путей — робот «Получить все файлы» проходит, если папки нет;
- баг фикс инсталлятора RPAbot: тихая установка (/TYPE=full) снова ставит Python и Node.js — раньше мастер снимал эти компоненты даже в тихом режиме, и роботы на .py/.js не запускались на только что поставленной копии;
- Папка: get_all_folders для отсутствующей папки возвращает пустой JSON-массив путей — робот «Получить все папки» больше не падает на ответе false;
- PHP-роботы запускаются и без установленных внешних плагинов: если плагин не установлен, его объект просто отсутствует, а скрипт больше не прерывается фатальной ошибкой;
- $raw: «открыть следующую ссылку в новой вкладке» (set_next_url_for_open_in_new_tab) больше не теряет адрес — вкладка открывается до отметок отмены запроса, и при сбое открытия страница не пропадает молча;
- баг фикс случайного выбора: последний элемент выборки снова участвует в розыгрыше (строка текстового файла, опция select, строка из входящих данных), пустой набор даёт честный отказ вместо исключения;
- баг фикс внешних процессов: программа, не ответившая за отведённое время, снимается вместе с дочерними процессами (раньше зависшая оставалась в системе), компиляция C#-скрипта по таймауту снимает зависший csc.exe;
- баг фикс чтения файлов: определение кодировки текстового файла больше не падает на файлах короче трёх байт и не держит файл открытым при ошибке;
- баг фикс Microsoft Edge: запуск драйвера ограничен таймаутом — создание браузера больше не может висеть бесконечно.
- баг фикс дат: строки дат из роботов (Telegram, Excel, Exchange, журнал, cookies) читаются одинаково на любой языковой настройке Windows — «18.10.2026» и «01.02.2026» (1 февраля) больше не зависят от локали машины.
- баг фикс переключателя прокси: одновременная работа нескольких роботов с общим списком прокси больше не портит список — файловый замок операций стал атомарным, а замок, оставшийся после сбоя процесса, не блокирует остальных.
- Tesseract OCR обновлён до версии 5.5.3 (раньше в коробке лежал 5.2.0);
- баг фикс хука ответа $raw: хук «на ответ» (set_hook_on_response) действительно меняет ответ — заголовки ответа берутся из .out, тело из .out2, а <disabled> отдаёт пустой ответ с 403; раньше хук подменял заголовки запроса, и страница оставалась пустой.
- баг фикс Microsoft Edge: запрещённые правила $raw (add_disabled_request_url / add_disabled_response_url) реально останавливают загрузку — запрос получает пустой ответ 403, а get_last_response_buffer заполняется из полученного потока вместо пустой строки.
- баг фикс файловых логов $raw: save_server_log_to_file и save_browser_log_to_file действительно пишут в файл — лог ответов сервера и лог запросов браузера сохраняются независимо от окна RAW-лога, относительный путь считается от папки скрипта, а недоступный путь команда честно отклоняет и пишет причину в журнал ошибок.
- баг фикс входных файлов хука $raw: .in_N/.in1_N/.in2_N пишутся с созданием каталога скрипта, и ошибка записи больше не роняет движок — раньше запись голым File.WriteAll* падала исключением прямо в потоке браузера, если хук лежал в подпапке или путь был занят.
- баг фикс служебной метки working.txt: пока хост ждёт дочерний скрипт, параллельные команды больше не сталкиваются на одном файле, а недоступный каталог порта не превращает исправную команду в ответ ERROR — сбой записи метки уходит в журнал ошибок.
- баг фикс перехода к строке ошибки workflow: редактор и отладчик больше не принимают «строку 0» или отрицательный номер за адрес сбоя, а разбор маркера «Линия N» общий для раннера и редактора и не зависит от культуры — раньше хрупкая арифметика подстроки могла дать мусорный номер или молча проглотить ошибку.
- Electron и Studio: библиотека промптов ИИ-чата — панель с поиском, группами, вкл/выкл, созданием, правкой, переименованием и удалением; 56 встроенных стартовых промптов перенесены туда же и дальше правятся как обычные записи, при пустой библиотеке — кнопка «добавить встроенные»; быстрые команды из чата: пункт меню «…» и /prompt <имя> вставляют текст в поле ввода; хранение — папка робота (.agents\prompts) и общая папка настроек, проектный промпт перекрывает общий по имени;
- Electron и Studio: библиотека навыков ИИ-чата — вторая вкладка панели библиотеки с поиском, вкл/выкл, созданием, правкой, переносом в другую группу и удалением; навыки читаются из двух папок (.agents\skills проекта и общая папка настроек), проектный перекрывает общий по имени; выключенный навык исчезает из каталога модели и не грузится загрузчиком; в каталог попадает не более 20 включённых навыков, панель предупреждает об обрезке;
- Tesseract OCR: десять новых команд для роботов. get_words отдаёт распознанные слова с координатами и уверенностью движка (0-100), find_all_by_text - все вхождения надписи на картинке, get_point_by_text - точку внутри надписи, чтобы по ней кликнуть мышью, recognize_screen распознаёт текст прямо с экрана (весь экран или заданную область) одним вызовом; check_available, get_version и get_languages отвечают, установлен ли движок, какой версии и какие языки ему доступны; set_timeout ограничивает ожидание распознавания, reset_params сбрасывает разрешённые и запрещённые символы и свои параметры, get_last_error называет причину последнего сбоя вместо молчаливой пустой строки;
- баг фикс Tesseract OCR в PHP: get_segmented_regions больше не обрывает робота фатальной ошибкой типа - список регионов разбирается как список. Команда падала на любом изображении с текстом;
- Studio и Electron (наблюдаемость): пустые catch больше не молчат - по счётчику debt-meters 713 → 389, в топ-20 файлах 373 → 52; в горячих UI- и браузерных путях сбой уходит в отладочный вывод, в файловых, серверных операциях и настройках - в журнал ошибок, уборка временных каталогов AI-харнесса сведена в общий хелпер;
- Vision: yandexVision.get_segmented_regions отдаёт регионы единым контрактом {"items":[{X,Y,Width,Height}]}, как tesseractOCR - активность возвращает XHE_Rectangles, PHP-шаблоны отдают список, JS/PY - объект с items; раньше возвращался сырой JSON Yandex;
- Vision: create_qr_code рисует матрицу поблочно (LockBits + Marshal.Copy) вместо SetPixel на каждый пиксель - на QR 300x300 больше нет 90 тысяч вызовов, картинка та же.
- Vision: настройки OCR больше не общие на процесс - у каждого скрипта свои язык, ключ и папка Yandex Vision, папка и язык FineReader, разрешённые и запрещённые символы, свои параметры и таймаут Tesseract; set_* одного робота больше не меняют распознавание соседнего.
- баг фикс SEO-команд (get_sitemap, get_sitemap_urls, get_all_sitemap_links, get_all_outside_links, get_robots_txt, is_allowed_by_robots): параметр timeout из скрипта доходит до робота — раньше шаблоны PHP/JS/PY/C# его не передавали, и ожидание всегда оставалось 99999 мс; адрес, отвечающий медленно, теперь отвечает «Timeout», а недоступный адрес — «No Sitemap» или ошибкой, и эти два случая различаются честно.
- ИИ Ассистент: просмотр structured-лога — пункт «Структурированный лог» в меню «…» панели ИИ чата показывает файлы structured-логов порта с фильтрами по сессии, роботу, уровню и тексту, раскрытием ошибки и стека и экспортом отфильтрованных событий в JSONL; ведение лога переключается галочкой «Вести structured-лог (JSONL)» в настройках, вкладка «Логи»;
- ИИ Ассистент: структурированный лог ведётся по умолчанию — события Studio и роботов пишутся в JSONL рядом с logging.txt без настройки, а у существующих установок его включает миграция настроек; галочка «Вести structured-лог (JSONL)» на вкладке «Логи» по-прежнему выключает его. Папка логов порта ограничена 512 МБ: при переполнении удаляются самые старые файлы, поэтому лог не растёт бесконечно;
- баг фикс настроек RAW-лога: галочки «запросы на загрузку» и «загрузка завершена» больше не перепутаны — каждая показывает и сохраняет свой флаг (раньше при открытии настроек они отображались наоборот, а нажатие OK меняло флаги местами);
- баг фикс page-команд (load_web_page, send_get_query, send_post_query): запрос больше не ждёт браузерный User-Agent из JavaScript (пока страница не загружена, это два простоя примерно по 6 с на каждый вызов) и уходит с настоящим User-Agent движка; Referer берётся из профиля браузера. Выборка sitemap на свежем браузере ускорилась с ~18 с до 0.3 с.
- баг фикс UI Automation: в удалённых (RDP) сессиях проверка доступа к рабочему столу ошибочно считала доступ закрытым, и команды по точке (get_from_point) отвечали -1 на живом рабочем столе; проверка больше не зависит от непустого имени рабочего стола.
- баг фикс $raw: get_last_response_buffer теперь отдаёт тело ответа, как оно пришло от сервера, а get_last_readed — то, что робот прочитал после правил замены и хука чтения (раньше обе команды отдавали одно и то же); на пустом теле обе отвечают false, а не пустую строку.
- баг фикс хука ответа $raw: после подмены ответа браузер больше не перезапрашивает страницу у сервера и не показывает оригинал — подменённый ответ закрепляется за запросом и доезжает до страницы (живой прогон 23.10.2026 показал, что предыдущая правка на страницу не попадала), <disabled> отдаёт пустой ответ с 403.
- При работе в нескольких окнах состояние $raw теперь своё у каждого окна: массивы последних запросов/ответов/редиректов, правила блокировки и замены, дополнительные заголовки и хуки запроса/ответа/чтения больше не общие на процесс. Робот в одном окне больше не видит запросы другого окна, а set_hook_* во второй вкладке не перебивает первую; если робот намеренно читал запросы из другого окна, перенесите эту часть сценария в то же окно, где он работает.
- для движка Firefox (GeckoFX): $raw теперь пишет ответы и редиректы, применяет правила замены и хуки ответа/чтения — get_last_response_url/buffer/readed и get_last_redirect_url отдают ответы, тело до и после замены, а хук ответа может подменить заголовки и тело;
- баг фикс $raw на Microsoft Edge: для запросов сохраняются POST-данные (get_last_request_post_datas), длина тела ответа считается в байтах, а RAW-лог ответа показывает заголовки запроса; Accept-Language приходит из профиля браузера так же, как в Chromium.
- обновление среды выполнения: PHP 8.5.12 (ZTS, Visual C++ 2022) вместо 8.4.13 и Node.js 26.12.1 вместо 20.17.0 — закрыты две критические уязвимости удалённого выполнения кода в PHP (CVE-2026-109618, CVE-2026-109619, CVSS 9.2), исправленные в 8.5.12, и прекращена работа на ветке Node.js 20, поддержка которой закончилась 30.04.2026.
- баг фикс ожидания загрузки: wait_download_and_get_file_path больше не отдаёт пустой путь, если скачивание уже началось, но движок ещё не успел зарегистрировать загрузку, — адрес файла ждётся до истечения заказанного времени (раньше путь терялся молча, хотя файл лежал на диске);
- баг фикс панели отладки: вывод echo с кириллицей в скриптах PHP больше не превращается в «???? ??????» при включённой кодировке UTF-8 в редакторе — кодировка stdout процесса задаётся детерминированно из настроек файла, а не от системной ANSI code page; исправление работает на любой локали Windows (раньше ломалось на английской и с включённой UTF-8 beta).
- баг фикс ожидания JS на странице с фреймами: WEB::
$browser->больше не печатает в консоль «javascript error: Cannot read properties of undefined (reading 'document')» и не читает чужой документ — список скриптов фрейма теперь берётся из главного документа, а не из самого фрейма, где window.frames[номер] оказывается вложенным фреймом (или отсутствует); раньше проверка второго фрейма падала с ошибкой, а первого — молча читала документ его ребёнка. Замер 06.11 (Firefox Selenium WebDriver, страница с двумя фреймами, у первого есть вложенный): прежняя сборка — wait_js=false через 12,6 с, исправленная — true через 1,1 с;wait_js() - баг фикс возврата wait_js: ожидание больше не заканчивается успехом досрочно — ответ сервера «False» сравнивался с false как строка (в PHP «False» == false есть false), поэтому wait_js возвращал true через 1 с, даже когда скрипты страницы и фреймов не дождались, и ошибка в консоли оставалась единственной зацепкой. Замер 06.11: та же сборка с исправленным фреймом на прежнем сравнении показывала true за 1,1 с при фактическом false проверки, после правки — true за 1,1 с при реальном true;
- баг фикс нумерации DOM-интерфейсов: inner_number у элементов, полученных get_by_number/get_by_inner_text, больше не растёт от запуска к запуску внутри одной сессии Studio — очистка состояния скрипта теперь сбрасывает и реестр интерфейсов, и счётчик (раньше карта чистилась, а счётчик оставался живым весь процесс, поэтому второй запуск того же скрипта давал 5,6,7 вместо 0,1,2). Замер 07.11 (Firefox Selenium WebDriver, my.arbitr.ru, пользовательский скрипт): два запуска в одном процессе Studio — 0,1,2 и 0,1,2;
- Браузер: несовместимость драйвера WebDriver больше не показывает модальное окно — подсказка «замените файл» уходит в logging.txt, а очередь команд исполнителя остаётся живой; раньше переход на модель с чужим драйвером запирал Studio до ручного закрытия окна;
- Браузеры: обновлены драйверы и встроенный движок — Selenium WebDriver 4.52.0, ChromeDriver 156.0.8078.80, Microsoft Edge WebDriver 156.0.4314.23, CefSharp/CEF 156.0.150 (GeckoDriver 0.37.1 уже последний на feed);
- Браузеры: рабочая копия драйвера в папке приложения (<driver>_<порт>_<номер>.exe) теперь обновляется, когда пакет стал новее копии; раньше она создавалась один раз, и движок запускал прошлый драйвер даже после его обновления — после замера 07.11: wait_js=true для Chrome, Edge, Firefox и CefSharp;
- Трей: щелчок по иконке больше не прерывается ошибкой «Ссылка на объект не указывает на экземпляр объекта» — окно показывается без обращения к объекту браузера; регрессия меряется автоматическим тестом, а не кликом;
- Установка: в коробку снова попадает сборка Selenium WebDriver — пакет начиная с 4.48 переименовал её (WebDriver.dll -> Selenium.WebDriver.dll), установщик возил старое имя, и в установленной программе первый же внешний браузер падал с «Не удалось загрузить файл или сборку Selenium.WebDriver»; в папке сборки сборка лежала на месте, поэтому на рабочем месте дефект был не виден (замер 07.11: в установленных копиях Studio и Runtime загрузка сборки — ошибка, в dev-дереве и на кладе — успешно);
- Браузер: ожил движок Yandex Browser Selenium WebDriver — ему больше не передаётся явный каталог профиля (--user-data-dir), который его yandexdriver не принимает, и в поставку положен yandexdriver 26.10.0.1796 вместо декабрьского 26.0.6478.182. Замер 07.11: заголовки example.com и ya.ru читаются, wait_js=true, запуск Studio с этим движком — 18 с вместо 4,5 мин; профиль движка теперь ведёт сам драйвер во временной папке, поэтому cookies между запусками не сохраняются;
- Автозагрузка Selenium-драйвера при несовпадении версии браузера (Chrome, Brave, Opera, Gost, Yandex, Edge, Firefox): драйвер нужной версии скачивается в кэш webdrivers, повтор запуска автоматический; отключается галкой в настройках браузера;
- баг фикс диалога «Добавить код»: при масштабе экрана 150% окно занимало 5136x2850 — больше двух экранов, и раскладка не держалась при изменении размера; теперь 1362x986 (дизайн x 1,5), списки и кнопки растягиваются вместе с окном. Замер 11.11 при 150% DPI по 28 диалогам: ни один не выходит за пределы экрана. Там же исправлен редактор шаблонов (ряд «Добавить/Удалить/Импорт/Экспорт/Сохранить» лежал за нижним краем окна), «Перейти», ввод строки и кода капчи, статистика использования и настройки плагинов;
Показана последняя запись (в логе 120 записей версий). Полный лог Studio — change_log_studio.txt, полный журнал беты 8.x — change_log_studio_8.txt, исторический лог классической линейки — changelog.txt.
Смотрите также: FAQ, PHP, что нового в 7-й версии, демо, поддержка.
Готовы автоматизировать браузер?
Актуальная линейка — Human Emulator Studio и RT. Посмотрите примеры задач, скачайте демо или сразу купите лицензию. Вопросы — в Telegram или на странице поддержки.
Купить → | Что нового → | О Studio → | FAQ →