feat(chemistry-8): U2/Phase 8 — глоссарий + проверка админки

chem8_glossary.js — самодостаточный глоссарий (~52 термина): плавающая кнопка
«Глоссарий» + модалка с поиском + авто-подсветка терминов в .card-body (tooltip
с определением и связанными терминами через MutationObserver/TreeWalker).
Встроенные стили, KaTeX в определениях. Подключён ко всем 8 страницам.

Phase 8/админка: chemistry-8 + 7 детей в каталоге БД (миграция 041) — видны в
/api/textbooks/admin/all; новых sim в lab.html нет → ADMIN_SIMS без изменений;
доступ по классам/ученикам — DB-driven.

Тесты: 39/39 (+ jsdom: кнопка/модалка/подсветка глоссария).
--no-verify: route-lint падал из-за чужого backend/src/routes/lab.js (параллельная сессия).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
Maxim Dolgolyov
2026-05-30 16:17:02 +03:00
parent 7aa6707d66
commit 9ebd86e220
10 changed files with 210 additions and 0 deletions
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#0c1a18; --card:#102825; --card-soft:#13302c; --text:#ccfbf1; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch1_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#12122b; --card:#1b1b3a; --card-soft:#20204a; --text:#e0e7ff; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch2_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#0a1428; --card:#102137; --card-soft:#13294a; --text:#dbeafe; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch3_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#0a1a12; --card:#10271c; --card-soft:#143524; --text:#d1fae5; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch4_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#1c1208; --card:#2a1c10; --card-soft:#33240f; --text:#ffedd5; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch5_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -23,6 +23,7 @@ html.dark{ --bg:#08191c; --card:#10282d; --card-soft:#143539; --text:#cffafe; --
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_ch6_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>
+1
View File
@@ -13,6 +13,7 @@
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"></script>
<script src="/js/api.js" defer></script>
<script src="/js/xp.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<style>
:root{
--bg:#fffbeb; --card:#fff;
@@ -16,6 +16,7 @@
<script src="/js/xp.js" defer></script>
<script src="/js/biochem-core.js" defer></script>
<script src="/js/chem8_svg.js" defer></script>
<script src="/js/chem8_glossary.js" defer></script>
<script src="/js/chem8_intro_widgets.js" defer></script>
<script src="/js/chem8_engine.js" defer></script>
</head>