Новости
Лаунчер может показывать ваши анонсы: вайпы, обновления сборок, профилактику. Справа на главном экране — главная новость с баннером и две компактные строки под ней, по клику открывается полный список.
Функция опциональна: нет блока news в конфиге — лаунчер не показывает ничего и
никаких запросов не делает.
Laminara ничего не хранит. Она читает документ там, где вы его уже публикуете, и отдаёт лаунчеру одним RPC. Поэтому сменить источник можно в любой момент — пересобирать лаунчер не нужно.
Файлом
{ "news": { "source": { "type": "file", "config": { "path": "/var/lib/laminara/news.json" } } }}/var/lib/laminara/news.json:
[ { "id": "2026-08-01-wipe", "title": "Вайп сервера 1 августа", "body": "Начинаем новый сезон.\nСтарый мир будет доступен неделю.", "publishedAt": "2026-08-01T12:00:00Z", "tag": "Событие", "link": "https://example.com/news/wipe", "banner": "/var/lib/laminara/banners/wipe.png" }]Файл перечитывается сам при изменении — перезапускать сервер не нужно.
Вашим эндпоинтом
{ "news": { "source": { "type": "http", "config": { "url": "https://site.example/api/news", "headers": { "Authorization": "Bearer ваш-секрет" }, "cacheTTL": "5m" } } }}Ответ — тот же документ, что и в файле. Кэшируется на cacheTTL, и последняя удачная
копия остаётся: если сайт ляжет, панель не опустеет раньше времени.
Формат
Массив либо объект с items. Все поля кроме title необязательны.
| Поле | Смысл |
|---|---|
id |
Идентификатор для метки «непрочитано». Нет — берётся заголовок |
title |
Заголовок. Без него запись не показывается |
body |
Текст. Переносы строк сохраняются |
publishedAt |
Дата в RFC 3339. Сортировка — новые сверху |
tag |
Короткая метка: «Событие», «Сборка» |
link |
Ссылка «Подробнее», открывается в браузере |
banner |
Картинка: путь на сервере или URL. Необязательна |
limitnumber
20.Баннеры
banner — путь к файлу на сервере или обычный URL. Сервер сам читает картинку и
вкладывает её в ответ, поэтому лаунчер не делает ни одного запроса наружу: тот, кто
раздаёт вам новости, не увидит, кто из игроков открыл лаунчер, и не понадобится дырка в
политике безопасности страницы.
Ограничение — 512 КБ на картинку: баннеры едут в каждом ответе, а его лаунчер запрашивает при каждом запуске. Всё, что больше, просто не показывается — новость при этом остаётся. Картинки кэшируются на 30 минут, так что ваш CDN не будет опрошен ради каждого игрока. Форматы: PNG, JPEG, WebP, GIF, SVG.
Почему только текст
В контракте нет поля под HTML, и это осознанно. Лаунчер — не браузерная вкладка: в его окне живёт сессия игрока и есть мост к операционной системе. Разметка, приезжающая с удалённого эндпоинта, была бы не вопросом оформления, а внедрением кода.
По той же причине ссылки фильтруются на сервере: наружу проходят только http:// и
https://, а file:, javascript: и произвольные схемы отбрасываются — иначе «ссылка» в
новости превращалась бы в запуск чего угодно на машине игрока. Тип картинки тоже решает
сервер по расширению, а не по тому, что о себе заявил удалённый хост.
Если источник недоступен или отдал мусор, лаунчер просто не покажет новости. Это самая неважная вещь на экране, и она никогда не должна мешать играть.