This commit is contained in:
2026-10-17 18:14:31 +07:00
parent 1c42ae2a75
commit 701bca234e
31 changed files with 9774 additions and 21 deletions
+62 -10
View File
@@ -1,20 +1,21 @@
# Задачи приложения площадки
Все задачи имеют статус TODO; выполнение ещё не начато. План и общие ограничения:
SCREEN-001 имеет статус IN_PROGRESS; остальные задачи — TODO. План и общие ограничения:
[PLAN.md](PLAN.md). Идентификаторы независимы от ED-* в корневом списке.
Обновлять статус и результат здесь; завершённые записи переносить в
`COMPLETED_TASKS.md` в этом каталоге после проверки. Коммиты и push не выполнять.
## SCREEN-001 — Проверить основу Electron на macOS, Windows и Linux
- Статус: `TODO`
- Статус: `IN_PROGRESS`
- Зависимости: нет; первая задача.
- Цель: подтвердить выбор технологии на всех шести вариантах ОС/архитектуры
из PLAN.md до переноса функций проекта. Все задачи приложения учитывают эту
матрицу; Linux проверяется на Ubuntu 24.04 LTS и Debian 13.
- Объём: минимальный Electron + Vue + TypeScript + Vite; пульт и отдельное окно
показа; выбор дисплея; синтетические локальные аудио/видео; IPC start/pause/stop
и seek; безопасный preload и локальная выдача медиа с Range. Подготовить сборки
и seek; безопасный preload и локальная выдача медиа с Range; техническое
подключение браузера телефона по LAN с сопряжением и отправкой команды. Подготовить сборки
для всех шести вариантов, инструкцию получения тестовых медиа и аппаратной
проверки. Бинарные тестовые файлы не коммитить.
- Готовность: запуск на всех шести вариантах; пульт остаётся на основном экране,
@@ -27,10 +28,39 @@
звук/кадр и отключённая сеть. Проверить кабель/USB и HDMI. Владелец выполняет
аппаратные проверки по инструкции агента и передаёт результаты.
- Не входит: сервер, авторизация, скачивание, полный пульт, публикация.
- Следующий шаг: прочитать frontend-стандарт, создать минимальный проект с учётом
всей матрицы и подготовить сборки/инструкцию. Доступность всех шести вариантов
подтверждена владельцем; фактические конфигурации записать при проверке.
Непройденные аппаратные проверки явно оставить открытыми.
- Результат программного этапа (17.10.2026): Electron + Vue/TypeScript/Vite,
два изолированных окна, выбор внешнего дисплея, локальный протокол с Range,
синтетические WAV/H.264+AAC, start/pause/stop/seek, подтверждённые статусы и
отдельные замеры аудио/видео и компьютера/телефона. LAN включается явно:
код + подтверждение на компьютере, HttpOnly-сеанс, отзыв при отключении.
Полные игровые функции и сервер не переносились.
Подготовлены четыре финальных архива Linux/Windows x64/ARM64 в release/ и
SHA256SUMS; содержимое app.asar всех четырёх сверено с проверенным кодом,
медиа присутствуют, тестовые модули исключены из поставки. Linux x64-бинарник
отдельно запускается из упакованного каталога; UI/preload и Range — PASS.
macOS x64/ARM64 не собраны здесь: нужны Mac или подготовленный ручной CI workflow.
- Проверка: frontend-стандарт прочитан; ручное ревью нового кода выполнено,
используются Naive UI, типизированный IPC, scoped CSS и палитра проекта.
type-check, lint, lint:css, build и 5 тестов — PASS. GUI smoke — PASS:
фактический запуск/пауза/стоп/seek медиа, Range 206/100 байт, запрет IPC из окна
показа, сопряжение через браузерный UI, оба пульта, отзыв и открытие окна без
автоповтора. Это синтетический дисплей и браузер Electron, не проектор/телефон.
Проверено, что превышение лимита WebSocket закрывает соединение, не сервер.
В sandbox LAN-тесту недоступен bind; PASS получен вне sandbox с временным портом.
Headless в этой среде зависал/завершался SIGSEGV; GUI прошёл с тестовыми
--no-sandbox --mute-audio --disable-gpu. В обычном запуске этих флагов нет.
- Среда smoke: Manjaro Linux x86_64, Intel Core Ultra 7 255H, около 32 ГБ RAM;
Node 26.8.1, Electron 42.11.15. Программные единичные замеры не считаются
аппаратной приёмкой или подтверждением p95 ≤150 мс.
- Ограничения: npm audit --omit=dev — 0 уязвимостей; полный audit — 20 в цепочках
инструментов разработки (8 moderate, 12 high). Дедупликация стенда хранит последние
4096 команд; долговременная семантика — SCREEN-004. HTTP только в доверенной сети.
- Следующий шаг: получить аппаратные результаты владельца по
docs/SCREEN-001_ACCEPTANCE.md на всех шести вариантах (Linux — на обоих
дистрибутивах), включая реальные iPhone/Safari и Android/Chrome, проектор,
физический звук/кадр и 30 запусков для каждого формата/аудиовыхода. macOS-сборки
подготовить на Mac или ручным workflow builds.yml. До результатов всей матрицы
задача остаётся IN_PROGRESS, SCREEN-002 не начинается.
## SCREEN-002 — Выдать версионированный пакет показа
@@ -113,17 +143,18 @@
- Готовность: готовая игра открывается после перезапуска офлайн; секреты хранятся
средствами ОС, не в пакете; истечение сессии не обрывает уже подготовленный
локальный показ; обновления активируются явно. Результаты имеют время снимка.
Возврат сети не повторяет старые команды; телефон не перехватывает desktop-показ.
Возврат сети не повторяет старые команды; серверные команды не перехватывают desktop-показ.
- Проверка: сценарии offline/reconnect/истёкшей сессии/обновления игры; проверки
затронутых репозиториев; существующий браузерный экран продолжает работать.
- Не входит: полноценная офлайн-игра и удалённое управление desktop с телефона.
- Не входит: полноценная офлайн-игра и управление desktop через интернет.
Телефон по LAN реализуется в SCREEN-009; сайт не перехватывает локальное управление.
- Следующий шаг: сверить auth flow и модель сессий; зафиксировать правила
локального владения показом и отображения статуса на сервере.
## SCREEN-007 — Устойчивость на площадке
- Статус: `TODO`
- Зависимости: SCREEN-005, SCREEN-006.
- Зависимости: SCREEN-005, SCREEN-006, SCREEN-009.
- Цель: переживать типовые сбои без потери материалов и случайного показа пульта.
- Объём: отключение/возврат дисплея, смена разрешения и fullscreen, проверка
аудиовыхода каждой ОС, предотвращение сна во время показа, восстановление окон и
@@ -160,3 +191,24 @@
- Следующий шаг: выбрать минимальный инструмент упаковки для всей матрицы,
проверить среду сборки и наличие сертификатов, собрать артефакты и подготовить
инструкции для аппаратной приёмки.
## SCREEN-009 — Полный пульт телефона по локальной сети
- Статус: `TODO`
- Зависимость: SCREEN-005; использовать техническую основу SCREEN-001.
- Цель: управлять показом с компьютера и телефона одновременно без интернета.
- Объём: общий Vue-пульт и типы команд внутри screen, HTTP и WebSocket на выбранном
IPv4-интерфейсе; код сопряжения и подтверждение на компьютере, отзыв сеансов;
все режимы, шаги, таймер, музыка, громкость и перемотка. Загрузка игры и дисплей —
только на компьютере. Доверенная Wi-Fi/LAN или точка доступа; HTTP без шифрования.
- Готовность: основной процесс последовательно применяет команды обоих пультов,
рассылает актуальное состояние; повтор команды не применяется дважды. Потеря
связи блокирует телефон, но не показ; переподключение не повторяет команды.
Доступ без сопряжения запрещён; отключение пульта отзывает сеансы.
- Проверка: тесты валидации, сопряжения, отзыва, повторных/одновременных команд и
восстановления; type-check, lint, lint:css, build; Safari iPhone и Chrome Android,
блокировка телефона, потеря Wi-Fi, работа без интернета. Задержки телефона отдельно.
- Не входит: публичная сеть площадки, сертификаты, управление через интернет,
скачивание пакетов и настройка дисплеев с телефона.
- Следующий шаг: после SCREEN-005 подключить полный интерфейс к локальному
контроллеру через общий транспортный контракт и пройти мобильную приёмку.