Files
Learn_System/plans/lab-content-engine/phase-0-registry-core.md
T
Maxim Dolgolyov 410eb8a862 fix(biochem 3D): корректная глубина + объёмные связи-цилиндры
Два дефекта, из-за которых 3D читался как плоская диаграмма:
- painter-сортировка была по возрастанию z (ближние первыми) — дальние
  атомы рисовались поверх ближних. Теперь единый список примитивов
  (атомы + половинки связей) сортируется по убыванию z (дальние первыми).
- связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»:
  толстый штрих с поперечным градиентом (центр светлее, края темнее),
  двухцветные (каждая половина под цвет своего атома) — фирменный вид
  ball-and-stick. Ширина зависит от перспективы (ближе — толще).
- усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 12:58:39 +03:00

3.4 KiB
Raw Blame History

Phase 0: Ядро реестра + адаптер + 3 пилота

Status: Not Started Parent plan: PLAN.md Domain: frontend

Objective

Создать LabRegistry (реестр + менеджер активной симуляции). Подключить адаптер: ядро лаборатории сначала смотрит в реестр, иначе — старый путь. Мигрировать 3 пилота (graph, quadratic, pendulum) и доказать паритет. Полностью обратимо.

Tasks

  • Создать frontend/js/labs/_registry.jswindow.LabRegistry (register/get/has/all + setActive/stopActive/destroyActive). Без эмоджи.
  • Подключить _registry.js в lab.html ПЕРВЫМ среди labs-скриптов (до graph.js).
  • Адаптер renderSims() (lab-glue.js): порядок из SIMS, registry-override + resolve preview (string|fn), append registry-only.
  • Адаптер openSim() (lab-init.js): base-id, registry-first → stopActive/open/setActive; deep-link :arg сохранить.
  • Адаптер loadTheory() (lab-init.js): registry.theory в приоритете, иначе THEORY[base].
  • Адаптер closeSim()/_pauseAllSims(): добавить LabRegistry.stopActive()/destroyActive().
  • Зарегистрировать 3 пилота в конце lab-init.js (после _openXxx): graph, quadratic, pendulum — с preview-fn, theory-объектом, open=_openXxx, stop/destroy.
  • Удалить graph/quadratic/pendulum из legacy THEORY и SIMS (проверка, что адаптер их подхватывает из реестра).

Files to Modify/Create

  • frontend/js/labs/_registry.js — новый: ядро реестра.
  • frontend/lab.html — добавить <script src="/js/labs/_registry.js"> первым (в обоих местах, если дублируется список).
  • frontend/js/labs/lab-glue.js — renderSims адаптер; убрать 3 пилота из SIMS.
  • frontend/js/labs/lab-init.js — openSim/loadTheory/closeSim/_pauseAllSims адаптеры; регистрация 3 пилотов; убрать 3 пилота из THEORY.

Acceptance Criteria

  • Каталог отображает все симуляции в прежнем порядке; 3 пилота открываются и работают идентично.
  • Остальные 46 симуляций открываются по-старому (legacy путь не сломан).
  • Deep-links и обратная совместимость id работают.
  • Нет дублей карточек (пилот не показан дважды).
  • Нет эмоджи; иконки .ic.

Notes

  • Порядок загрузки: см. CONTEXT.md. preview как функция спасает от undefined P_*.
  • _disabledSimIds фильтрация должна продолжать работать для registry-записей.

Review Checklist

  • Адаптер не ломает legacy симуляции
  • Паритет 3 пилотов (open/stop/close/theory/preview)
  • Соблюдены конвенции проекта (no emoji, .ic)
  • Нет дублирования карточек

Handoff to Next Phase