Связи: интерактивная карта связей (force-directed graph) #1

Closed
Pixel wants to merge 0 commits from pixel-08.06 into main
Collaborator

Что

Экран «Связи» переделан из статичного списка в интерактивную нод-граф карту: фокус в центре, связи на орбите, навигация тапом/свайпом, премиальные переходы.

Границы

  • Затронут только UI экрана «Связи» (shine-UI). Бэкенд и блокчейн НЕ тронуты.
  • Данные read-only через существующий getUserConnectionsGraph — серверный API не менялся.
  • Деструктивные пункты меню (Скрыть/Удалить связь) — UI-заглушки без записи в блокчейн.

Ключевое

  • Diffing-переходы, CSS-bloom, прорастание линий (stroke-dashoffset).
  • Иерархия связей: матовые тонкие у обычных, двухслойный неоновый «световод» у сияющих.
  • Живой фон-небула, стеклянные фильтры (Все/Семья/Друзья/Сияющие).
  • Kill-switch физики (sleep), контекстное меню вне scale, хард-лимит DOM, фото-аватарки.
  • Лаборатория /network-view/lab на мок-данных — просмотр графа без бэкенда.

Версия

client.version → 1.2.141.

Проверка

Локально в /network-view/lab: переходы, фильтры, прорастание, sleep — ок; в консоли только ws_open_error (бэкенд, ожидаемо). Реальный путь требует живого wss://shineup.me/ws.

## Что Экран «Связи» переделан из статичного списка в интерактивную нод-граф карту: фокус в центре, связи на орбите, навигация тапом/свайпом, премиальные переходы. ## Границы - Затронут только UI экрана «Связи» (shine-UI). Бэкенд и блокчейн НЕ тронуты. - Данные read-only через существующий getUserConnectionsGraph — серверный API не менялся. - Деструктивные пункты меню (Скрыть/Удалить связь) — UI-заглушки без записи в блокчейн. ## Ключевое - Diffing-переходы, CSS-bloom, прорастание линий (stroke-dashoffset). - Иерархия связей: матовые тонкие у обычных, двухслойный неоновый «световод» у сияющих. - Живой фон-небула, стеклянные фильтры (Все/Семья/Друзья/Сияющие). - Kill-switch физики (sleep), контекстное меню вне scale, хард-лимит DOM, фото-аватарки. - Лаборатория /network-view/lab на мок-данных — просмотр графа без бэкенда. ## Версия client.version → 1.2.141. ## Проверка Локально в /network-view/lab: переходы, фильтры, прорастание, sleep — ок; в консоли только ws_open_error (бэкенд, ожидаемо). Реальный путь требует живого wss://shineup.me/ws.
Pixel added 6 commits 2026-06-09 16:54:43 +00:00
Переработка экрана «Связи» в интерактивный нод-граф с премиальными переходами.

Движок (js/pages/network/force-graph.js):
- diffing-переходы: общие узлы перелетают, новые расцветают каскадом, исчезнувшие — Ghost-слой (800мс, на месте);
- мягкая радиальная пружина + отталкивание (органичная орбита), упругий влёт фокуса;
- динамическая вязкость на старте (трение 0.92→0.82, отталкивание ослаблено) — мягкий разлёт без тряски;
- жёсткая заморозка (kill-switch) при затухании — нет «треска», экономия батареи;
- линии — SVG <path> Безье (изогнутые нити), прорастание; жесты pan с инерцией;
- хард-лимит DOM-аватарок (остальное — SVG-точки).

Интеграция и UX:
- adapter.js: getUserConnectionsGraph → модель движка (сервер не трогаем, read-only);
- фильтры (Все/Семья/Друзья/Сияющие), контекстное меню (node-menu.js), нижний сниппет, профиль;
- прицел в центре, дыхание фокуса, свечение сияющих;
- лаборатория network-view/lab на мок-данных (networkGraphUsers) для тестов без бэкенда.

Документация: shine-UI/Dev_Docs/features/interactive-network-graph.md.
Бамп client.version 1.2.135 -> 1.2.136.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Линии: тонкие дуги Безье (градиент неон-центр → цвет роли); связь к «сияющему»
  монолитно светится статичной тенью drop-shadow (без бегущих импульсов).
- Прорастание новых линий из центра: stroke-dasharray/dashoffset синхронно с
  разлётом узла (кончик трекает аватарку); старые линии исчезают мгновенно.
- Ghost-слой: только аватарки (без линий), 1000мс — нет висящих «ошмётков».
- CSS-bloom разлёта на компоновщике (устойчив к троттлингу rAF; завершение по таймеру).
- Сияющие узлы: мягкая медленная пульсация 3.6с (многослойная box-shadow + SVG-ореол);
  тестовые фото-аватарки.
- Фильтры слоёв в лаборатории + фикс перехвата click сценой (stopPropagation на чипах);
  фейд скрываемых на месте (opacity 0 + scale 0.8, 300мс), фиксация без физики (ноль тряски).
- Бамп client.version → 1.2.137; обновлена документация фичи.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Сияющие связи — двухслойный неоновый «световод»: размытый glow (4px, blur 2px,
  opacity 0.4) + тонкий чёткий core (1.5px, #e0f7fc). Объёмное OLED-свечение,
  линия остаётся изящной. Оба слоя растут синхронно (общий dashoffset).
- Обычные линии — тоньше (1.0–1.2px) и глубокий уход в прозрачность (0.42 → 0.07),
  чтобы матовые связи не спорили с сияющими.
- Живой фон-«небула»: глубокое размытое сине-голубое облако под центром, медленная
  пульсация радиуса/яркости + переливы индиго↔ультрамарин (hue-rotate, 7с).
- Стеклянные чипы фильтров (frosted glass): rgba(255,255,255,0.03) + backdrop blur(12px)
  + граница 0.5px solid rgba(255,255,255,0.1); активный подсвечен сине-голубым.
- Бамп client.version → 1.2.138; документация фичи обновлена.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Убран механизм lerpX/lerpY: координаты для отрисовки берутся из n.x/n.y, lerp нигде
  не читался кроме условия заморозки (lerpSettling). Удалены поля, advanceLerp(), EDGE_LERP
  и lerpSettling — граф засыпает чуть раньше (без визуальных изменений; проверено: frozen=true).
- Удалены неиспользуемые cubicBezier() и EASE_BLOOM (easing теперь делает CSS); easeOutCubic
  оставлен (нужен в stepTween для фолбэк-центрирования).
- Документация фичи актуализирована (убрана заметка про lerp как кандидата на чистку).
- Бамп client.version → 1.2.139.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- shine-UI/js/pages/network/lab.js убран из git (git rm --cached) и добавлен в .gitignore:
  на сервере лаборатория не нужна (там реальные данные), локально файл остаётся и работает.
- network-view.js: статический импорт lab.js заменён на ДИНАМИЧЕСКИЙ с фолбэком — если файла
  нет (прод/сервер), реальный экран «Связи» не ломается, а заход на /network-view/lab уводит
  на обычный экран. Локально лаборатория грузится как прежде.
- Документация фичи отражает, что lab.js — локальный (в .gitignore).
- Бамп client.version → 1.2.140.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Откат удаления из aed64e7: lab.js снова в репозитории, статический импорт в network-view.js,
строка lab.js убрана из .gitignore. Лаборатория /network-view/lab нужна для демонстрации/проверки
графа на мок-данных без бэкенда. Бамп client.version → 1.2.141.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pixel self-assigned this 2026-06-09 16:57:23 +00:00
Pixel requested review from Aidar 2026-06-09 17:04:25 +00:00
Pixel force-pushed pixel-08.06 from 2bd27cd73b to 3de992d251 2026-06-09 18:24:13 +00:00 Compare
Aidar closed this pull request 2026-06-09 18:33:16 +00:00
Owner

Добавили руками

Добавили руками

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Aidar/SHiNE-server#1
No description provided.