Превью раньше рендерило KaTeX только в блоках .pv-formula — формулы $...$
в ячейках таблиц показывались сырыми, хотя у ученика (lesson.html) они
рендерятся. Таблица-превью получила класс .pv-table и попадает в KaTeX-проход.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Блок-карточка урока draggable=true перехватывала зажатие мыши на холсте → тащился весь
блок, а не рисовалась линия. Теперь dragstart внутри .svgdraw-host отменяется, на холсте
заглушены нативный drag и выделение (user-select/-webkit-user-drag:none).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Лёгкий векторный редактор frontend/js/svg-draw.js (перо со сглаживанием, линия,
прямоугольник, эллипс, стрелка, текст, цвет/толщина/заливка, выбор/перемещение/удаление,
undo/redo, очистка) → выдаёт чистый <svg>. Хранится inline в данных блока, переоткрывается
для дорисовки.
- Новый тип блока svg-draw: палитра «Рисунок», редактор (монтирование виджета + подпись),
превью и студенческий рендер (lesson.html) — санитизированный inline-SVG, адаптивный.
- Санитайзер frontend/js/svg-sanitize.js (UMD, общий клиент/сервер): whitelist тегов/атрибутов,
вырезает script/foreignObject/style/image/a, on*=, href, javascript:. Без зависимостей.
- Сервер (lessonController): svg-draw в VALID_TYPES + очистка data.svg при сохранении.
- Переиспользуемо: тот же виджет пригоден для флешкарт и фигур генератора задач.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add js/sidebar.js: generates full sidebar HTML into #app-sidebar,
handles role-based visibility, active link (with prefix matching),
toggle wiring, collapsed state, board/features/notif init
- Replace <aside class="sidebar">...</aside> with <aside id="app-sidebar">
across all 35 standard-layout pages via scripts/apply-sidebar.js
- Add notifications.js to 5 pages that were missing it
- Fix api.js initPage(): skip toggle re-wiring if data-sb-wired set,
fix active link selector .sb-item → .sb-link
- Remove stale sbl-*/nav-admin/btn-upload-nav getElementById calls
that crashed after sidebar replacement (lab, classes, collection,
crossword, hangman, knowledge-map, library, pet, profile)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>