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

Демо-дни — 2026-05-08

Улучшенная обработка секретов в вебхуках

Демо от @dhable

URL-адреса вебхуков и заголовки часто содержат учётные данные в открытом виде. В URL Slack-вебхука секретный токен находится в пути, а HTTP-вебхуку обычно нужен заголовок Authorization для аутентификации. До этого релиза внутренний API HyperDX для получения списка и редактирования вебхуков возвращал все эти данные в каждом ответе, а значит любой аутентифицированный участник команды мог прочитать секреты, просто вызвав API.

В этом изменении применяется тот же подход к маскированию, который уже использовался в публичном API. URL-адреса вебхуков возвращаются с путём, заменённым на ****, поэтому токен Slack (или любой другой ключ, встроенный в путь) никогда не покидает сервер. Заголовки тоже по умолчанию маскируются, поскольку у нас нет надёжного способа определить, какие из них содержат секреты, поэтому все значения заменяются на ****, и видны только имена заголовков.

Форма редактирования трактует замаскированное значение как «без изменений»: оставьте его как есть — и сохранённое значение останется прежним, измените его — и будет сохранено новое значение, очистите его — и поле будет полностью удалено. Это делает процесс понятным в типичном случае (редактирование одного поля), при этом реальный секрет никогда не проходит через браузер в обратном направлении.

Связанные PR: #2239 [HDX-4173] Маскирование конфиденциальных полей в ответах внутреннего API вебхуков

Дополнительные метаданные в оповещениях

Демо от @dhable

В Slack-сообществе попросили добавить в оповещения произвольный контекст: место, где можно хранить историю порогов, ссылки на runbook’и или заметки для дежурного инженера. Это также удобно как надежный источник для ИИ-сводок: теперь любая LLM, отвечающая на сработавшее оповещение, может опираться на собственные пояснения оператора, а не пытаться угадать смысл только по запросу.

Поле заметки поддерживает рендеринг Markdown, поэтому можно использовать сворачиваемые секции, списки и ссылки. Оно находится в конфигурации оповещения и отображается везде, где это оповещение показывается. UX пока еще не окончательно определен: поддержка Markdown — лишь отправная точка, и отзывы о том, как именно все это должно отображаться, приветствуются.

Заодно этот PR также улучшает UX сработавших оповещений в сохраненных поисках. На значке колокольчика на кнопке Alerts появляется красная точка, когда что-то срабатывает; в диалоговом окне теперь подсвечивается активное оповещение, а не просто дается ссылка на него; а визуальное оформление теперь соответствует тому, как это состояние уже показывается в плитках на панели мониторинга.

Связанные PR: #2210 [HDX-3044] Добавить необязательное поле заметки в оповещения

Возможные темы

Демо от @elizabetdev

Это был эксперимент с хакатона, в рамках которого в интерфейсе ClickStack появились три темы, вдохновлённые IDE: Nord (арктические синие оттенки), Catppuccin (пастельная) и One Dark (в стиле Atom), каждая в светлом и тёмном вариантах. Мы попробовали сгенерировать цветовые токены на основе этих исходных тем, и результат оказался почти таким, как нужно, хотя всё ещё оставались шероховатости с цветами боковой панели и контрастностью линий, которые требовали доработки.

В итоге PR закрыли, а не приняли. Команда движется в сторону ClickUI, который сейчас поддерживает только одну тему, а сопровождение нескольких параллельных наборов токенов создавало бы постоянную дополнительную нагрузку, особенно если всерьёз проверять контрастность для каждой комбинации. В результате решили отложить это до тех пор, пока сам ClickUI не начнёт поддерживать несколько тем.

Мы решили, что один элемент дизайн-логики из этого эксперимента стоит сохранить на будущее, если к этой идее вернутся. В первой итерации логотип HyperDX перекрашивали под каждую тему, из-за чего терялась фирменная айдентика. Более удачный подход такой: в светлой теме показывается тёмный логотип, в тёмной — светлый, а сам зелёный текстовый знак HyperDX остаётся без изменений.

Связанные PR: #2191 feat: add IDE-inspired themes (Nord, Catppuccin, One Dark)