Playwright 1.64.1 / Chromium 156.0.8078.4: search, filter-chip URL updates, edition loading, in-document find, UI/document language separation, expansion, /review, mobile filters/back, loaded fonts, and no horizontal overflow at 1280/1440/1024/390 px.
Visual artifacts: docs/product/visual-review/.
Fixture API responses were isolated to the browser test. No production data or deployment changes.
## Changes
- Implement the public search layout and document reader while preserving the authenticated `/review` workflow.
- Bundle licensed Noto Sans/Serif WOFF2 fonts and serve them from an explicit static allowlist.
- Add responsive Playwright visual evidence and update frontend/backend versions.
## Verification
- Backend: 58 passed, 1 skipped (OpenSearch integration requires a configured local service).
- Telegram: 6 passed; backup: 16 passed; deploy: 48 passed; host guard passed.
- Playwright 1.64.1 / Chromium 156.0.8078.4: search, filter-chip URL updates, edition loading, in-document find, UI/document language separation, expansion, `/review`, mobile filters/back, loaded fonts, and no horizontal overflow at 1280/1440/1024/390 px.
- Visual artifacts: `docs/product/visual-review/`.
Fixture API responses were isolated to the browser test. No production data or deployment changes.
Обнаружены три регрессии в публичном поиске: переключение редакции может оставлять документ пустым, открытие другого документа может показывать старый текст в развёрнутом окне, а значения фильтров не переводятся при выборе KY.
Обнаружены три регрессии в публичном поиске: переключение редакции может оставлять документ пустым, открытие другого документа может показывать старый текст в развёрнутом окне, а значения фильтров не переводятся при выборе KY.
[P2] Локализуйте значения фильтров при выборе KY. Здесь всегда используется item.labels.ru, поэтому пункты статуса и вида документа остаются русскими после смены языка интерфейса. Выбирайте подпись по uiLanguage, как для органа принятия.
[P2] Локализуйте значения фильтров при выборе KY. Здесь всегда используется `item.labels.ru`, поэтому пункты статуса и вида документа остаются русскими после смены языка интерфейса. Выбирайте подпись по `uiLanguage`, как для органа принятия.
[P2] Выбирайте доступный язык при смене редакции. Если в новой редакции нет языка предыдущей, проверка выводит ошибку и оставляет текст пустым, хотя текст на другом языке доступен. При смене редакции выбирайте первый доступный язык и обновляйте селектор перед загрузкой.
[P2] Выбирайте доступный язык при смене редакции. Если в новой редакции нет языка предыдущей, проверка выводит ошибку и оставляет текст пустым, хотя текст на другом языке доступен. При смене редакции выбирайте первый доступный язык и обновляйте селектор перед загрузкой.
[P2] Сбрасывайте сохранённый HTML при открытии другого документа. Если у нового документа нет редакций или загрузка завершается ошибкой, панель очищается, но currentDocumentHtml остаётся от предыдущего документа. Кнопка «Развернуть» затем показывает старый текст под новым заголовком.
[P2] Сбрасывайте сохранённый HTML при открытии другого документа. Если у нового документа нет редакций или загрузка завершается ошибкой, панель очищается, но `currentDocumentHtml` остаётся от предыдущего документа. Кнопка «Развернуть» затем показывает старый текст под новым заголовком.
Три замечания из review #280 исправлены. Обнаружена одна новая регрессия при ошибке загрузки другой редакции: видимая ссылка на официальный источник остаётся от предыдущей редакции.
Три замечания из review #280 исправлены. Обнаружена одна новая регрессия при ошибке загрузки другой редакции: видимая ссылка на официальный источник остаётся от предыдущей редакции.
[P2] Скрывайте ссылку на предыдущую редакцию до успешной загрузки новой. После успешного просмотра одной редакции пользователь выбирает другую; если запрос завершается ошибкой или у неё нет доступного языка, currentDocumentHtml и панель очищаются, но document-source остаётся видимым с URL старой редакции. В итоге под ошибкой новой редакции доступна неверная ссылка «Официальный источник». Скрывайте ссылку в начале loadPublicEdition() и показывайте только после успешной загрузки; для пустого/ошибочного состояния также сбрасывайте связанные элементы управления.
[P2] Скрывайте ссылку на предыдущую редакцию до успешной загрузки новой. После успешного просмотра одной редакции пользователь выбирает другую; если запрос завершается ошибкой или у неё нет доступного языка, `currentDocumentHtml` и панель очищаются, но `document-source` остаётся видимым с URL старой редакции. В итоге под ошибкой новой редакции доступна неверная ссылка «Официальный источник». Скрывайте ссылку в начале `loadPublicEdition()` и показывайте только после успешной загрузки; для пустого/ошибочного состояния также сбрасывайте связанные элементы управления.
Проверил весь актуальный PR и исправления review #280 и #281. Переключение языка редакции, очистка HTML при смене документа, KY-подписи фильтров и сброс ссылки на предыдущую редакцию теперь работают по коду и регрессионным сценариям. Блокирующих замечаний на этом SHA нет.
Проверил весь актуальный PR и исправления review #280 и #281. Переключение языка редакции, очистка HTML при смене документа, KY-подписи фильтров и сброс ссылки на предыдущую редакцию теперь работают по коду и регрессионным сценариям. Блокирующих замечаний на этом SHA нет.
Проверил весь актуальный PR53, исправления замечаний review #280/#281 и запись Frontend 0.2.3 в разделе «Не выпущено» CHANGELOG. Код после предыдущего одобрения не менялся; обе проверки текущего SHA успешны. Блокирующих замечаний нет.
Проверил весь актуальный PR53, исправления замечаний review #280/#281 и запись Frontend 0.2.3 в разделе «Не выпущено» CHANGELOG. Код после предыдущего одобрения не менялся; обе проверки текущего SHA успешны. Блокирующих замечаний нет.
admin
merged commit 25c62d3fff into main2026-10-23 08:59:29 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Changes
/reviewworkflow.Verification
/review, mobile filters/back, loaded fonts, and no horizontal overflow at 1280/1440/1024/390 px.docs/product/visual-review/.Fixture API responses were isolated to the browser test. No production data or deployment changes.
Обнаружены три регрессии в публичном поиске: переключение редакции может оставлять документ пустым, открытие другого документа может показывать старый текст в развёрнутом окне, а значения фильтров не переводятся при выборе KY.
@@ -208,0 +465,4 @@input.type = 'radio'; input.name = `filter-${parameter}`; input.value = item.code;input.addEventListener('change', () => runSearch(1));const text = document.createElement('span');text.textContent = `${item.labels.ru || item.labels.ky || item.code} (${item.count})`;[P2] Локализуйте значения фильтров при выборе KY. Здесь всегда используется
item.labels.ru, поэтому пункты статуса и вида документа остаются русскими после смены языка интерфейса. Выбирайте подпись поuiLanguage, как для органа принятия.@@ -217,3 +627,1 @@if (!languages.includes(languageSelect.value)) languageSelect.value = languages[0];const language = languageSelect.value;$('public-document-meta').textContent = 'Загрузка редакции…';if (!languages.includes(language)) { $('document-facts').textContent = copy('editionMissing'); $('public-document-body').replaceChildren(); return; }[P2] Выбирайте доступный язык при смене редакции. Если в новой редакции нет языка предыдущей, проверка выводит ошибку и оставляет текст пустым, хотя текст на другом языке доступен. При смене редакции выбирайте первый доступный язык и обновляйте селектор перед загрузкой.
@@ -236,0 +656,4 @@row.querySelector('.search__opened')?.remove();const opened = document.createElement('span'); opened.className = 'search__opened'; opened.textContent = copy('opened'); row.append(opened);$('document-breadcrumb').textContent = result.name || copy('document');$('public-document-heading').textContent = result.name || copy('document'); $('public-document-body').replaceChildren();[P2] Сбрасывайте сохранённый HTML при открытии другого документа. Если у нового документа нет редакций или загрузка завершается ошибкой, панель очищается, но
currentDocumentHtmlостаётся от предыдущего документа. Кнопка «Развернуть» затем показывает старый текст под новым заголовком.Три замечания из review #280 исправлены. Обнаружена одна новая регрессия при ошибке загрузки другой редакции: видимая ссылка на официальный источник остаётся от предыдущей редакции.
@@ -218,2 +628,2 @@const language = languageSelect.value;$('public-document-meta').textContent = 'Загрузка редакции…';if (!languages.includes(language) && languages.length) { language = languages[0]; $('document-language').value = language; }currentDocumentHtml = ''; $('public-document-body').replaceChildren();[P2] Скрывайте ссылку на предыдущую редакцию до успешной загрузки новой. После успешного просмотра одной редакции пользователь выбирает другую; если запрос завершается ошибкой или у неё нет доступного языка,
currentDocumentHtmlи панель очищаются, ноdocument-sourceостаётся видимым с URL старой редакции. В итоге под ошибкой новой редакции доступна неверная ссылка «Официальный источник». Скрывайте ссылку в началеloadPublicEdition()и показывайте только после успешной загрузки; для пустого/ошибочного состояния также сбрасывайте связанные элементы управления.Проверил весь актуальный PR и исправления review #280 и #281. Переключение языка редакции, очистка HTML при смене документа, KY-подписи фильтров и сброс ссылки на предыдущую редакцию теперь работают по коду и регрессионным сценариям. Блокирующих замечаний на этом SHA нет.
New commits pushed, approval review dismissed automatically according to repository settings
Проверил весь актуальный PR53, исправления замечаний review #280/#281 и запись Frontend 0.2.3 в разделе «Не выпущено» CHANGELOG. Код после предыдущего одобрения не менялся; обе проверки текущего SHA успешны. Блокирующих замечаний нет.