feat(web): второй ряд дашборда и пинг участников в голосовой комнате

- дашборд инстанса: два ряда полукругов с подписями сверху — «Контейнер
  инстанса» (лимиты профиля) и «Сервер целиком» (вся машина);
- голосовая комната: рядом с качеством связи видно пинг участника
  («Отличное соединение, 42 мс») и он обновляется раз в секунду. Свой RTT
  измеряется по статистике WebRTC, чужой приходит по data-каналу LiveKit
  (`glchat.latency`, lossy), поэтому пинг виден для каждого участника;
- статистика берётся с любой своей дорожки: в аудио-сессии RTT раньше был
  недоступен (отчёт читался только с видео);
- в «Аудио-видео» появился тумблер «Показывать пинг в голосовой комнате»:
  выключенный не опрашивает SDK и не публикует своё значение;
- тесты: ряд хоста и подписи, пинг в плитке своего и чужого участника,
  публикация по служебной теме, выключенный пинг не дёргает SDK.
This commit is contained in:
2026-09-20 22:10:17 +03:00
parent 5668d779df
commit 3fe634c9bc
16 changed files with 476 additions and 51 deletions
+13 -3
View File
@@ -344,7 +344,10 @@
"medium": "Среднее качество",
"high": "Высокое качество"
}
}
},
"latency": "{{ms}} мс",
"latencyHint": "Пинг участника до инстанса",
"latencyUnknown": "пинг неизвестен"
},
"friends": {
"rail": "Друзья",
@@ -740,7 +743,11 @@
"cpuCaption_other": "{{count}} ядра",
"memory": "Память",
"diskHint": "Диск: занято / всего. Свободно {{free}}",
"databaseHint": "База данных: файл и журнал WAL ({{wal}})"
"databaseHint": "База данных: файл и журнал WAL ({{wal}})",
"containerRow": "Контейнер инстанса",
"containerHint": "Лимиты профиля",
"hostRow": "Сервер целиком",
"hostHint": "Вся машина"
},
"health": {
"title": "Healthcheck инстанса",
@@ -947,7 +954,10 @@
"eventSounds": "Звуки событий сервера",
"eventSoundsHint": "Проигрывать звуки палитры сервера: вход участника, упоминания и другие события.",
"soundboard": "Саундборд",
"soundboardHint": "Проигрывать звуки саундборда в голосовой комнате."
"soundboardHint": "Проигрывать звуки саундборда в голосовой комнате.",
"latency": "Пинг участников",
"latencySharing": "Показывать пинг в голосовой комнате",
"latencySharingHint": "Задержка участников до инстанса обновляется раз в секунду; свой пинг публикуется в комнате."
},
"language": {
"title": "Язык и регион",