fix(gre): расширить поля внутренних IP на телефоне

This commit is contained in:
Denozordec committed 2026-10-08 21:24:44 +07:00
1 parent ed80aef195
commit fd521f6ef8
10 files changed
+124 -6

No files matched your search

+10
View File
@@ -395,3 +395,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
## 12.5.56 — читаемые внутренние IP в мобильной форме GRE (2026-10-08)
В app/(main)/gre/page.tsx адаптирована только сетка существующих полей: grid-cols-1 gap-3 sm:grid-cols-2. До640px локальный и удалённый IP идут друг под другом; начиная соsm — рядом. Input/Sheet, подписи, значения и API сохранения не менялись, общие ReUI primitives и оформление сохранены. Доступные249px на320px позволяют показать полный255.255.255.254/32 (измеренная ширина текста≈173px); в двух колонках на640px доступно204px.
Локальная визуальная проверка через временный Playwright harness: [светлая тема](ux-ui/acceptance/gre-mobile-inner-ip-light-2026-10-08.json), [тёмная тема](ux-ui/acceptance/gre-mobile-inner-ip-dark-2026-10-08.json). Два прохода/шесть комбинаций320/640/1280px passed: расположение полей, полный IPv4/CIDR в текущем шрифте, Tab локальный→удалённый, сохранение значения, доступность footer и отсутствие page overflow. [Светлый320px](ux-ui/screens/gre-mobile-inner-ip-light-320-2026-10-08.png) и [тёмный320px](ux-ui/screens/gre-mobile-inner-ip-dark-320-2026-10-08.png) просмотрены. API в этих проверках подменён; это доказательство локального layout, а не внешняя CHR приёмка. Первые настройки временного harness исправлены: cwd для Next и фактический ключ темы rl-theme; продуктовых ошибок это не выявило.
Итоговая профильная регрессия gre-form.spec.ts + gre-menu-refresh.spec.ts —4/4 passed: create/DTO/edit, API ошибки и неподтверждённые ответы, сохранение ввода, защита от повторной отправки, открытое меню после refresh. Scoped TypeScript (tmp/tsconfig-speed-check.json), ESLint изменённого page и ReUI checklist passed. Общая регрессия не повторялась для одной адаптивной сетки.
Изменение локальное, удалённый runtime backendbd3f996/frontend731803b не менялся. Следующий12.5.57 — frontend production Docker build/deploy и мобильная форма на новой собственной реальной GRE паре/API/RouterOS, затем очистка и baseline. Пользовательское требование настоящих VPN объектов сохраняется. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
+2 -2
View File
@@ -1,12 +1,12 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
Актуальное продолжение 2026-10-08: 12.5.56 локально улучшил мобильную форму GRE: внутренние IP расположены друг под другом до640px, отsm — в две колонки. Полный IPv4/CIDR читается при320px; обе темы/320/640/1280px/Tab/overflow проверены, профильные Playwright4/4, scoped TypeScript/ESLint passed. На сервере backendbd3f996/frontend731803b: новая сетка ещё не развёрнута. Следующий12.5.57 — Docker deploy frontend и проверка мобильной формы на собственной реальной GRE паре с очисткой; затем остальные VPN. Этап12.5 открыт.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
## Актуальная точка продолжения — 2026-10-08
Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backendbd3f996/frontend731803b и два 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. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения.
Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backendbd3f996/frontend731803b и два 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 — frontend deploy и настоящая мобильная GRE проверка. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения.
Выполненные внешние сценарии не заменяют приёмку оставшихся интеграций и условий эксплуатации. Датированные продолжения ниже — история; точный следующий шаг указан в начале [журнала](ux-ui-progress.md).
+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
Актуальное продолжение 2026-10-08: 12.5.56 локально улучшил мобильную форму GRE: внутренние IP расположены друг под другом до640px, отsm — в две колонки. Полный IPv4/CIDR читается при320px; обе темы/320/640/1280px/Tab/overflow проверены, профильные Playwright4/4, scoped TypeScript/ESLint passed. На сервере backendbd3f996/frontend731803b: новая сетка ещё не развёрнута. Следующий12.5.57 — Docker deploy frontend и проверка мобильной формы на собственной реальной GRE паре с очисткой; затем остальные VPN. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -34,7 +34,17 @@
| 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–55 и ограничения ниже. Runtime backendbd3f996/frontend731803b. |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–56 и ограничения ниже. Runtime backendbd3f996/frontend731803b. |
## 12.5.56 — читаемые внутренние IP в мобильной форме GRE (2026-10-08)
В app/(main)/gre/page.tsx адаптирована только сетка существующих полей: grid-cols-1 gap-3 sm:grid-cols-2. До640px локальный и удалённый IP идут друг под другом; начиная соsm — рядом. Input/Sheet, подписи, значения и API сохранения не менялись, общие ReUI primitives и оформление сохранены. Доступные249px на320px позволяют показать полный255.255.255.254/32 (измеренная ширина текста≈173px); в двух колонках на640px доступно204px.
Локальная визуальная проверка через временный Playwright harness: [светлая тема](ux-ui/acceptance/gre-mobile-inner-ip-light-2026-10-08.json), [тёмная тема](ux-ui/acceptance/gre-mobile-inner-ip-dark-2026-10-08.json). Два прохода/шесть комбинаций320/640/1280px passed: расположение полей, полный IPv4/CIDR в текущем шрифте, Tab локальный→удалённый, сохранение значения, доступность footer и отсутствие page overflow. [Светлый320px](ux-ui/screens/gre-mobile-inner-ip-light-320-2026-10-08.png) и [тёмный320px](ux-ui/screens/gre-mobile-inner-ip-dark-320-2026-10-08.png) просмотрены. API в этих проверках подменён; это доказательство локального layout, а не внешняя CHR приёмка. Первые настройки временного harness исправлены: cwd для Next и фактический ключ темы rl-theme; продуктовых ошибок это не выявило.
Итоговая профильная регрессия gre-form.spec.ts + gre-menu-refresh.spec.ts —4/4 passed: create/DTO/edit, API ошибки и неподтверждённые ответы, сохранение ввода, защита от повторной отправки, открытое меню после refresh. Scoped TypeScript (tmp/tsconfig-speed-check.json), ESLint изменённого page и ReUI checklist passed. Общая регрессия не повторялась для одной адаптивной сетки.
Изменение локальное, удалённый runtime backendbd3f996/frontend731803b не менялся. Следующий12.5.57 — frontend production Docker build/deploy и мобильная форма на новой собственной реальной GRE паре/API/RouterOS, затем очистка и baseline. Пользовательское требование настоящих VPN объектов сохраняется. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
## 12.5.55 — развёртывание устойчивого меню и повторная реальная GRE проверка (2026-10-08)
+11 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-08: 12.5.55 развернул frontend731803b, backend остаётся bd3f996 healthy. На новой собственной GRE паре меню пережило live refresh на обоих CHR при1280/320px без повторного открытия; формы/native peer и двусторонний Ping3/3 подтверждены. Own GRE/IP удалены, выбранная конфигурация и контрольные значения БД восстановлены. Smoke6 экранов passed. Следующий12.5.56 — улучшить чтение внутренних IP в мобильной форме GRE (узкие поля при320px), затем продолжать реальные VPN проверки. Этап12.5 открыт.
Актуальное продолжение 2026-10-08: 12.5.56 локально улучшил мобильную форму GRE: внутренние IP расположены друг под другом до640px, отsm — в две колонки. Полный IPv4/CIDR читается при320px; обе темы/320/640/1280px/Tab/overflow проверены, профильные Playwright4/4, scoped TypeScript/ESLint passed. На сервере backendbd3f996/frontend731803b: новая сетка ещё не развёрнута. Следующий12.5.57 — Docker deploy frontend и проверка мобильной формы на собственной реальной GRE паре с очисткой; затем остальные VPN. Этап12.5 открыт.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -1560,3 +1560,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
## 12.5.56 — читаемые внутренние IP в мобильной форме GRE (2026-10-08)
В app/(main)/gre/page.tsx адаптирована только сетка существующих полей: grid-cols-1 gap-3 sm:grid-cols-2. До640px локальный и удалённый IP идут друг под другом; начиная соsm — рядом. Input/Sheet, подписи, значения и API сохранения не менялись, общие ReUI primitives и оформление сохранены. Доступные249px на320px позволяют показать полный255.255.255.254/32 (измеренная ширина текста≈173px); в двух колонках на640px доступно204px.
Локальная визуальная проверка через временный Playwright harness: [светлая тема](ux-ui/acceptance/gre-mobile-inner-ip-light-2026-10-08.json), [тёмная тема](ux-ui/acceptance/gre-mobile-inner-ip-dark-2026-10-08.json). Два прохода/шесть комбинаций320/640/1280px passed: расположение полей, полный IPv4/CIDR в текущем шрифте, Tab локальный→удалённый, сохранение значения, доступность footer и отсутствие page overflow. [Светлый320px](ux-ui/screens/gre-mobile-inner-ip-light-320-2026-10-08.png) и [тёмный320px](ux-ui/screens/gre-mobile-inner-ip-dark-320-2026-10-08.png) просмотрены. API в этих проверках подменён; это доказательство локального layout, а не внешняя CHR приёмка. Первые настройки временного harness исправлены: cwd для Next и фактический ключ темы rl-theme; продуктовых ошибок это не выявило.
Итоговая профильная регрессия gre-form.spec.ts + gre-menu-refresh.spec.ts —4/4 passed: create/DTO/edit, API ошибки и неподтверждённые ответы, сохранение ввода, защита от повторной отправки, открытое меню после refresh. Scoped TypeScript (tmp/tsconfig-speed-check.json), ESLint изменённого page и ReUI checklist passed. Общая регрессия не повторялась для одной адаптивной сетки.
Изменение локальное, удалённый runtime backendbd3f996/frontend731803b не менялся. Следующий12.5.57 — frontend production Docker build/deploy и мобильная форма на новой собственной реальной GRE паре/API/RouterOS, затем очистка и baseline. Пользовательское требование настоящих VPN объектов сохраняется. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
+10
View File
@@ -403,3 +403,13 @@ Own GRE интерфейсы, адреса и connected route удалены; э
[CHR1 mobile](ux-ui/screens/gre-menu-real-server1-320-2026-10-08.png) визуально просмотрен, [CHR2](ux-ui/screens/gre-menu-real-server2-320-2026-10-08.png) сохранён. Первое измерение ширины произошло во время анимации Sheet и остановило browser harness; повторный проход с ожиданием сходимости layout прошёл, продуктовый код не менялся. Выявлена отдельная UX-недоработка: два внутренних IP поля слишком узкие для чтения полной записи при320px. Это следующий56, а не заявленный исправленный результат55.
DELETE200/200, own интерфейсы/IP и connected routes удалены; выбранные GRE/IP/routes/IPv4 Firewall поля совпали с baseline (CHR1 — одно повторное чтение маршрутов через250ms). Эфемерный контейнер удалён, работают только три основные Compose-службы. GRE revisions намеренно остались как история операций. [Smoke](ux-ui/acceptance/deploy-browser-731803b-2026-10-08.json): dashboard/servers/uptime/settings/filters/alerts200,320px fit, JS/API errors0. Это plain GRE и point-to-point ICMP, не IPsec/throughput/остальные VPN. Telegram/Portal/multi-instance и другие внешние ограничения остаются открытыми. Следующий12.5.56 — мобильная форма GRE; пользовательское правило создавать и очищать реальные VPN объекты сохраняется. Локальный коммит без push.
## 12.5.56 — читаемые внутренние IP в мобильной форме GRE (2026-10-08)
В app/(main)/gre/page.tsx адаптирована только сетка существующих полей: grid-cols-1 gap-3 sm:grid-cols-2. До640px локальный и удалённый IP идут друг под другом; начиная соsm — рядом. Input/Sheet, подписи, значения и API сохранения не менялись, общие ReUI primitives и оформление сохранены. Доступные249px на320px позволяют показать полный255.255.255.254/32 (измеренная ширина текста≈173px); в двух колонках на640px доступно204px.
Локальная визуальная проверка через временный Playwright harness: [светлая тема](ux-ui/acceptance/gre-mobile-inner-ip-light-2026-10-08.json), [тёмная тема](ux-ui/acceptance/gre-mobile-inner-ip-dark-2026-10-08.json). Два прохода/шесть комбинаций320/640/1280px passed: расположение полей, полный IPv4/CIDR в текущем шрифте, Tab локальный→удалённый, сохранение значения, доступность footer и отсутствие page overflow. [Светлый320px](ux-ui/screens/gre-mobile-inner-ip-light-320-2026-10-08.png) и [тёмный320px](ux-ui/screens/gre-mobile-inner-ip-dark-320-2026-10-08.png) просмотрены. API в этих проверках подменён; это доказательство локального layout, а не внешняя CHR приёмка. Первые настройки временного harness исправлены: cwd для Next и фактический ключ темы rl-theme; продуктовых ошибок это не выявило.
Итоговая профильная регрессия gre-form.spec.ts + gre-menu-refresh.spec.ts —4/4 passed: create/DTO/edit, API ошибки и неподтверждённые ответы, сохранение ввода, защита от повторной отправки, открытое меню после refresh. Scoped TypeScript (tmp/tsconfig-speed-check.json), ESLint изменённого page и ReUI checklist passed. Общая регрессия не повторялась для одной адаптивной сетки.
Изменение локальное, удалённый runtime backendbd3f996/frontend731803b не менялся. Следующий12.5.57 — frontend production Docker build/deploy и мобильная форма на новой собственной реальной GRE паре/API/RouterOS, затем очистка и baseline. Пользовательское требование настоящих VPN объектов сохраняется. Telegram/Portal/multi-instance и остальные внешние ограничения остаются открытыми. Локальный коммит без push.
@@ -0,0 +1,39 @@
{
"date": "2026-10-08",
"localWorkingTree": true,
"httpMocks": true,
"theme": "dark",
"cases": [
{
"width": 320,
"columns": 1,
"fullIpv4CidrFits": true,
"textWidth": 172.79983520507812,
"availableWidth": 249,
"keyboardOrder": true,
"noPageOverflow": true
},
{
"width": 640,
"columns": 2,
"fullIpv4CidrFits": true,
"textWidth": 172.79983520507812,
"availableWidth": 204,
"keyboardOrder": true,
"noPageOverflow": true
},
{
"width": 1280,
"columns": 2,
"fullIpv4CidrFits": true,
"textWidth": 151.19989013671875,
"availableWidth": 204,
"keyboardOrder": true,
"noPageOverflow": true
}
],
"limits": [
"Local layout check using mocked API; not an external CHR acceptance",
"IPv4/CIDR text measured using the actual input font; no API or RouterOS change"
]
}
@@ -0,0 +1,39 @@
{
"date": "2026-10-08",
"localWorkingTree": true,
"httpMocks": true,
"theme": "light",
"cases": [
{
"width": 320,
"columns": 1,
"fullIpv4CidrFits": true,
"textWidth": 172.79983520507812,
"availableWidth": 249,
"keyboardOrder": true,
"noPageOverflow": true
},
{
"width": 640,
"columns": 2,
"fullIpv4CidrFits": true,
"textWidth": 172.79983520507812,
"availableWidth": 204,
"keyboardOrder": true,
"noPageOverflow": true
},
{
"width": 1280,
"columns": 2,
"fullIpv4CidrFits": true,
"textWidth": 151.19989013671875,
"availableWidth": 204,
"keyboardOrder": true,
"noPageOverflow": true
}
],
"limits": [
"Local layout check using mocked API; not an external CHR acceptance",
"IPv4/CIDR text measured using the actual input font; no API or RouterOS change"
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB