410eb8a862
Два дефекта, из-за которых 3D читался как плоская диаграмма: - painter-сортировка была по возрастанию z (ближние первыми) — дальние атомы рисовались поверх ближних. Теперь единый список примитивов (атомы + половинки связей) сортируется по убыванию z (дальние первыми). - связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»: толстый штрих с поперечным градиентом (центр светлее, края темнее), двухцветные (каждая половина под цвет своего атома) — фирменный вид ball-and-stick. Ширина зависит от перспективы (ближе — толще). - усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.4 KiB
3.4 KiB
Phase 0: Ядро реестра + адаптер + 3 пилота
Status: ⬜ Not Started Parent plan: PLAN.md Domain: frontend
Objective
Создать LabRegistry (реестр + менеджер активной симуляции). Подключить адаптер: ядро
лаборатории сначала смотрит в реестр, иначе — старый путь. Мигрировать 3 пилота
(graph, quadratic, pendulum) и доказать паритет. Полностью обратимо.
Tasks
- Создать
frontend/js/labs/_registry.js—window.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)
- Нет дублирования карточек