Интерфейс
Кнопки в поле ввода, действия на сообщении, пункты контекстного меню, кнопки в шапке, горячие клавиши, своя страница настроек, боковые панели и CSS для всего приложения.
Плагины
Расширяй NeyLivo плагинами, которые раздаются одним файлом .neylivo. Такой пишется за вечер, отправляется другу прямо в чат и ставится из сообщения.
В большинстве мессенджеров можно выбрать тему. В NeyLivo можно поменять то, что приложение делает. Нужна кнопка в поле ввода, которая бросает кубик; панель со статусом выкладки у твоей команды; команда, которая разговаривает с языковой моделью; игра, живущая в окне внутри приложения; бот, который встречает людей на твоём сервере — ты пишешь это сам, а не просишь кого-то добавить.
Плагин — это не пакет со сборкой и папкой манифеста. Это один файл на JavaScript с комментарием в начале:
/**
* @name Night mode
* @id nightmode
* @version 1.0.0
* @author you
* @description Highlights messages and adds a command
* @permissions ui, css, commands, messages.write
*/
function onLoad(neylivo) {
neylivo.css('.msg { border-left: 2px solid hotpink }')
neylivo.ui.addComposerButton({
key: 'wave', icon: 'flame', tooltip: 'Wave',
onClick: () => neylivo.messages.send('o/'),
})
neylivo.commands.register('hello', 'Say hello', args =>
neylivo.messages.send('Hello, ' + (args || 'world') + '!'))
}
Плагин ставится из файла в Настройках → Плагины или приходит в беседу: сообщение показывает карточку с названием, автором, версией и полным списком запрошенных разрешений, и кнопку «Установить». Есть и встроенный каталог, и личные коды передачи, если плагин надо отдать одному конкретному человеку.
Внутри приложения есть редактор — писать, запускать и чинить плагин можно не выходя из NeyLivo, — и мастерская для плагинов, которым нужна 3D-сцена.
Около девяноста методов, сгруппированных по тому, чего они касаются. Все они идут через один диспетчер, который на каждом вызове сверяется с разрешениями.
Кнопки в поле ввода, действия на сообщении, пункты контекстного меню, кнопки в шапке, горячие клавиши, своя страница настроек, боковые панели и CSS для всего приложения.
Читать открытый канал, отправлять сообщения, ставить реакции, удалять, перехватывать сообщение до отправки и до отрисовки, а также вмешиваться в загрузку файлов — например, снимать геометку с фотографий.
Открыть внутри NeyLivo настоящее окно со своим HTML: полноценный DOM с WebGL, WebGPU, WebAssembly, звуком и анимацией без ограничения частоты. Есть окна без рамки и прозрачные; плагин может их двигать и знает, когда их двигает человек.
Хранилище «ключ — значение» на устройстве, небольшая local-база с таблицами и запросами, и хранилище файлов, которые плагин привёз с собой или скачал.
Запросы, потоковые ответы и постоянные соединения — только к доменам, которые плагин объявил.
Узнать, что играет, управлять воспроизведением, читать библиотеку и добавлять треки в очередь.
Команды через косую черту с именованными и типизированными аргументами, всплывающие сообщения, диалоги, подтверждения и запросы ввода.
Плагины умеют регистрировать службы и вызывать друг друга, чтобы один строился на другом, а не повторял его.
Таймеры, которые продолжают работать, пока человек пользуется приложением, и геймпады.
Всё перечисленное доступно, только если плагин это объявил, а человек согласился при установке.
Код плагина работает в Web Worker. У воркера нет ни DOM, ни куки, ни доступа к странице — поэтому плагин не прочитает вашу сессию, не нарисует поддельное окно входа и не влезет в интерфейс. Плагинам со своей страницей достаётся <iframe sandbox="allow-scripts"> без allow-same-origin — уникальное чужое происхождение: свой DOM есть, доступа к документу и хранилищу NeyLivo нет.
Это границы, которые держит браузер, а не проверки в нашем коде, с которыми хитрый плагин мог бы поспорить.
Экран установки показывает ровно то, что плагин попросил, и словами для человека, а не для программиста: «Отправлять сообщения от твоего имени», «Видеть сообщения в открытом канале», «Обращаться в интернет (только к указанным сайтам)», «Менять оформление приложения». Выключить или удалить плагин можно в любой момент.
Домены плагин объявляет в шапке. Разрешены только https: и wss:, Cookie не разрешён никогда, а обратиться к самому NeyLivo и его серверу плагин не может вовсе — он не сумеет обратить вашу сессию против приложения. Плагин вправе попросить доступ к любым сайтам, и тогда экран установки говорит об этом красным.
Сбежать из браузера плагин не может. А вот сделать то, на что вы согласились, — вполне. Дали «отправлять сообщения от твоего имени» — он будет отправлять сообщения от вашего имени, когда захочет: количественных ограничений нет намеренно. Приложение говорит это до установки, потому что настоящая защита здесь — ваше суждение о том, кто написал плагин, а не квота.
Ставьте то, чему доверяете, от людей, которым доверяете, и выключайте всё, что повело себя странно.
Формат плагина, весь API и список разрешений описаны в репозитории. Самый быстрый вход — редактор внутри приложения: Настройки → Плагины → Создать.
Откроется руководство в репозитории — тот же текст, что показывает встроенная подсказка.