Плагины
Установка плагинов .opensd, разрешения, журнал, перезапуск и режим разработчика.
Приложение запускает плагины SDK 1.0, которые распространяются файлами .opensd. Плагины Elgato, AJAZZ и StreamDock и пакеты SDK 0.2 больше не поддерживаются. Как писать плагины, описано в разделе SDK.
Как работает плагин
Код плагина не исполняется в процессе приложения и не получает прав пользователя. Каждый плагин работает в своём изолированном воркере движка WebView: у него нет файлов, процессов, окна приложения и сети. Подписи, картинки и настройки кнопок плагин меняет командами, которые приложение проверяет. Всё, что выходит за песочницу, требует разрешения.
Плагин без видимых кнопок и таймеров ничего не потребляет: приложение не опрашивает плагины, события приходят только по делу.
Установка
«Настройки», «Плагины», «Установить из файла», затем выберите файл .opensd. Приложение проверяет пакет до установки:
- индекс
index.jsonдолжен совпадать с каждым файлом по размеру и SHA-256; - в пакете не должно быть исполняемых файлов Windows, macOS и Linux;
- модуль WebAssembly может импортировать только
opensd.send; - манифест должен быть корректным и совместимым с версией приложения.
Установка только распаковывает и проверяет файлы, разрешения при этом не выдаются. Плагины лежат в папке данных приложения, в каталоге opensd/plugins; кнопка «Открыть папку плагинов» показывает её. Повторная установка того же id заменяет старую версию целиком, а при ошибке возвращает прежнюю. Пока идёт dev-сеанс плагина, установить его из файла нельзя.
Разрешения
Если плагин просит доступ к системе, в его строке появляется кнопка «Разрешить доступ». Окно «Доступ плагина к системе» перечисляет, что именно плагин просит: порты на этом компьютере, адреса в интернете, запуск программ, запись в буфер обмена. Пока доступа нет, плагин работает и помечен «ждёт разрешения», но такие операции получают отказ.
- Согласие привязано к содержимому раздела
[permissions]. Если обновление просит другое, согласие запрашивается заново. - «Отозвать доступ» сразу перезапускает плагин без доступа.
Разрешайте доступ только доверенным плагинам
Разрешение это решение пользователя, а не проверка автора. Например, доступ к порту отладки браузера даёт плагину полный контроль над браузером, включая открытые сессии.
Состояние, журнал и перезапуск
Под названием плагина видны версия, тип кода (WebAssembly или JavaScript), число действий и состояние: «запускается», «ждёт разрешения», «перезапускается после сбоя», «остановлен после сбоев».
- Зависший или упавший плагин приложение перезапускает само с нарастающей паузой. После шести сбоев подряд плагин остаётся остановленным, пока его не перезапустят кнопкой.
- «Журнал» показывает файл журнала плагина в папке. Предыдущий запуск хранится рядом в
<id>.old.log. В него попадают сообщения плагина, ошибки обработчиков и причины перезапусков. - «Настройки» в строке плагина открывает окно настроек всего плагина, если оно у него есть.
Режим разработчика
Переключатель «Режим разработчика» в «Настройки», «Плагины» разрешает CLI opensd dev подключиться к приложению. Приложение записывает порт и токен в opensd-dev.json в папке данных и принимает соединения только с 127.0.0.1. Пока идёт dev-сеанс, плагин из проекта заменяет установленную копию с тем же id и отмечен как «dev-сеанс». Подробности в разделе CLI.
Встроенные модули
Встроенные действия приложения показываются в том же списке с пометкой «Встроенный». Их нельзя удалить. В группе «Доступные» перечислены встроенные модули, которые ещё не добавлены.