# Phase 5: Каталог (custom-sims в /lab) **Status:** ⬜ Not Started **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** fullstack ## Objective Сохранённые custom-симуляции появляются и играют в /lab наравне со встроенными; раздел «Мои симуляции», редактирование/удаление из каталога, deep-link. ## Tasks - [ ] При загрузке /lab подтягивать custom-sims (свои + published) из `GET /api/custom-sims` и регистрировать через `registerSpecSim` (Ф0-адаптер) с id `custom:`. - [ ] Карточки в каталоге: категория/предмет/класс из меты; бейдж «Моя»/«Опубликована». - [ ] Раздел/фильтр «Мои симуляции» в /lab. - [ ] Кнопки на карточке custom-sim: «Редактировать» → `sim-builder.html?id=`, «Удалить» (владельцу). - [ ] Deep-link `/lab?sim=custom:` открывает напрямую (расширить существующий `LAB_SIM_ALIASES`/openSim). - [ ] Ленивая загрузка движка (`_sim_*.js`) — только когда открыта custom-sim (через `_loader`/`_sim_deps`). ## Files to Modify/Create - `frontend/js/labs/lab-glue.js` и/или `lab-init.js` — загрузка+регистрация custom-sims, карточки, фильтр (modify) - `frontend/js/labs/_sim_deps.js` — `_sim_*.js` в ленивые зависимости (modify) - `js/api.js` — при необходимости (modify, опц.) ## Acceptance Criteria - Сохранённая в Ф4 симуляция видна в /lab, открывается и играет. - «Мои симуляции» показывает свои (вкл. draft); published видят и другие. - Edit/Delete с карточки работают; deep-link открывает. - Старт /lab не тормозит (движок грузится лениво). ## Notes - НЕ ломать существующий каталог встроенных (lab_sims) — custom-список добавляется поверх. - id-неймспейс `custom:` чтобы не конфликтовать со встроенными. ## Review Checklist - [ ] Все задачи выполнены - [ ] Встроенные симуляции и старт /lab не регрессировали - [ ] Draft видит только владелец; published — все - [ ] Ленивая загрузка движка работает ## Handoff to Next Phase