diff --git a/docs/uk/web/webchat.md b/docs/uk/web/webchat.md
index 548ffbf73..407bc7fc5 100644
--- a/docs/uk/web/webchat.md
+++ b/docs/uk/web/webchat.md
@@ -1,87 +1,77 @@
---
read_when:
- Налагодження або налаштування доступу до WebChat
-summary: Статичний хост Loopback WebChat і використання Gateway WS для інтерфейсу чату
+summary: Статичний хостинг WebChat у loopback і використання Gateway WS для інтерфейсу чату
title: WebChat
x-i18n:
- generated_at: "2026-04-26T08:42:54Z"
+ generated_at: "2026-04-27T19:49:02Z"
model: gpt-5.4
provider: openai
- source_hash: eb64bf7771f833a6d97c1b0ad773e763422af25e85a3084519e05aa8d3d0ab69
+ source_hash: d8a4fef0aab37ca82bff249c6b31eb65475f12c16dfb9b86ddd62c1a938a34f3
source_path: web/webchat.md
workflow: 15
---
-Статус: інтерфейс чату macOS/iOS SwiftUI напряму взаємодіє з WebSocket Gateway.
+Статус: інтерфейс чату SwiftUI для macOS/iOS напряму взаємодіє з Gateway WebSocket.
## Що це таке
-- Нативний інтерфейс чату для gateway (без вбудованого браузера та без локального статичного сервера).
-- Використовує ті самі сесії та правила маршрутизації, що й інші канали.
+- Нативний інтерфейс чату для gateway (без вбудованого браузера і без локального статичного сервера).
+- Використовує ті самі сеанси й правила маршрутизації, що й інші канали.
- Детермінована маршрутизація: відповіді завжди повертаються до WebChat.
## Швидкий старт
1. Запустіть gateway.
2. Відкрийте інтерфейс WebChat (застосунок macOS/iOS) або вкладку чату в Control UI.
-3. Переконайтеся, що налаштовано дійсний шлях автентифікації gateway (типово `shared-secret`,
- навіть у `loopback`).
+3. Переконайтеся, що налаштовано дійсний шлях автентифікації gateway (типово — shared-secret, навіть у loopback).
## Як це працює (поведінка)
-- Інтерфейс підключається до WebSocket Gateway і використовує `chat.history`, `chat.send` та `chat.inject`.
+- Інтерфейс підключається до Gateway WebSocket і використовує `chat.history`, `chat.send` і `chat.inject`.
- `chat.history` обмежений для стабільності: Gateway може обрізати довгі текстові поля, пропускати важкі метадані та замінювати надто великі записи на `[chat.history omitted: message too large]`.
-- `chat.history` також нормалізується для відображення: із видимого тексту прибираються контекст OpenClaw лише для runtime, вхідні обгортки envelope, вбудовані теги директив доставки
- на кшталт `[[reply_to_*]]` і `[[audio_as_voice]]`, XML-навантаження викликів інструментів у звичайному тексті
- (зокрема `...`,
- `...`, `...`,
- `...` і обрізані блоки викликів інструментів), а також
- витоки ASCII/full-width токенів керування моделі; записи assistant, у яких увесь видимий текст складається лише з точного
- тихого токена `NO_REPLY` / `no_reply`, пропускаються.
-- Навантаження відповідей, позначені як міркування (`isReasoning: true`), виключаються з вмісту assistant у WebChat, тексту відтворення транскрипту та аудіоблоків вмісту, щоб навантаження лише з міркуваннями не відображалися як видимі повідомлення assistant або аудіо для відтворення.
-- `chat.inject` напряму додає примітку assistant до транскрипту та транслює її в інтерфейс (без запуску агента).
-- Перервані запуски можуть залишати частковий вивід assistant видимим в інтерфейсі.
-- Gateway зберігає частковий текст assistant із перерваних запусків в історії транскрипту, коли існує буферизований вивід, і позначає ці записи метаданими переривання.
+- `chat.history` дотримується активної гілки транскрипту для сучасних append-only файлів сеансу, тож покинуті гілки перезапису й витіснені копії промптів не відображаються у WebChat.
+- Control UI об’єднує дублікати поточних відправлень для того самого сеансу, повідомлення й вкладень перед створенням нового run id для `chat.send`; Gateway усе одно дедуплікує повторні запити, що повторно використовують той самий idempotency key.
+- `chat.history` також нормалізується для відображення: з видимого тексту прибираються контекст OpenClaw лише для runtime, обгортки вхідних конвертів, вбудовані теги директив доставки на кшталт `[[reply_to_*]]` і `[[audio_as_voice]]`, XML-пейлоади викликів інструментів у plain text (зокрема `...`, `...`, `...`, `...` і обрізані блоки викликів інструментів), а також ASCII/full-width токени керування моделі, що просочилися; записи помічника, весь видимий текст яких складається лише з точного silent token `NO_REPLY` / `no_reply`, пропускаються.
+- Пейлоади відповідей, позначені як reasoning (`isReasoning: true`), виключаються з вмісту повідомлень помічника у WebChat, тексту повторного відтворення транскрипту та аудіоблоків, щоб пейлоади лише з міркуваннями не з’являлися як видимі повідомлення помічника або відтворюване аудіо.
+- `chat.inject` напряму додає нотатку помічника до транскрипту й транслює її в інтерфейс (без запуску агента).
+- Перервані запуски можуть залишати частковий вивід помічника видимим в інтерфейсі.
+- Gateway зберігає частковий текст помічника з перерваних запусків в історії транскрипту, коли існує буферизований вивід, і позначає такі записи метаданими переривання.
- Історія завжди отримується з gateway (без локального відстеження файлів).
-- Якщо gateway недосяжний, WebChat працює лише для читання.
+- Якщо gateway недосяжний, WebChat доступний лише для читання.
## Панель інструментів агентів у Control UI
-- Панель Tools у `/agents` в Control UI має два окремі подання:
- - **Доступно зараз** використовує `tools.effective(sessionKey=...)` і показує, що поточна
- сесія реально може використовувати під час runtime, включно з інструментами core, Plugin і каналів.
- - **Налаштування інструментів** використовує `tools.catalog` і залишається зосередженою на профілях, перевизначеннях і
- семантиці каталогу.
-- Доступність під час runtime прив’язана до сесії. Перемикання сесій для того самого агента може змінити список
- **Доступно зараз**.
-- Редактор конфігурації не означає доступності під час runtime; фактичний доступ і надалі визначається пріоритетом політик
- (`allow`/`deny`, перевизначеннями для окремих агентів і provider/channel).
+- Панель Tools у розділі `/agents` в Control UI має два окремі подання:
+ - **Доступно зараз** використовує `tools.effective(sessionKey=...)` і показує, що поточний сеанс справді може використовувати під час runtime, зокрема інструменти, що належать core, Plugin і каналу.
+ - **Конфігурація інструментів** використовує `tools.catalog` і залишається зосередженою на профілях, перевизначеннях і семантиці каталогу.
+- Доступність під час runtime прив’язана до сеансу. Перемикання між сеансами на тому самому агенті може змінити список **Доступно зараз**.
+- Редактор конфігурації не означає доступність під час runtime; фактичний доступ і далі визначається пріоритетом політик (`allow`/`deny`, перевизначеннями для окремого агента та provider/channel).
## Віддалене використання
-- Віддалений режим тунелює WebSocket gateway через SSH/Tailscale.
+- Віддалений режим тунелює Gateway WebSocket через SSH/Tailscale.
- Вам не потрібно запускати окремий сервер WebChat.
-## Довідник із конфігурації (WebChat)
+## Довідник з конфігурації (WebChat)
Повна конфігурація: [Конфігурація](/uk/gateway/configuration)
Параметри WebChat:
-- `gateway.webchat.chatHistoryMaxChars`: максимальна кількість символів для текстових полів у відповідях `chat.history`. Коли запис транскрипту перевищує цей ліміт, Gateway обрізає довгі текстові поля та може замінювати надто великі повідомлення заповнювачем. Клієнт також може надсилати `maxChars` на рівні запиту, щоб перевизначити це типове значення для одного виклику `chat.history`.
+- `gateway.webchat.chatHistoryMaxChars`: максимальна кількість символів для текстових полів у відповідях `chat.history`. Коли запис транскрипту перевищує цей ліміт, Gateway обрізає довгі текстові поля й може замінювати надто великі повідомлення плейсхолдером. Клієнт також може передати `maxChars` у запиті, щоб перевизначити це значення за замовчуванням для одного виклику `chat.history`.
Пов’язані глобальні параметри:
- `gateway.port`, `gateway.bind`: хост/порт WebSocket.
- `gateway.auth.mode`, `gateway.auth.token`, `gateway.auth.password`:
- автентифікація WebSocket через `shared-secret`.
-- `gateway.auth.allowTailscale`: вкладка чату browser у Control UI може використовувати заголовки ідентичності Tailscale
- Serve, якщо це ввімкнено.
-- `gateway.auth.mode: "trusted-proxy"`: автентифікація через reverse proxy для browser-клієнтів за **не-loopback** джерелом proxy, обізнаного про ідентичність (див. [Автентифікація Trusted Proxy](/uk/gateway/trusted-proxy-auth)).
+ автентифікація WebSocket через shared-secret.
+- `gateway.auth.allowTailscale`: вкладка чату браузерного Control UI може використовувати заголовки ідентифікації Tailscale Serve, якщо це ввімкнено.
+- `gateway.auth.mode: "trusted-proxy"`: автентифікація через reverse proxy для браузерних клієнтів за identity-aware **не-loopback** джерелом proxy (див. [Автентифікація Trusted Proxy](/uk/gateway/trusted-proxy-auth)).
- `gateway.remote.url`, `gateway.remote.token`, `gateway.remote.password`: цільовий віддалений gateway.
-- `session.*`: сховище сесій і типові значення основного ключа.
+- `session.*`: сховище сеансів і типові значення основного ключа.
## Пов’язане
- [Control UI](/uk/web/control-ui)
-- [Dashboard](/uk/web/dashboard)
+- [Панель керування](/uk/web/dashboard)