Перейти к содержимому

Новости

Лаунчер может показывать ваши анонсы: вайпы, обновления сборок, профилактику. Справа на главном экране — главная новость с баннером и две компактные строки под ней, по клику открывается полный список.

Функция опциональна: нет блока 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: и произвольные схемы отбрасываются — иначе «ссылка» в новости превращалась бы в запуск чего угодно на машине игрока. Тип картинки тоже решает сервер по расширению, а не по тому, что о себе заявил удалённый хост.

Если источник недоступен или отдал мусор, лаунчер просто не покажет новости. Это самая неважная вещь на экране, и она никогда не должна мешать играть.