user-select: none обычно и так не даёт тексту попасть в буфер обмена, даже если div визуально подсвечивается при протягивании. Попробуй выделить соседний текст, скопировать и вставить куда-нибудь — «L» там не окажется. Если всё же попадает (бывает в старых браузерах), можно вынести букву в псевдоэлемент: .test::before { content: "L"; } и оставить div пустым. systemctl daemon-reload && systemctl restart rustdesk-hbbs, потом проверь через systemctl show -p Environment rustdesk-hbbs что ALWAYS_USE_RELAY=Y реально на месте. Если там всё ок а в логе по-прежнему N, глянь cat /proc/$(pidof hbbs)/environ | tr '\0' '\n' | grep ALWAYS на всякий. balance и ore, при добыче записывай результат «Случайного числа» в ore, а при продаже через компонент записи переменной прибавляй ore к balance. Кулдаун — сохраняй {{now}} в переменную last_mine и перед добычей проверяй разницу с текущим временем. resume=/dev/mapper/имя_vg-swap в командной строке ядра. Раз у тебя UKI, параметры зашиты в образ, так что пересобирай с ним. Ну и в initrd должен быть механизм resume: для dracut это либо модуль resume, либо systemd-hibernate-resume если initrd на systemd. Проверь через lsinitrd что он реально там есть и что LUKS/LVM разблокируются до того как initrd пытается читать swap. isDragging (он у тебя уже заготовлен), ставь true в OnMouseDown, false в OnMouseUp, а в OnMouseEnter и OnMouseExit первой строкой добавь if (isDragging) return;. Ну и если после этого всё равно не возвращается — проверь что в OnMouseUp ветка без drop зоны реально вызывает UpdateCardsPosition. font-size, font-weight, line-height, letter-spacing. Главная засада обычно в line-height: в Figma Auto берёт значение из метрик шрифта, а браузер по умолчанию ставит normal (~1.2), и текст плывёт. Пропиши все параметры явно как в макете и сравни, разница сильно уменьшится. sudo openvpn файл.ovpn, без sudo клиент не всегда может прописать нужные маршруты. После подключения проверь ip route show | grep tun — должен быть маршрут до 10.x.x.x через tun0. Если локально не заводится — используй AttackBox прямо в браузере, он работает без VPN. <script src="js/script.js">, а <link> на CSS отсутствует — браузер просто не видит стили. Добавь в <head> после стилей Slick: <link rel="stylesheet" href="css/style.css"> (укажи путь к своему файлу). const observer = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.src = e.target.dataset.src;
observer.unobserve(e.target);
}
});
}, { rootMargin: '200px' });
document.querySelectorAll('iframe[data-src]').forEach(el => observer.observe(el));content-visibility: auto с contain-intrinsic-size — браузер будет пропускать layout/paint за пределами экрана. business_connection отсутствует не только can_transfer_and_upgrade_gifts, но и can_change_gift_settings, can_convert_gifts_to_stars, can_transfer_stars — все права на управление подарками кроме просмотра. Это значит, что ваш клиент Telegram ещё не поддерживает эту группу прав — обновите приложение до последней версии и переподключите бота (убрать → добавить заново в бизнес-настройках). Если версия актуальная — фича просто ещё не раскатилась на ваш аккаунт, ждите обновления. lastPos1 = pos1 копирует ссылку на вектор, а не его значение. После физического цикла оба имени указывают на один объект с уже обновлённым x, и lerp интерполирует между двумя одинаковыми точками — по факту ничего не делает. Замени на lastPos1 = pos1.copy(), тогда интерполяция заработает как задумано. Если после этого останется мыльность от субпиксельного рендера — попробуй округлить координаты перед отрисовкой, но для плавной анимации это может добавить лёгкое дрожание. initData пустой потому, что бот открывает ссылку через обычную кнопку с типом url, а не web_app. Переключи на web_app (или MenuButtonWebApp, или deep link с startapp) — тогда и initData, и platform начнут приходить корректно. Для детекта среды без initData проверяй launch-параметры в location.hash — при запуске как Mini App туда попадают tgWebAppVersion и tgWebAppPlatform. findmnt /var. Если пусто — в /etc/fstab нет записи для /var или она с ошибкой, и ты просто видишь каталог /var из корневого подтома @. Добавь или исправь строку в fstab: устройство через UUID (узнаешь из blkid /dev/sdb4), опции те же, обязательно subvol=@var. После правки — sudo mount -a и ребут. .claude/settings.json или .claude/settings.local.json. Там может быть кастомная конфигурация statusLine, которая ломает вывод. Сравни с рабочим проектом — в нём этих файлов может не быть вовсе.~/.claude/projects/ — Claude Code хранит там проектные данные. Найди папку, соответствующую проблемному проекту, и попробуй её удалить (Claude Code пересоздаст при следующем запуске).gpt-oss-120. Это не Anthropic, а сторонний провайдер (OpenRouter или аналог). Для изоляции проблемы попробуй переключиться на Sonnet или Opus — если мусор пропадёт, значит дело в том, как сторонняя модель отдаёт стриминг, а не в конфигах.