ws/realtime-tree: реалтайм-переименование и смена иконки страницы не доходят до других клиентов (регрессия) #72

Closed
opened 2026-06-21 02:33:09 +03:00 by Ghost · 0 comments

Найдено в multi-aspect code review всех изменений с коммита 053a9c0d (ветка develop).

Грань: regression · Severity: warning
Где: apps/server/src/ws/ws.gateway.ts:64-69; apps/server/src/ws/listeners/page-ws.listener.ts:22-25

Проблема
handleMessage стал no-op (клиентский relay убран намеренно), а серверный PageWsListener сознательно не обрабатывает PAGE_UPDATED (см. комментарий page-ws.listener.ts:22-25). Клиент по-прежнему шлёт operation:"updateOne" (title-editor.tsx, space-tree-row.tsx), но сервер его не ретранслирует. Итог: пользователь A переименовал страницу или сменил иконку — B/C видят устаревший заголовок/иконку в сайдбаре и хлебных крошках до полного рефетча/перезагрузки. Регрессия ранее работавшего поведения (create/duplicate/restore покрыты новыми PAGE_CREATED/PAGE_RESTORED, не покрыт только updateOne).

Предлагаемый фикс
Добавить обработчик PAGE_UPDATED в PageWsListener, вещающий updateOne (title/icon) только при реальном изменении заголовка/иконки (обогатить событие диффом title/icon), через restriction-aware emitTreeEvent, отфильтровывая content-only сохранения. До этого — не убирать клиентский relay updateOne.

Найдено в multi-aspect code review всех изменений с коммита `053a9c0d` (ветка develop). **Грань:** regression · **Severity:** warning **Где:** `apps/server/src/ws/ws.gateway.ts:64-69; apps/server/src/ws/listeners/page-ws.listener.ts:22-25` **Проблема** handleMessage стал no-op (клиентский relay убран намеренно), а серверный PageWsListener сознательно не обрабатывает PAGE_UPDATED (см. комментарий page-ws.listener.ts:22-25). Клиент по-прежнему шлёт operation:"updateOne" (title-editor.tsx, space-tree-row.tsx), но сервер его не ретранслирует. Итог: пользователь A переименовал страницу или сменил иконку — B/C видят устаревший заголовок/иконку в сайдбаре и хлебных крошках до полного рефетча/перезагрузки. Регрессия ранее работавшего поведения (create/duplicate/restore покрыты новыми PAGE_CREATED/PAGE_RESTORED, не покрыт только updateOne). **Предлагаемый фикс** Добавить обработчик PAGE_UPDATED в PageWsListener, вещающий updateOne (title/icon) только при реальном изменении заголовка/иконки (обогатить событие диффом title/icon), через restriction-aware emitTreeEvent, отфильтровывая content-only сохранения. До этого — не убирать клиентский relay updateOne.
Ghost closed this issue 2026-06-21 14:10:31 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#72