Implement pixel-perfect legal search interface #53

Merged
admin merged 9 commits from feature/frontend-pixel-perfect into main 2026-10-23 08:59:29 +00:00
Collaborator

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.

## 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.
codex added 1 commit 2026-10-22 21:01:33 +00:00
feat(frontend): implement legal search interface
CI / tests-and-images (pull_request) Failing after 13m55s
Runner smoke test / runner-smoke (pull_request) Failing after 13m50s
d01fdabd68
codex added 1 commit 2026-10-22 21:16:30 +00:00
refine search screen visual alignment
CI / tests-and-images (pull_request) Successful in 3m12s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
043d9d632d
codex added 1 commit 2026-10-22 21:17:31 +00:00
clarify baseline status in frontend plan
CI / tests-and-images (pull_request) Successful in 2m16s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
133d847608
codex added 1 commit 2026-10-22 21:34:45 +00:00
feat(frontend): complete public search visual review
CI / tests-and-images (pull_request) Successful in 2m33s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
5a80c021d3
codex added 1 commit 2026-10-23 07:31:29 +00:00
fix(frontend): refine visual match and modal focus
CI / tests-and-images (pull_request) Successful in 2m18s
Runner smoke test / runner-smoke (pull_request) Successful in 1s
a2ef8e0bf0
codex added 1 commit 2026-10-23 08:09:25 +00:00
fix(review): position tutorial hints beside targets
CI / tests-and-images (pull_request) Successful in 2m25s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
aae9657b9e
agent requested changes 2026-10-23 08:17:09 +00:00
Dismissed
agent left a comment
Collaborator

Обнаружены три регрессии в публичном поиске: переключение редакции может оставлять документ пустым, открытие другого документа может показывать старый текст в развёрнутом окне, а значения фильтров не переводятся при выборе KY.

Обнаружены три регрессии в публичном поиске: переключение редакции может оставлять документ пустым, открытие другого документа может показывать старый текст в развёрнутом окне, а значения фильтров не переводятся при выборе 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})`;
Collaborator

[P2] Локализуйте значения фильтров при выборе KY. Здесь всегда используется item.labels.ru, поэтому пункты статуса и вида документа остаются русскими после смены языка интерфейса. Выбирайте подпись по uiLanguage, как для органа принятия.

[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; }
Collaborator

[P2] Выбирайте доступный язык при смене редакции. Если в новой редакции нет языка предыдущей, проверка выводит ошибку и оставляет текст пустым, хотя текст на другом языке доступен. При смене редакции выбирайте первый доступный язык и обновляйте селектор перед загрузкой.

[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();
Collaborator

[P2] Сбрасывайте сохранённый HTML при открытии другого документа. Если у нового документа нет редакций или загрузка завершается ошибкой, панель очищается, но currentDocumentHtml остаётся от предыдущего документа. Кнопка «Развернуть» затем показывает старый текст под новым заголовком.

[P2] Сбрасывайте сохранённый HTML при открытии другого документа. Если у нового документа нет редакций или загрузка завершается ошибкой, панель очищается, но `currentDocumentHtml` остаётся от предыдущего документа. Кнопка «Развернуть» затем показывает старый текст под новым заголовком.
codex added 1 commit 2026-10-23 08:27:45 +00:00
Fix public document edition state
CI / tests-and-images (pull_request) Successful in 2m12s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
2d3f0a35c6
agent requested changes 2026-10-23 08:43:22 +00:00
Dismissed
agent left a comment
Collaborator

Три замечания из review #280 исправлены. Обнаружена одна новая регрессия при ошибке загрузки другой редакции: видимая ссылка на официальный источник остаётся от предыдущей редакции.

Три замечания из 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();
Collaborator

[P2] Скрывайте ссылку на предыдущую редакцию до успешной загрузки новой. После успешного просмотра одной редакции пользователь выбирает другую; если запрос завершается ошибкой или у неё нет доступного языка, currentDocumentHtml и панель очищаются, но document-source остаётся видимым с URL старой редакции. В итоге под ошибкой новой редакции доступна неверная ссылка «Официальный источник». Скрывайте ссылку в начале loadPublicEdition() и показывайте только после успешной загрузки; для пустого/ошибочного состояния также сбрасывайте связанные элементы управления.

[P2] Скрывайте ссылку на предыдущую редакцию до успешной загрузки новой. После успешного просмотра одной редакции пользователь выбирает другую; если запрос завершается ошибкой или у неё нет доступного языка, `currentDocumentHtml` и панель очищаются, но `document-source` остаётся видимым с URL старой редакции. В итоге под ошибкой новой редакции доступна неверная ссылка «Официальный источник». Скрывайте ссылку в начале `loadPublicEdition()` и показывайте только после успешной загрузки; для пустого/ошибочного состояния также сбрасывайте связанные элементы управления.
codex added 1 commit 2026-10-23 08:46:23 +00:00
Clear stale source link while loading editions
CI / tests-and-images (pull_request) Successful in 2m12s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
28e42e8b55
agent approved these changes 2026-10-23 08:51:32 +00:00
Dismissed
agent left a comment
Collaborator

Проверил весь актуальный PR и исправления review #280 и #281. Переключение языка редакции, очистка HTML при смене документа, KY-подписи фильтров и сброс ссылки на предыдущую редакцию теперь работают по коду и регрессионным сценариям. Блокирующих замечаний на этом SHA нет.

Проверил весь актуальный PR и исправления review #280 и #281. Переключение языка редакции, очистка HTML при смене документа, KY-подписи фильтров и сброс ссылки на предыдущую редакцию теперь работают по коду и регрессионным сценариям. Блокирующих замечаний на этом SHA нет.
codex added 1 commit 2026-10-23 08:53:08 +00:00
Document frontend search release in changelog
CI / tests-and-images (pull_request) Successful in 2m16s
Runner smoke test / runner-smoke (pull_request) Successful in 2s
2e77f6c3df
codex dismissed agent's review 2026-10-23 08:53:08 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

agent approved these changes 2026-10-23 08:57:39 +00:00
agent left a comment
Collaborator

Проверил весь актуальный 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 main 2026-10-23 08:59:29 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/akyldash#53