fix(lab): значок «связанной симуляции» на карточках учебников не скрывался при выключенной лаборатории

В каталоге учебников (textbooks.html) у карточек есть кнопка .tb-lab-btn «открыть
связанную симуляцию» (openLabSim → /lab?sim=…). Это <button onclick>, а не <a href="/lab">,
поэтому kill-switch `[href="/lab"]` её не ловил, и значок-колба оставался при отключённой
«Лаборатории».

Фикс: добавил `.tb-lab-btn` в FEATURE_WIDGETS.lab → api.js скрывает её через инъекцию
при lab=false (работает и без ls.css). Плюс страховка в openLabSim: при lab=false не
открываем (тост «Лаборатория отключена»); админ — всегда (admin-override).

Verified vm-смоук на реальном api.js 4/4 (lab off → .tb-lab-btn скрыта; lab on → нет;
admin → ничего). node --check api.js + инлайн textbooks.html.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-23 23:36:11 +03:00
parent 8027d9fda0
commit 40df8893cc
2 changed files with 13 additions and 1 deletions
+4 -1
View File
@@ -866,7 +866,10 @@ const FEATURE_HREFS = {
матчит, поэтому прячем по СТАБИЛЬНОМУ id #hc-lab (аналогично pet/чтение). */
const FEATURE_WIDGETS = {
flashcards: ['#w-flashcard'],
lab: ['#hc-lab'],
// #hc-lab — hero-карточка дашборда; .tb-lab-btn — кнопка «открыть связанную
// симуляцию» на карточках каталога учебников (openLabSim → /lab?sim=…). Это
// <button onclick>, а не <a href="/lab">, поэтому [href="/lab"] её не ловит.
lab: ['#hc-lab', '.tb-lab-btn'],
pet: ['#hc-pet'],
textbooks: ['#hc-read'],
};