diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index eb86acc3..a08c97fe 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Статус на2026-10-08: backend3722fad/frontend6a46fb1, backend healthy. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). +Статус на2026-10-08: backend3722fad/frontendbf43263, backend healthy. Мобильная ширина WireGuard Sheets принята на реальных CHR в12.5.64, применение импорта не проверено. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md). ## Паспорт стенда @@ -489,3 +489,15 @@ Runtime backend/frontend3722fad, локальное меню ещё не раз Profile wireguard-links.spec.ts --grep импорт/создание сохраняет форму —5/5 passed: interface,interface DTO,peer, импорт без подтверждённого результата и pending/retry. Сохранение ввода, API ошибки/неподтверждённые ответы и ожидание результата сохранились. Scoped TypeScript выполнен после остановки Next, ESLint трёх изменённых компонентов и ReUI checklist passed. Полная регрессия не повторялась для трёх responsive class overrides. Изменение локальное: удалённый runtime backend3722fad/frontend6a46fb1 healthy остаётся прежним. Следующий12.5.64 — frontend production Docker deploy и live мобильные create/peer/import панели на новой собственной WG паре; real UI lifecycle/связность и очистка, baseline. Просмотр импортной формы не будет заявляться как проверенный настоящий import. Import/export, throughput/IPv6/внешние failures/RBAC/multi-instance/Telegram/Portal и другие внешние ограничения открыты. Правило пользователя создавать настоящие VPN объекты сохраняется. Локальный коммит без push. + +## 12.5.64 — развёртывание и live приёмка мобильных WireGuard панелей (2026-10-08) + +[Развёртывание](ux-ui/acceptance/deployed-bf43263-2026-10-08.json): frontendbf43263e43ae375651237e019fe1aae55e848308/version1.0.0-test.bf43263, backend3722fad healthy и не перезапускался. Чистый Git archive SHA256c42edf2983262b62bcc427f7e2922f1c6bf56754abe3b583be73fd71712bd074 совпал после передачи. Main-совместимый staging обновлён только тремя изменёнными WireGuard Sheets; lockfile/Dockerfile совпали. Docker build exit0, full Next TypeScript passed. Изменена только MMAPP_IMAGE_TAG, compose validation прошла, предыдущий frontend6a46fb1 образ оставлен для rollback. Push не выполнялся. + +[Production UI и формы](ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json): собственная новая пара mm-acceptance-wg-ui-1791475047653, оба CHR × две темы × три панели(create/peer/import) ×1280/320px —24 live сочетания без HTTP mocks. Ширина320px на телефоне, create/peer448px и import512px наПК, footer buttons внутри панели и без обрезания, page overflow отсутствует, Escape закрывает каждую форму. Формы просматривались на реально созданной собственной WG паре; в визуальных снимках ключи не вводились. Импортная форма только открывалась и закрывалась: применение/preview импорта не проверены. + +Основной UI lifecycle выполнен отдельно от просмотров форм: создание interfaces201/201 и peers201/201 через реальные формы, native поля/key generation/peer association подтверждены; disable/enable каждого CHR PATCH200×4 сохранили peers/IP; Ping3/3 на обоих устройствах до и после переключения. DELETE200/200 удалили interfaces/peers/IP до finish/fallback. MenuReopens0, JS/API errors0. [Native observer](ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json): приватный baseline0600 на сервере, два Ping раунда passed, retries0, final state без own объектов, выбранный WG/peers/IP/routes/IPv4 Firewall baseline совпал. Эфемерный контейнер удалён; остались три основные службы. Audit revisions намеренно сохранены, DB controls до/после servers2/speedHistory9/retention14/migrations9 совпали. + +СкриншотыCHR2/320px: [create dark](ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png), [create light](ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png), [peer dark](ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png), [peer light](ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png), [import dark](ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png), [import light](ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png). Create dark/import light визуально просмотрены: панель и footer занимают доступную ширину, текст действий виден целиком. [Smoke](ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. + +Следующий12.5.65 — настоящий экспорт WireGuard без private keys на новой собственной паре: RSC/CONF, выбранный interface/peer и независимое сравнение параметров; ключи/конфиги с секретами в публичные отчёты не включать. Настоящий import roundtrip — отдельный блок. Throughput, IPv6, внешние failures/RBAC/multi-instance, Telegram/Portal и другие протоколы/интеграции остаются открытыми. Пользовательское правило настоящих VPN объектов сохраняется. Локальный коммит без push. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 4ba187c6..e3813fad 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-08: 12.5.63 локально исправил ширину WireGuard create/peer/import Sheets:320px целиком, отsm create/peer448px и import512px. Три панели × две темы ×320/640/1280px —18 комбинаций/Tab/Escape/footer passed; profile5/5, scoped TypeScript/ESLint/ReUI checklist passed. Runtime backend3722fad/frontend6a46fb1, новая ширина ещё не развёрнута. Следующий12.5.64 — frontend Docker deploy и проверка live мобильных форм на новой собственной WG паре с очисткой; реальный import/export пока открыт. Этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.64 развернул frontendbf43263 (backend3722fad healthy). Live create/peer/import Sheets: оба CHR × две темы ×1280/320px —24 комбинации ширины/footer passed без HTTP mocks. UI create/peer/toggle/Ping/delete повторён успешно, own остатки отсутствуют, selected baseline и DB controls совпали; observer exit0/readRetries0, smoke6 passed. Применение импорта не выполнялось. Следующий12.5.65 — настоящий экспорт WireGuard без private keys на собственной паре; import roundtrip отдельным блоком. Этап12.5 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-08 -Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backend3722fad/frontend6a46fb1 и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; По уточнению пользователя12.5.51 создал реальные GRE туннели и подтвердил lifecycle/связность; обнаружена потеря peer IP, 12.5.52 локально исправил сохранение peer metadata, профильные проверки passed; 12.5.53 развернул исправление и подтвердил его на реальной GRE паре/API/UI; 12.5.54 локально исправил устойчивость меню GRE, профильные проверки passed; 12.5.55 развернул frontend731803b и подтвердил устойчивость меню на реальной GRE паре; 12.5.56 локально адаптировал внутренние IP поля GRE для320px, обе темы и профильные проверки passed; 12.5.57 развернул frontendfd521f6 и подтвердил мобильную GRE форму на реальной паре CHR; 12.5.58 подтвердил настоящую WireGuard пару, handshake/Ping/native/UI и финальную очистку; 12.5.59 подтвердил оставшиеся peers/IP после удаления WG и локально исправил backend; 12.5.60 развернул backend/frontend3722fad и подтвердил полное обычное удаление WG; 12.5.61 подтвердил UI создание WG и локально исправил remount меню; переключение осталось открытым. 12.5.62 развернул frontend6a46fb1 и подтвердил полный WG UI lifecycle; 12.5.63 локально адаптировал ширину трёх WireGuard Sheets и подтвердил footer/клавиатуру в обеих темах; следующий12.5.64 — frontend deploy и live мобильные формы на собственной WG паре. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения. +Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backend3722fad/frontendbf43263 и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; По уточнению пользователя12.5.51 создал реальные GRE туннели и подтвердил lifecycle/связность; обнаружена потеря peer IP, 12.5.52 локально исправил сохранение peer metadata, профильные проверки passed; 12.5.53 развернул исправление и подтвердил его на реальной GRE паре/API/UI; 12.5.54 локально исправил устойчивость меню GRE, профильные проверки passed; 12.5.55 развернул frontend731803b и подтвердил устойчивость меню на реальной GRE паре; 12.5.56 локально адаптировал внутренние IP поля GRE для320px, обе темы и профильные проверки passed; 12.5.57 развернул frontendfd521f6 и подтвердил мобильную GRE форму на реальной паре CHR; 12.5.58 подтвердил настоящую WireGuard пару, handshake/Ping/native/UI и финальную очистку; 12.5.59 подтвердил оставшиеся peers/IP после удаления WG и локально исправил backend; 12.5.60 развернул backend/frontend3722fad и подтвердил полное обычное удаление WG; 12.5.61 подтвердил UI создание WG и локально исправил remount меню; переключение осталось открытым. 12.5.62 развернул frontend6a46fb1 и подтвердил полный WG UI lifecycle; 12.5.63 локально адаптировал ширину трёх WireGuard Sheets и подтвердил footer/клавиатуру в обеих темах; 12.5.64 развернул frontendbf43263 и подтвердил live mobile Sheets/UI lifecycle; следующий12.5.65 — настоящий экспорт WG без private keys, затем import roundtrip отдельным блоком. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения. Выполненные внешние сценарии не заменяют приёмку оставшихся интеграций и условий эксплуатации. Датированные продолжения ниже — история; точный следующий шаг указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 66498f4d..d538904d 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-08: 12.5.63 локально исправил ширину WireGuard create/peer/import Sheets:320px целиком, отsm create/peer448px и import512px. Три панели × две темы ×320/640/1280px —18 комбинаций/Tab/Escape/footer passed; profile5/5, scoped TypeScript/ESLint/ReUI checklist passed. Runtime backend3722fad/frontend6a46fb1, новая ширина ещё не развёрнута. Следующий12.5.64 — frontend Docker deploy и проверка live мобильных форм на новой собственной WG паре с очисткой; реальный import/export пока открыт. Этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.64 развернул frontendbf43263 (backend3722fad healthy). Live create/peer/import Sheets: оба CHR × две темы ×1280/320px —24 комбинации ширины/footer passed без HTTP mocks. UI create/peer/toggle/Ping/delete повторён успешно, own остатки отсутствуют, selected baseline и DB controls совпали; observer exit0/readRetries0, smoke6 passed. Применение импорта не выполнялось. Следующий12.5.65 — настоящий экспорт WireGuard без private keys на собственной паре; import roundtrip отдельным блоком. Этап12.5 открыт. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -34,7 +34,19 @@ | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | -| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–63 и ограничения ниже. Runtime backend3722fad/frontend6a46fb1. | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–64 и ограничения ниже. Runtime backend3722fad/frontendbf43263. | + +## 12.5.64 — развёртывание и live приёмка мобильных WireGuard панелей (2026-10-08) + +[Развёртывание](ux-ui/acceptance/deployed-bf43263-2026-10-08.json): frontendbf43263e43ae375651237e019fe1aae55e848308/version1.0.0-test.bf43263, backend3722fad healthy и не перезапускался. Чистый Git archive SHA256c42edf2983262b62bcc427f7e2922f1c6bf56754abe3b583be73fd71712bd074 совпал после передачи. Main-совместимый staging обновлён только тремя изменёнными WireGuard Sheets; lockfile/Dockerfile совпали. Docker build exit0, full Next TypeScript passed. Изменена только MMAPP_IMAGE_TAG, compose validation прошла, предыдущий frontend6a46fb1 образ оставлен для rollback. Push не выполнялся. + +[Production UI и формы](ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json): собственная новая пара mm-acceptance-wg-ui-1791475047653, оба CHR × две темы × три панели(create/peer/import) ×1280/320px —24 live сочетания без HTTP mocks. Ширина320px на телефоне, create/peer448px и import512px наПК, footer buttons внутри панели и без обрезания, page overflow отсутствует, Escape закрывает каждую форму. Формы просматривались на реально созданной собственной WG паре; в визуальных снимках ключи не вводились. Импортная форма только открывалась и закрывалась: применение/preview импорта не проверены. + +Основной UI lifecycle выполнен отдельно от просмотров форм: создание interfaces201/201 и peers201/201 через реальные формы, native поля/key generation/peer association подтверждены; disable/enable каждого CHR PATCH200×4 сохранили peers/IP; Ping3/3 на обоих устройствах до и после переключения. DELETE200/200 удалили interfaces/peers/IP до finish/fallback. MenuReopens0, JS/API errors0. [Native observer](ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json): приватный baseline0600 на сервере, два Ping раунда passed, retries0, final state без own объектов, выбранный WG/peers/IP/routes/IPv4 Firewall baseline совпал. Эфемерный контейнер удалён; остались три основные службы. Audit revisions намеренно сохранены, DB controls до/после servers2/speedHistory9/retention14/migrations9 совпали. + +СкриншотыCHR2/320px: [create dark](ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png), [create light](ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png), [peer dark](ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png), [peer light](ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png), [import dark](ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png), [import light](ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png). Create dark/import light визуально просмотрены: панель и footer занимают доступную ширину, текст действий виден целиком. [Smoke](ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. + +Следующий12.5.65 — настоящий экспорт WireGuard без private keys на новой собственной паре: RSC/CONF, выбранный interface/peer и независимое сравнение параметров; ключи/конфиги с секретами в публичные отчёты не включать. Настоящий import roundtrip — отдельный блок. Throughput, IPv6, внешние failures/RBAC/multi-instance, Telegram/Portal и другие протоколы/интеграции остаются открытыми. Пользовательское правило настоящих VPN объектов сохраняется. Локальный коммит без push. ## 12.5.63 — полная ширина мобильных WireGuard Sheets (2026-10-08) diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index a7f6b49f..a3d2f339 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-08: 12.5.63 локально исправил ширину WireGuard create/peer/import Sheets:320px целиком, отsm create/peer448px и import512px. Три панели × две темы ×320/640/1280px —18 комбинаций/Tab/Escape/footer passed; profile5/5, scoped TypeScript/ESLint/ReUI checklist passed. Runtime backend3722fad/frontend6a46fb1, новая ширина ещё не развёрнута. Следующий12.5.64 — frontend Docker deploy и проверка live мобильных форм на новой собственной WG паре с очисткой; реальный import/export пока открыт. Этап12.5 открыт. +Актуальное продолжение 2026-10-08: 12.5.64 развернул frontendbf43263 (backend3722fad healthy). Live create/peer/import Sheets: оба CHR × две темы ×1280/320px —24 комбинации ширины/footer passed без HTTP mocks. UI create/peer/toggle/Ping/delete повторён успешно, own остатки отсутствуют, selected baseline и DB controls совпали; observer exit0/readRetries0, smoke6 passed. Применение импорта не выполнялось. Следующий12.5.65 — настоящий экспорт WireGuard без private keys на собственной паре; import roundtrip отдельным блоком. Этап12.5 открыт. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1654,3 +1654,15 @@ Runtime backend/frontend3722fad, локальное меню ещё не раз Profile wireguard-links.spec.ts --grep импорт/создание сохраняет форму —5/5 passed: interface,interface DTO,peer, импорт без подтверждённого результата и pending/retry. Сохранение ввода, API ошибки/неподтверждённые ответы и ожидание результата сохранились. Scoped TypeScript выполнен после остановки Next, ESLint трёх изменённых компонентов и ReUI checklist passed. Полная регрессия не повторялась для трёх responsive class overrides. Изменение локальное: удалённый runtime backend3722fad/frontend6a46fb1 healthy остаётся прежним. Следующий12.5.64 — frontend production Docker deploy и live мобильные create/peer/import панели на новой собственной WG паре; real UI lifecycle/связность и очистка, baseline. Просмотр импортной формы не будет заявляться как проверенный настоящий import. Import/export, throughput/IPv6/внешние failures/RBAC/multi-instance/Telegram/Portal и другие внешние ограничения открыты. Правило пользователя создавать настоящие VPN объекты сохраняется. Локальный коммит без push. + +## 12.5.64 — развёртывание и live приёмка мобильных WireGuard панелей (2026-10-08) + +[Развёртывание](ux-ui/acceptance/deployed-bf43263-2026-10-08.json): frontendbf43263e43ae375651237e019fe1aae55e848308/version1.0.0-test.bf43263, backend3722fad healthy и не перезапускался. Чистый Git archive SHA256c42edf2983262b62bcc427f7e2922f1c6bf56754abe3b583be73fd71712bd074 совпал после передачи. Main-совместимый staging обновлён только тремя изменёнными WireGuard Sheets; lockfile/Dockerfile совпали. Docker build exit0, full Next TypeScript passed. Изменена только MMAPP_IMAGE_TAG, compose validation прошла, предыдущий frontend6a46fb1 образ оставлен для rollback. Push не выполнялся. + +[Production UI и формы](ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json): собственная новая пара mm-acceptance-wg-ui-1791475047653, оба CHR × две темы × три панели(create/peer/import) ×1280/320px —24 live сочетания без HTTP mocks. Ширина320px на телефоне, create/peer448px и import512px наПК, footer buttons внутри панели и без обрезания, page overflow отсутствует, Escape закрывает каждую форму. Формы просматривались на реально созданной собственной WG паре; в визуальных снимках ключи не вводились. Импортная форма только открывалась и закрывалась: применение/preview импорта не проверены. + +Основной UI lifecycle выполнен отдельно от просмотров форм: создание interfaces201/201 и peers201/201 через реальные формы, native поля/key generation/peer association подтверждены; disable/enable каждого CHR PATCH200×4 сохранили peers/IP; Ping3/3 на обоих устройствах до и после переключения. DELETE200/200 удалили interfaces/peers/IP до finish/fallback. MenuReopens0, JS/API errors0. [Native observer](ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json): приватный baseline0600 на сервере, два Ping раунда passed, retries0, final state без own объектов, выбранный WG/peers/IP/routes/IPv4 Firewall baseline совпал. Эфемерный контейнер удалён; остались три основные службы. Audit revisions намеренно сохранены, DB controls до/после servers2/speedHistory9/retention14/migrations9 совпали. + +СкриншотыCHR2/320px: [create dark](ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png), [create light](ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png), [peer dark](ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png), [peer light](ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png), [import dark](ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png), [import light](ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png). Create dark/import light визуально просмотрены: панель и footer занимают доступную ширину, текст действий виден целиком. [Smoke](ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. + +Следующий12.5.65 — настоящий экспорт WireGuard без private keys на новой собственной паре: RSC/CONF, выбранный interface/peer и независимое сравнение параметров; ключи/конфиги с секретами в публичные отчёты не включать. Настоящий import roundtrip — отдельный блок. Throughput, IPv6, внешние failures/RBAC/multi-instance, Telegram/Portal и другие протоколы/интеграции остаются открытыми. Пользовательское правило настоящих VPN объектов сохраняется. Локальный коммит без push. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 82ae9e3f..b8ca176b 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-08 -Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный backend source3722fad329a68a8721ebfda8e044ab6cb5830cca/version1.0.0-test.3722fad healthy; frontend source6a46fb1e40291024202455460dfc233f05e9e5d5/version1.0.0-test.6a46fb1 обновлён в12.5.62. +Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Подготовка выполнена по структуре deploy/docker-compose.yml из main. Приложение собрано и запущено. Активный backend source3722fad329a68a8721ebfda8e044ab6cb5830cca/version1.0.0-test.3722fad healthy; frontend sourcebf43263e43ae375651237e019fe1aae55e848308/version1.0.0-test.bf43263 обновлён в12.5.64. | Параметр | Проверенное состояние | | --- | --- | @@ -497,3 +497,15 @@ Runtime backend/frontend3722fad, локальное меню ещё не раз Profile wireguard-links.spec.ts --grep импорт/создание сохраняет форму —5/5 passed: interface,interface DTO,peer, импорт без подтверждённого результата и pending/retry. Сохранение ввода, API ошибки/неподтверждённые ответы и ожидание результата сохранились. Scoped TypeScript выполнен после остановки Next, ESLint трёх изменённых компонентов и ReUI checklist passed. Полная регрессия не повторялась для трёх responsive class overrides. Изменение локальное: удалённый runtime backend3722fad/frontend6a46fb1 healthy остаётся прежним. Следующий12.5.64 — frontend production Docker deploy и live мобильные create/peer/import панели на новой собственной WG паре; real UI lifecycle/связность и очистка, baseline. Просмотр импортной формы не будет заявляться как проверенный настоящий import. Import/export, throughput/IPv6/внешние failures/RBAC/multi-instance/Telegram/Portal и другие внешние ограничения открыты. Правило пользователя создавать настоящие VPN объекты сохраняется. Локальный коммит без push. + +## 12.5.64 — развёртывание и live приёмка мобильных WireGuard панелей (2026-10-08) + +[Развёртывание](ux-ui/acceptance/deployed-bf43263-2026-10-08.json): frontendbf43263e43ae375651237e019fe1aae55e848308/version1.0.0-test.bf43263, backend3722fad healthy и не перезапускался. Чистый Git archive SHA256c42edf2983262b62bcc427f7e2922f1c6bf56754abe3b583be73fd71712bd074 совпал после передачи. Main-совместимый staging обновлён только тремя изменёнными WireGuard Sheets; lockfile/Dockerfile совпали. Docker build exit0, full Next TypeScript passed. Изменена только MMAPP_IMAGE_TAG, compose validation прошла, предыдущий frontend6a46fb1 образ оставлен для rollback. Push не выполнялся. + +[Production UI и формы](ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json): собственная новая пара mm-acceptance-wg-ui-1791475047653, оба CHR × две темы × три панели(create/peer/import) ×1280/320px —24 live сочетания без HTTP mocks. Ширина320px на телефоне, create/peer448px и import512px наПК, footer buttons внутри панели и без обрезания, page overflow отсутствует, Escape закрывает каждую форму. Формы просматривались на реально созданной собственной WG паре; в визуальных снимках ключи не вводились. Импортная форма только открывалась и закрывалась: применение/preview импорта не проверены. + +Основной UI lifecycle выполнен отдельно от просмотров форм: создание interfaces201/201 и peers201/201 через реальные формы, native поля/key generation/peer association подтверждены; disable/enable каждого CHR PATCH200×4 сохранили peers/IP; Ping3/3 на обоих устройствах до и после переключения. DELETE200/200 удалили interfaces/peers/IP до finish/fallback. MenuReopens0, JS/API errors0. [Native observer](ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json): приватный baseline0600 на сервере, два Ping раунда passed, retries0, final state без own объектов, выбранный WG/peers/IP/routes/IPv4 Firewall baseline совпал. Эфемерный контейнер удалён; остались три основные службы. Audit revisions намеренно сохранены, DB controls до/после servers2/speedHistory9/retention14/migrations9 совпали. + +СкриншотыCHR2/320px: [create dark](ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png), [create light](ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png), [peer dark](ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png), [peer light](ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png), [import dark](ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png), [import light](ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png). Create dark/import light визуально просмотрены: панель и footer занимают доступную ширину, текст действий виден целиком. [Smoke](ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. + +Следующий12.5.65 — настоящий экспорт WireGuard без private keys на новой собственной паре: RSC/CONF, выбранный interface/peer и независимое сравнение параметров; ключи/конфиги с секретами в публичные отчёты не включать. Настоящий import roundtrip — отдельный блок. Throughput, IPv6, внешние failures/RBAC/multi-instance, Telegram/Portal и другие протоколы/интеграции остаются открытыми. Пользовательское правило настоящих VPN объектов сохраняется. Локальный коммит без push. diff --git a/docs/ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json b/docs/ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json new file mode 100644 index 00000000..5224b319 --- /dev/null +++ b/docs/ux-ui/acceptance/browser-wg-ui-mobile-bf43263-2026-10-08.json @@ -0,0 +1,314 @@ +{ + "date": "2026-10-08", + "backendSource": "3722fad", + "frontendSource": "bf43263", + "name": "mm-acceptance-wg-ui-1791475047653", + "httpMocks": false, + "cases": [ + { + "serverId": 1, + "createViaUi": true, + "createReceipt": 201, + "nativeInterfaceAddressAndKeyGeneration": true, + "peerViaUi": true, + "peerReceipt": 201, + "nativePeerFields": true, + "disableEnableViaUi": true, + "nativeToggleAndDataPreserved": true, + "deleteViaUi": true, + "noNativeRemainders": true + }, + { + "serverId": 2, + "createViaUi": true, + "createReceipt": 201, + "nativeInterfaceAddressAndKeyGeneration": true, + "peerViaUi": true, + "peerReceipt": 201, + "nativePeerFields": true, + "disableEnableViaUi": true, + "nativeToggleAndDataPreserved": true, + "deleteViaUi": true, + "noNativeRemainders": true + } + ], + "layoutCases": [ + { + "serverId": 1, + "theme": "dark", + "kind": "create", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "dark", + "kind": "create", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "dark", + "kind": "peer", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "dark", + "kind": "peer", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "dark", + "kind": "import", + "width": 1280, + "sheetWidth": 512, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "dark", + "kind": "import", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "create", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "create", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "peer", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "peer", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "import", + "width": 1280, + "sheetWidth": 512, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 1, + "theme": "light", + "kind": "import", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "create", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "create", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "peer", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "peer", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "import", + "width": 1280, + "sheetWidth": 512, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "dark", + "kind": "import", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "create", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "create", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "peer", + "width": 1280, + "sheetWidth": 448, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "peer", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "import", + "width": 1280, + "sheetWidth": 512, + "footerButtonsFit": true, + "noPageOverflow": true + }, + { + "serverId": 2, + "theme": "light", + "kind": "import", + "width": 320, + "sheetWidth": 320, + "footerButtonsFit": true, + "noPageOverflow": true + } + ], + "requests": [ + { + "method": "POST", + "path": "/api/wireguard/interfaces", + "status": 201 + }, + { + "method": "POST", + "path": "/api/wireguard/interfaces", + "status": 201 + }, + { + "method": "POST", + "path": "/api/wireguard/peers", + "status": 201 + }, + { + "method": "POST", + "path": "/api/wireguard/peers", + "status": 201 + }, + { + "method": "PATCH", + "path": "/api/wireguard/interfaces/1/*C", + "status": 200 + }, + { + "method": "PATCH", + "path": "/api/wireguard/interfaces/1/*C", + "status": 200 + }, + { + "method": "PATCH", + "path": "/api/wireguard/interfaces/2/*8", + "status": 200 + }, + { + "method": "PATCH", + "path": "/api/wireguard/interfaces/2/*8", + "status": 200 + }, + { + "method": "DELETE", + "path": "/api/wireguard/interfaces/1/*C", + "status": 200 + }, + { + "method": "DELETE", + "path": "/api/wireguard/interfaces/2/*8", + "status": 200 + } + ], + "pageErrors": [], + "badApiResponses": [], + "pingBeforeAndAfterToggle": true, + "menuReopens": 0, + "limits": [ + "Keys used in memory only, not persisted", + "Create interface/peer, toggle, delete via real production UI", + "Short handshake/ICMP; no export/import, throughput, failures or RBAC" + ] +} diff --git a/docs/ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json b/docs/ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json new file mode 100644 index 00000000..2d4bd277 --- /dev/null +++ b/docs/ux-ui/acceptance/deploy-browser-bf43263-2026-10-08.json @@ -0,0 +1,40 @@ +{ + "date": "2026-10-08", + "backendSource": "3722fad329a68a8721ebfda8e044ab6cb5830cca", + "frontendSource": "bf43263e43ae375651237e019fe1aae55e848308", + "httpMocks": false, + "pages": [ + { + "path": "/dashboard", + "status": 200, + "mobileFits": true + }, + { + "path": "/servers", + "status": 200, + "mobileFits": true + }, + { + "path": "/uptime?tab=speed", + "status": 200, + "mobileFits": true + }, + { + "path": "/settings", + "status": 200, + "mobileFits": true + }, + { + "path": "/filters", + "status": 200, + "mobileFits": true + }, + { + "path": "/alerts", + "status": 200, + "mobileFits": true + } + ], + "pageErrors": [], + "badApiResponses": [] +} diff --git a/docs/ux-ui/acceptance/deployed-bf43263-2026-10-08.json b/docs/ux-ui/acceptance/deployed-bf43263-2026-10-08.json new file mode 100644 index 00000000..443395a0 --- /dev/null +++ b/docs/ux-ui/acceptance/deployed-bf43263-2026-10-08.json @@ -0,0 +1,41 @@ +{ + "date": "2026-10-08", + "frontendSource": "bf43263e43ae375651237e019fe1aae55e848308", + "backendSource": "3722fad329a68a8721ebfda8e044ab6cb5830cca", + "frontendImageId": "sha256:f7463365ad14d98df12f31197a8f76e8147136046cb4a43161270b4bd83587b0", + "backendImageId": "sha256:766d07936321df58c1cfb76cbdc949737a44158e8d8aa65b59f391443221eeba", + "frontendVersion": "1.0.0-test.bf43263", + "backendHealthy": true, + "health": { + "status": "ok", + "timestamp": "2026-10-08T15:58:00.348Z", + "version": "1.0.0-test.3722fad", + "eventLoopDelayMs": 20, + "flowWorker": { + "alive": false, + "bound": false, + "pendingSize": 0, + "dropped": 0, + "packetsReceived": 0 + } + }, + "sourceArchiveSha256": "c42edf2983262b62bcc427f7e2922f1c6bf56754abe3b583be73fd71712bd074", + "buildExit": 0, + "productionTypeScriptPassed": true, + "frontendOnlyRestart": true, + "rollbackImageRetained": true, + "controlBefore": { + "servers": 2, + "speedHistory": 9, + "retentionDays": 14, + "migrations": 9 + }, + "push": false, + "controlAfter": { + "servers": 2, + "speedHistory": 9, + "retentionDays": 14, + "migrations": 9 + }, + "controlsUnchanged": true +} diff --git a/docs/ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json b/docs/ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json new file mode 100644 index 00000000..f47bb0b4 --- /dev/null +++ b/docs/ux-ui/acceptance/wg-ui-native-bf43263-2026-10-08.json @@ -0,0 +1,180 @@ +{ + "date": "2026-10-08", + "backendSource": "3722fad", + "frontendSource": "bf43263", + "name": "mm-acceptance-wg-ui-1791475047653", + "listenPort": 51879, + "subnet": "198.18.255.240/30", + "realRouterOs": true, + "pings": [ + { + "round": 1, + "results": [ + { + "serverId": 1, + "received": 3, + "summary": { + "sent": "3", + "received": "3", + "packet-loss": "0", + "avg-rtt": "55ms15us" + } + }, + { + "serverId": 2, + "received": 3, + "summary": { + "sent": "3", + "received": "3", + "packet-loss": "0", + "avg-rtt": "55ms87us" + } + } + ], + "passed": true + }, + { + "round": 2, + "results": [ + { + "serverId": 1, + "received": 3, + "summary": { + "sent": "3", + "received": "3", + "packet-loss": "0", + "avg-rtt": "54ms990us" + } + }, + { + "serverId": 2, + "received": 3, + "summary": { + "sent": "3", + "received": "3", + "packet-loss": "0", + "avg-rtt": "56ms906us" + } + } + ], + "passed": true + } + ], + "cleanup": [ + { + "serverId": 1, + "/interface/wireguard": true, + "/interface/wireguard/peers": true, + "/ip/address": true, + "/ip/route": true, + "/ip/firewall/filter": true, + "/ip/firewall/nat": true, + "/ip/firewall/mangle": true + }, + { + "serverId": 2, + "/interface/wireguard": true, + "/interface/wireguard/peers": true, + "/ip/address": true, + "/ip/route": true, + "/ip/firewall/filter": true, + "/ip/firewall/nat": true, + "/ip/firewall/mangle": true + } + ], + "uiCreatesOnly": true, + "readRetries": [], + "privateBaselineSaved": true, + "nativePeerAssociationConfirmed": true, + "connectedState": [ + { + "serverId": 1, + "host": "194.226.121.150", + "expectedAddress": "198.18.255.241/30", + "interface": { + "rosId": "*C", + "appId": "1:*C", + "name": "mm-acceptance-wg-ui-1791475047653", + "listenPort": "51879", + "mtu": "1420", + "disabled": "false", + "running": "true", + "comment": "Temporary UX acceptance mm-acceptance-wg-ui-1791475047653", + "keyGenerated": true + }, + "addresses": [ + "198.18.255.241/30" + ], + "peers": [ + { + "rosId": "*8", + "allowedAddresses": "198.18.255.242/32", + "endpoint": "104.165.244.7:51879", + "keepalive": "5s", + "comment": "Temporary UX acceptance mm-acceptance-wg-ui-1791475047653", + "disabled": "false", + "handshake": "2s", + "rx": "1604", + "tx": "1696" + } + ] + }, + { + "serverId": 2, + "host": "104.165.244.7", + "expectedAddress": "198.18.255.242/30", + "interface": { + "rosId": "*8", + "appId": "2:*8", + "name": "mm-acceptance-wg-ui-1791475047653", + "listenPort": "51879", + "mtu": "1420", + "disabled": "false", + "running": "true", + "comment": "Temporary UX acceptance mm-acceptance-wg-ui-1791475047653", + "keyGenerated": true + }, + "addresses": [ + "198.18.255.242/30" + ], + "peers": [ + { + "rosId": "*5", + "allowedAddresses": "198.18.255.241/32", + "endpoint": "194.226.121.150:51879", + "keepalive": "5s", + "comment": "Temporary UX acceptance mm-acceptance-wg-ui-1791475047653", + "disabled": "false", + "handshake": "2s", + "rx": "1548", + "tx": "1604" + } + ] + } + ], + "afterBrowser": [ + { + "serverId": 1, + "host": "194.226.121.150", + "expectedAddress": "198.18.255.241/30", + "interface": null, + "addresses": [], + "peers": [] + }, + { + "serverId": 2, + "host": "104.165.244.7", + "expectedAddress": "198.18.255.242/30", + "interface": null, + "addresses": [], + "peers": [] + } + ], + "limits": [ + "Only own WireGuard resources; no default route or firewall changes", + "Public keys transferred to browser only in memory; no keys persisted in report", + "Short handshake/ICMP, not throughput or failure/RBAC acceptance", + "WireGuard revision audit retained" + ], + "privateBaselineMode": "0600" +} diff --git a/docs/ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..bc1b485d Binary files /dev/null and b/docs/ux-ui/screens/wg-live-create-dark-bf43263-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..54e00aba Binary files /dev/null and b/docs/ux-ui/screens/wg-live-create-light-bf43263-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..19a2d560 Binary files /dev/null and b/docs/ux-ui/screens/wg-live-import-dark-bf43263-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..70a0baf8 Binary files /dev/null and b/docs/ux-ui/screens/wg-live-import-light-bf43263-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..9ea3a848 Binary files /dev/null and b/docs/ux-ui/screens/wg-live-peer-dark-bf43263-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png b/docs/ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png new file mode 100644 index 00000000..9f96646b Binary files /dev/null and b/docs/ux-ui/screens/wg-live-peer-light-bf43263-320-2026-10-08.png differ