[bug][ui] Автотест стенда: 3 UI-бага (stale-editor island, flushSync warning, share includeSubPages default) #216

Closed
opened 2026-06-26 07:33:24 +03:00 by Ghost · 0 comments

Найдено автономным тестированием стенда (web-test-orchestrator, Playwright, с verifier-проходом). Только гитмост-UI баги (git-sync баги вынесены в фиксы на ветке feat/git-sync; полный отчёт — отдельным ишью).

[medium] Открытый редактор — это устаревший остров: он никогда не получает изменения, втянутые из git или внесённые извне (нет живого обновления)

Воспроизведение: Откройте git-синхронизированную страницу в UI-редакторе и оставьте вкладку открытой (не печатайте). Из свежего клона vault'а запушьте изменение в .md этой страницы. Наблюдайте за открытым редактором 30+ секунд (>=2 poll-цикла).

Доказательство: ПОДТВЕРЖДЕНО. Запушен маркер LIVEPROBE-1782447626; независимый свежий клон показал, что он втянут на стороне сервера на t+7s и t+13s, но ОТКРЫТЫЙ редактор не отрендерил его ни разу за окно в 91s (open_editor_showed_at_s=None). Редактор рендерит только из своей комнаты Hocuspocus/Yjs, гидрированной из БД в момент старта сессии; git-ingest никогда не вещает в активную комнату. Именно это устаревание — механизм, стоящий за багами потери данных в открытом редакторе: устаревший in-memory Yjs-документ автосохраняет себя поверх внешнего изменения. Перезагрузка вкладки показывает затёртый (откаченный) текст, а не git-правку.

Первопричина: git-ingest пишет в серверный Y.Doc, но не сходится с in-memory Yjs-документом уже подключённого редактора в браузере; нет живого обновления/вещания в открытую комнату.

[low] React-предупреждение 'flushSync was called from inside a lifecycle method' логируется на каждой странице редактора

Воспроизведение: Откройте любую страницу в редакторе с захватом консоли devtools.

Доказательство: ПОДТВЕРЖДЕНО. При загрузке редактора — 6 записей console:error (React маршрутизирует dev-предупреждения через console.error), каждая: 'Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering...', исходящие из PureEditorContent / EditorProvider TipTap. Предупреждение только в dev-режиме — страница рендерится полностью, нет краша/пустого экрана, контент сохраняется и сохраняется в персистентном виде. Низкая важность, но это шум, маскирующий реальные ошибки консоли во время QA. (Примечание: более узкое утверждение тестера контента редактора — что оно срабатывает именно 'во время вставки блока' — воспроизвести НЕ удалось; предупреждение срабатывает на монтировании/загрузке редактора независимо от этого.)

Первопричина: EditorProvider/PureEditorContent TipTap вызывает flushSync во время рендера/жизненного цикла React (предупреждение только в dev-режиме).

[low] Включение «Share to web» по умолчанию выставляет includeSubPages=true — под-страницы становятся публично читаемыми по одному клику тумблера

Воспроизведение: На странице нажмите Share, переключите только верхний тумблер 'Shared to web' (НЕ трогайте 'Include sub-pages'), затем осмотрите созданный share.

Доказательство: ПОДТВЕРЖДЕНО. После включения только основного тумблера POST /api/shares/tree возвращает запись share с includeSubPages:true, а тумблер 'Include sub-pages' в поповере отрендерен как ON (скриншот published.png). Публикация страницы по умолчанию молча включает всё её под-дерево в публичный доступ. Это РАСКРЫТО видимым тумблером в том же выпадающем меню, и у тестовой страницы не было дочерних (фактической утечки нет), отсюда низкая важность — но это дефолт, влияющий на приватность/ожидания, и его стоит отметить для документ-продукта.

🤖 web-test-orchestrator

Найдено автономным тестированием стенда (web-test-orchestrator, Playwright, с verifier-проходом). Только **гитмост-UI** баги (git-sync баги вынесены в фиксы на ветке feat/git-sync; полный отчёт — отдельным ишью). ## [medium] Открытый редактор — это устаревший остров: он никогда не получает изменения, втянутые из git или внесённые извне (нет живого обновления) **Воспроизведение:** Откройте git-синхронизированную страницу в UI-редакторе и оставьте вкладку открытой (не печатайте). Из свежего клона vault'а запушьте изменение в .md этой страницы. Наблюдайте за открытым редактором 30+ секунд (>=2 poll-цикла). **Доказательство:** ПОДТВЕРЖДЕНО. Запушен маркер LIVEPROBE-1782447626; независимый свежий клон показал, что он втянут на стороне сервера на t+7s и t+13s, но ОТКРЫТЫЙ редактор не отрендерил его ни разу за окно в 91s (open_editor_showed_at_s=None). Редактор рендерит только из своей комнаты Hocuspocus/Yjs, гидрированной из БД в момент старта сессии; git-ingest никогда не вещает в активную комнату. Именно это устаревание — механизм, стоящий за багами потери данных в открытом редакторе: устаревший in-memory Yjs-документ автосохраняет себя поверх внешнего изменения. Перезагрузка вкладки показывает затёртый (откаченный) текст, а не git-правку. **Первопричина:** git-ingest пишет в серверный Y.Doc, но не сходится с in-memory Yjs-документом уже подключённого редактора в браузере; нет живого обновления/вещания в открытую комнату. ## [low] React-предупреждение 'flushSync was called from inside a lifecycle method' логируется на каждой странице редактора **Воспроизведение:** Откройте любую страницу в редакторе с захватом консоли devtools. **Доказательство:** ПОДТВЕРЖДЕНО. При загрузке редактора — 6 записей console:error (React маршрутизирует dev-предупреждения через console.error), каждая: 'Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering...', исходящие из PureEditorContent / EditorProvider TipTap. Предупреждение только в dev-режиме — страница рендерится полностью, нет краша/пустого экрана, контент сохраняется и сохраняется в персистентном виде. Низкая важность, но это шум, маскирующий реальные ошибки консоли во время QA. (Примечание: более узкое утверждение тестера контента редактора — что оно срабатывает именно 'во время вставки блока' — воспроизвести НЕ удалось; предупреждение срабатывает на монтировании/загрузке редактора независимо от этого.) **Первопричина:** EditorProvider/PureEditorContent TipTap вызывает flushSync во время рендера/жизненного цикла React (предупреждение только в dev-режиме). ## [low] Включение «Share to web» по умолчанию выставляет includeSubPages=true — под-страницы становятся публично читаемыми по одному клику тумблера **Воспроизведение:** На странице нажмите Share, переключите только верхний тумблер 'Shared to web' (НЕ трогайте 'Include sub-pages'), затем осмотрите созданный share. **Доказательство:** ПОДТВЕРЖДЕНО. После включения только основного тумблера POST /api/shares/tree возвращает запись share с includeSubPages:true, а тумблер 'Include sub-pages' в поповере отрендерен как ON (скриншот published.png). Публикация страницы по умолчанию молча включает всё её под-дерево в публичный доступ. Это РАСКРЫТО видимым тумблером в том же выпадающем меню, и у тестовой страницы не было дочерних (фактической утечки нет), отсюда низкая важность — но это дефолт, влияющий на приватность/ожидания, и его стоит отметить для документ-продукта. 🤖 web-test-orchestrator
vvzvlad added the bug label 2026-06-26 15:51:55 +03:00
Ghost changed title from [bug][ui] Автотест стенда: 4 UI-бага (stale-editor, new-chat-after-fail, flushSync warning, share includeSubPages default) to [bug][ui] Автотест стенда: 3 UI-бага (stale-editor island, flushSync warning, share includeSubPages default) 2026-06-26 16:33:15 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#216