Maxim Dolgolyov
77e4dffb43
feat(phys8): Phase 0 redesign foundation — CSS + JS infrastructure
...
Закладывает уникальный визуальный язык и engine'ы для редизайна Физики 8.
CSS:
- phys8-design-system.css (12 КБ): 3 темы (thermal/electric/spectrum),
тематические hero-палитры, watermarks, animations (thermal-shift,
electric-pulse, spectrum-drift, wm-breathe/flicker/rotate, noise overlay),
staggered fade-in для виджетов, soft elevation на карточках,
monospace для физ. величин, topic-aware progress bars,
mobile responsive (≤768px), prefers-reduced-motion.
- phys8-interactives.css (10 КБ): .p8-draggable + .p8-droptarget с
hover-effects, .p8-palette (для circuit-builder), .p8-scrubber,
.p8-readout табло, .p8-tooltip, .p8-sandbox canvas wrapper,
.p8-thermometer + .p8-compass-needle SVG-композиции, glow-utility.
JS:
- phys8-anim.js (6 КБ): easing-функции (quad/cubic/expo/back/elastic/
bounce/spring), tween-engine с onUpdate/onComplete, raf-wrapper,
oscillate, stagger, onVisible (IntersectionObserver). Экспорт P8Anim.
- phys8-drag.js (12 КБ): универсальный drag-engine. P8Drag.attach()
для DOM/SVG, P8Drag.attachCanvas() для логических объектов с
hit-test, P8Drag.attachPalette() для drag-from-palette-to-drop,
constraints (lockX/Y, bounds, snap-to-grid), touch + mouse + pointer.
- phys8-helpers.js (18 КБ): тематические хелперы. P8Helpers.thermal
(tempColor 0-1, heatFlowArrow, molecule, thermometerSVG,
convectionCellParticles), .em (chargeSVG, circuitComponent для
battery/resistor/lamp/ammeter/voltmeter/switch, fieldLineFrom),
.optics (rayLine, lensSVG converging/diverging, mirrorPlane),
.svg utils (el, create, linearGradient, radialGradient,
gradientArrow, labeledText).
Линковка (redesign_p8_phase0.cjs):
- 2 CSS-link после katex CDN
- 3 JS-link после phys.js/xp.js
- body class p8-theme-thermal/electric/spectrum на ch1/ch2/ch3
- hub и lab — без темы (нейтральный пурпурный brand)
2026-05-30 09:55:00 +03:00
Maxim Dolgolyov
1f17fb40dc
fix(textbooks): извлечён общий widget CSS — phys-textbook-widgets.css
...
Жалоба пользователя по Физике 8 (но проблема общая для Phys 8 и Phys 9):
страницы глав используют классы .wg/.dnd-pool/.dnd-chip/.btn/.score-display/
.feedback/.actions/.sliders/.spoiler/.drop-box в HTML-разметке, но CSS-правила
для них живут только в physics_10_ch1.html. Из-за этого карточки-задания,
chip'ы drag-and-drop, кнопки и feedback-блоки в Phys 8 и Phys 9 рендерились
без стилей (как обычный текст).
- extract_widget_css.cjs: вытягивает CSS-блок (.btn..pre-.col-side) из
physics_10_ch1.html в frontend/css/phys-textbook-widgets.css (6.4 КБ)
- Подключает <link> в 11 файлов: physics_8_ch1/ch2/ch3/hub/lab,
physics_9_ch1..ch5, physics_9_hub
- migrate_phys9_content.js теперь инжектит ссылку на widget CSS при будущих
миграциях (рядом с FA CDN)
2026-05-30 09:16:24 +03:00
Maxim Dolgolyov
33a91900a8
feat(phys8): Phase 0 — skeleton hub + 3 chapters + lab + phys.js/optics.js
...
Полная инфраструктура курса «Физика 8» (Исаченкова, 2018):
- physics_8_hub.html: палитра violet/indigo, 3 главы + ЛР + финал курса
с 10 интегрированными боссами и ачивкой «Магистр физики 8» (+150 XP)
- physics_8_ch1.html (Тепловые, §§1–11): красный акцент
- physics_8_ch2.html (Электромагнитные, §§12–31): янтарный акцент
- physics_8_ch3.html (Световые, §§32–40): голубой акцент
- physics_8_lab.html (7 ЛР): зелёный акцент
- Расширение phys.js: tempColor, thermometer, calorimeter, createHeatBar,
phaseGraphTT, Rseries, Rparallel
- Новый модуль optics.js: ray, refractRay, reflectRay, mirrorPlane,
mirrorSpherical, thinLens, buildLensImage, goldenRays, eyeDiagram,
lightObject, shadowTriangle
- Миграция 037: replace legacy children (thermal/electro/optics) на
physics-8-ch1/ch2/ch3 + physics-8-lab; обновлён hub до 47 пунктов
BUILDERS всех § рендерят stub с указанием Phase/Wave из PLAN_PHYSICS_8.md.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-29 22:41:37 +03:00