Repository navigation
Подготовить sensor к агентам и поправить фолбэки гироскопа - #1
Merged
Merged
Conversation
Keep GyroShine a single small file, but request motion permission from a user gesture, skip sensors off HTTPS and under reduced motion, fall back to a pointer, and remove listeners on stop. Add unit and Playwright tests, CI, a GitHub Pages demo workflow, and Cloud Agent setup. Co-authored-by: kellas <alex.step.kellas@gmail.com>
alexstep
marked this pull request as ready for review
October 7, 2026 21:07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Репозиторий подготовлен к работе облачных агентов. Версия не менялась (
0.0.0,"private": true), в npm ничего не публиковалось, вmainпуша не было.AGENTS.md: что делает GyroShine, структура, локальное демо, тесты и правила (без runtime-зависимостей, один маленькийsensors.js, публичный API не ломать)..cursor/environment.json:npm ciи Chromium для Playwright, на старте статический демо-сервер на порту 4173.GyroShine:DeviceOrientationEvent.requestPermission()вызывается синхронно изstart(), до любогоawait, и только из user gesture. Без жеста запрос не делается, приходит событиеpermissionneeded."prompt"(так отвечает текущий Chromium, если выбор не сделан) не считается отказом.prefers-reduced-motion: reduceоставляет нейтральные50.00/50.00и не вешает слушатели (respectReducedMotion: trueпо умолчанию).pointermoveдля мыши и пера, touch игнорируется.stop()снимаетdeviceorientation,pointermove, слушательRelativeOrientationSensor, интервал батареи и подписку Telegram. Повторныйstart()не копит слушатели. Зависший Sensor API обрывается по таймауту.requestPermissionчекбокс сенсоров выключен, пока его не нажмут. На десктопе (pointer: fine) он остаётся включённым, блики сразу следуют за мышью. Поправленforу подписи «CSS блики».node:test) и e2e Playwright с синтетическимdeviceorientation.mainстатика демо публикуется на GitHub Pages.Публичный контракт прежний:
GyroShine,start/stop/on/off, событиеchangeсо строкамиgammaPercentиbetaPercent. Добавлены опцияrespectReducedMotionи событиеpermissionneeded. В README исправлены имя опцииminBattery(в коде никогда не былоminBatteryLevel) и пример подключения: файл — ES-модуль, не классический script.Что проверено
npm test: 20 тестов, расчёт углов, CSS-строки, снятие слушателей, iOS без жеста, insecure context, reduced motion, низкий заряд, ошибка Sensor API.npm run lint.npm run test:e2e: 4 сценария в Chromium (наклон →--gyro-gamma-percent: 100.00, мышь →60.00,stop()больше не двигает переменные, reduced motion остаётся на50.00). Кнопка «Рандомная тема» меняетdata-theme.bash .cursor/install.shдважды подряд, оба раза завершились успешно.index.htmlс кодом 200.Ручной шаг для Pages: в настройках репозитория источник должен быть GitHub Actions. Пока выбран деплой из ветки, job
pagesпосле мержа вmainупадёт, а текущий сайт https://alexstep.github.io/sensor/ продолжит собираться по-старому.alexstep/alexstep
Это не дубль. У alexstep/alexstep описание пустое, в репозитории только профиль автора, и он ссылается сюда. Описание «Gyroscope css effects» стоит у alexstep/sensor.
Бэклог
other/ex0.htmlиother/ex1.htmlнаGyroShine: сейчас там свой слушательdeviceorientationбезstop(), без reduced motion и без фолбэка.deviceorientationи указатель одновременно: включать мышь, только если события ориентации молчат..d.tsдля публичного API без runtime-зависимости и без сборки.