Commit Graph

8 Commits

Author SHA1 Message Date
Maxim Dolgolyov 9d5a2959e1 fix(textbooks): кнопка «Шпаргалка» не открывала контент на desktop
На десктопе (>980px) .col-side уже видна как sticky-колонка справа в grid 1fr 280px.
Клик по кнопке #sidebar-btn добавлял .col-side-backdrop.show — backdrop с
z-index:9990 затемнял всю страницу, перекрывая sticky-aside. Со стороны
выглядело как «ничего не открылось» — на самом деле появлялась чёрная вуаль.

Фикс: @media(min-width:981px) скрывает #sidebar-btn и подавляет показ backdrop.
На мобайле (≤980px) кнопка и overlay работают как раньше.

Применено в 51 файле: physics 8/9/10 chN, algebra 7/9/10/11 chN + 8 ch2-3,
geometry 7/8/9/11 chN, geometry_10 r1-4.
2026-05-30 09:51:04 +03:00
Maxim Dolgolyov 660e7e2747 feat(gamification): Phase 1 — full kill-switch + textbook XP wrapping
Until now the 'gamification' feature flag did nothing: it had no row in
app_settings, the admin couldn't toggle it, awardXP/awardCoins ignored
it, and the CSS only hid three dashboard widgets — XP bars in textbooks
stayed visible regardless.

Phase 1 closes every hole.

Backend (source of truth):
  • migration 029 seeds feature_gamification_enabled=1
  • new isGamificationEnabled() helper in gamification/_shared.js with a
    30s cache + invalidateGamificationCache() for instant admin toggles
  • awardXP / awardCoins / updateStreak / unlockAchievement /
    checkAchievements all bail out when the flag is off
  • /api/gamification/* and /api/shop/* (user routes) return 404 when
    disabled; admin routes remain open so the switch itself is reachable
  • adminController.updateFeatures gains 'gamification' in the allow-list
    and invalidates the cache on flip

Frontend:
  • LS.isGamificationEnabled() (synchronous, populated by loadFeatures)
    so xp.js + applyCosmetics can bail without a round-trip
  • xp.js load/add/flush become no-ops when the flag is off
  • applyCosmetics skips the round-trip when off
  • CSS .no-gamification rule expanded to cover .hero-xp-badge, .po-xp,
    .xp-card, .xp-bar, #frames-section, and a universal [data-gamified]
    hook for future blocks

Textbooks (Variant 2 of the plan):
  • backend/scripts/wrap_textbook_xp.py — idempotent script that adds
    data-gamified to 167 XP tags across 63 textbook files (chapters +
    hubs, all subjects/grades). Single CSS rule now hides everything.

Verified end-to-end: with the flag off, awardXP/awardCoins write nothing;
flipping back restores normal behavior.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 19:43:24 +03:00
Maxim Dolgolyov 92a698e307 fix(alg9+geom9): экранирование KaTeX-команд в JS template literals 2026-05-29 10:46:32 +03:00
Maxim Dolgolyov 2b6ddef5c9 feat(alg9 ch4 final): Финал Главы 4 «Прогрессии» (5 боссов + ачивка) 2026-05-29 09:04:53 +03:00
Maxim Dolgolyov b66c688340 feat(alg9 ch4 wave3): §18 «Сумма геом.» + §19 «Бесконечно убывающая» 2026-05-29 09:01:45 +03:00
Maxim Dolgolyov 5ed21e4d2e feat(alg9 ch4 wave2): §16 «Сумма арифм.» + §17 «Геом. прогрессия» 2026-05-29 08:56:30 +03:00
Maxim Dolgolyov eb565081f6 feat(alg9 ch4 wave1): §14 «Числовая последовательность» + §15 «Арифм. прогрессия»
§14: 3 теор. карточки (определение, способы задания, монотонность) +
4 интерактива — конструктор последовательности (5 типов + точечная
диаграмма (n, a_n)), тренажёр вычисления a_n (6 задач), квикфайр
монотонности (3 кнопки), DnD-сортер «рекуррентно vs формула».

§15: 3 теор. карточки (определение и a_n = a_1 + (n-1)d, характеристическое
свойство, примеры) + 4 интерактива — конструктор арифм. прогрессии
(слайдеры a_1 и d + точки на прямой), двойной калькулятор a_n и d,
квикфайр «арифм. или нет» (6 заданий), тренажёр прогрессии (6 задач).

Добавлены CSS .wg/.tinp/.sliders/.score-display/.dnd-*/.drop-* и хелперы
makeCard, setupSorter, gcd, axes2D, plotFunc (по образцу ch1/ch2).
2026-05-29 08:51:52 +03:00
Maxim Dolgolyov a07e631e8e feat(alg9 phase0): skeleton + миграция учебника Алгебра 9
- 020_algebra_9_hub.sql: hub (slug 'algebra-9', indigo, 19 параграфов) + 4 главы
- algebra_9_hub.html: страница каталога с индиго-палитрой
- algebra_9_ch1..ch4.html: skeleton-страницы 4 глав
  * Глава 1 (amber): §1-§5 Рациональные выражения
  * Глава 2 (emerald): §6-§9 Функции
  * Глава 3 (violet): §10-§13 Дробно-рациональные уравнения и неравенства
  * Глава 4 (cyan): §14-§19 Прогрессии
- Все skeleton-файлы рабочие: переключение параграфов, theme toggle,
  search modal, sidebar, progress, XP. Stub-плейсхолдеры в buildPx().
- Наполнение параграфов запланировано на Phase 1+.
2026-05-29 07:56:14 +03:00