Releases: vBACARAv/framesync
Releases · vBACARAv/framesync
Release list
FrameSync 0.2.1
Что изменилось
Патч-релиз по результатам сценарного аудита и живого тестирования синхронизации.
Производительность синхронизации
- Исправлена «растущая задержка»: при раздаче через
.torrentхост повторно слал весь файл-источник в каждом обновлении состояния комнаты, забивая туннель — пинг рос с ~3 до ~7 с, а перемотки и команды применялись с задержкой. Теперь тяжёлый payload передаётся гостю один раз (при входе и смене медиа), рутинные обновления идут «налегке». Пинг и отклик на перемотку вернулись в норму.
Корректность синхронизации
- Плавная коррекция скоростью (1.04 / 0.96) больше не «залипает» после жёсткой перемотки — гость не убегает вперёд.
- Позиции участников считаются по часам хоста, поэтому расхождение системных часов на машинах гостей больше не ломает статусы и счётчик синхронности.
Жизненный цикл хоста
- Хост может сменить фильм без пересоздания комнаты и нового invite-кода.
- Переоткрытие плеера хостом возобновляет воспроизведение с последней позиции, а не сбрасывает всех на начало.
- Закрытие плеера хостом ставит комнату на паузу на текущей позиции; повторное открытие продолжает с того же места.
Плеер и UX
- Понятная подсказка гостю, когда туннель сменился и нужен новый код.
- У хоста снимается «зависший» запрос паузы, если гость молча отключился.
- Громкость в гостевой панели ограничена 0–130%.
Проверки
- npm test
- npm run build
- npm run lint
- npm run build:portable:zip
- Живой тест хост+гость: старт, перемотки, паузы, длинное воспроизведение
Артефакты
- FrameSync-0.2.1-portable-win-x64.zip
- FrameSync-0.2.1-portable-win-x64.zip.sha256
FrameSync 0.2.0
Что изменилось
Крупное обновление синхронизации, плеера и стабильности комнат по результатам полного аудита.
Синхронизация
- Гость открывает mpv сразу на позиции хоста — без чёрного экрана и догоняющих перемоток.
- Перемотка хоста (в том числе по шкале в самом mpv) мгновенно применяется у всех гостей.
- Новая логика коррекции рассинхрона: подтверждение двумя замерами, защита от дёргания (cooldown, пауза на время буферизации, стоп-кран при перегрузке), небольшое отставание 1–5 с убирается незаметным изменением скорости 1.04/0.96 без перемоток.
- На паузе гости выравниваются на кадр хоста (±0.75 с).
- «Синхронизировать всех» теперь подтягивает любого гостя с рассинхроном больше 5 с; «К хосту» учитывает сетевую задержку.
- Гость больше не «застревает» после перезапуска приложения хоста.
Комната
- При закрытии комнаты хостом гости сразу видят «Хост завершил комнату» вместо минут переподключений.
- Keepalive-пинги: мёртвые соединения обрываются за 30 с, у каждого участника виден пинг.
- Туннель при падении перезапускается автоматически (новый инвайт-код сразу в интерфейсе), у гостя появилась кнопка «Переподключиться к комнате».
Плеер
- Современный рендер (vo=gpu) с аппаратным декодированием и автоматическим откатом на direct3d.
- У гостя собственная панель управления: громкость с процентами, mute, фуллскрин, индикатор прогресса без возможности перемотки.
- Меню по правой кнопке мыши: выбор аудиодорожки и субтитров списком (с пунктом «Выключены»).
- Пауза у гостя превращается в запрос паузы хосту (кнопка панели и пробел).
- Исправлен критический баг стриминга: чтение данных позади курсора больше не обрывает поток (раньше mpv гостя мог «улететь» в конец фильма). Плюс самовосстановление: если плеер всё же сломался, приложение само переоткрывает его на позиции хоста.
Интерфейс и диагностика
- Честные статусы: «Плеер закрыт» у участника, счётчик «N/M синхронно» у хоста вместо вечно-зелёной надписи.
- Расширенные логи: события комнаты (вход/выход/реконнект), минутные сводки позиций и дрейфа, информация о системе при старте, автоочистка логов старше 7 дней.
Проверки
- npm test
- npm run build
- npm run lint
- cargo test (libtorrent sidecar)
- npm run prepare:libtorrent:native
- npm run build:portable:zip
- Живой тест хост+гость: старт, перемотки, паузы, длинное воспроизведение
Артефакты
- FrameSync-0.2.0-portable-win-x64.zip
- FrameSync-0.2.0-portable-win-x64.zip.sha256
FrameSync 0.1.6
Что изменилось
- В настройках теперь отображается версия приложения.
- Исправлено мигание статуса гостя между «готов к просмотру» и «не готов» во время долгой паузы.
- Ручная кнопка «Открыть mpv» у гостя больше не блокируется, если поток уже доступен, но готовность торрента временно определяется спорно.
- Улучшена обработка libtorrent: завершенный файл больше не считается готовым, если его нет на диске; при такой ситуации запускается перепроверка раздачи.
- Уменьшена вероятность ложного статуса «синхронно», когда mpv фактически не смог открыть файл из-за проблемы с локальным кэшем.
Проверки
- npm test
- npm run build
- npm run lint
- npm run prepare:libtorrent:native
- npm run build:portable:zip
Артефакты
- FrameSync-0.1.6-portable-win-x64.zip
- FrameSync-0.1.6-portable-win-x64.zip.sha256
FrameSync 0.1.5
Что изменилось
- Улучшена синхронизация комнаты: состояние хоста используется как начальный снимок, а команды воспроизведения хоста управляют гостями без ложных повторных синхронизаций.
- Добавлен старт просмотра через паузу: первый запуск открывает плеер на паузе, после чего обычное снятие с паузы запускает участников синхронно.
- Улучшено позднее подключение гостей: новый участник получает позицию хоста, готовит локальный поток и может вручную открыть mpv на нужной позиции.
- Добавлено переподключение гостя при обрыве соединения без остановки mpv и загрузки торрента.
- Исправлена идентификация участников с одинаковым именем пользователя: статусы и запросы паузы теперь привязаны к идентификатору участника.
- Улучшены статусы участников: активное воспроизведение больше не должно мигать как «не готов».
- Добавлена кнопка добавления правил брандмауэра Windows для FrameSync, libtorrent и туннеля Cloudflare.
- Улучшена диагностика падений libtorrent: код завершения Windows, человекочитаемая причина и хвост стандартного потока ошибок.
- Исправлено имя пользователя по умолчанию: теперь используется
User.
Проверки
npm testnpm run buildnpm run lintnpm run build:portable:zip
Контрольная сумма
FrameSync-0.1.5-portable-win-x64.zip
1c6de7e79a98d5e9df83a4be4de9057111a6ef9a771fdcf6a93196df35035440
FrameSync 0.1.4
Что изменилось
- Ускорена подготовка просмотра торрентов: начальный диапазон фильма получает более точные приоритеты и последовательные сроки загрузки ближайших частей.
- Расширено срочное окно загрузки в libtorrent, чтобы непрерывный буфер у начала фильма набирался быстрее и не зависал на отдельных ранних пропусках.
- Сохранен порядок планирования, при котором стартовые приоритеты применяются последними и не затираются фоновой загрузкой.
- Добавлены тесты на порядок применения приоритетов и сроков загрузки.
Проверки
cargo testnpm testnpm run lintnpm run buildnpm run build:portable:zip
FrameSync 0.1.3
Что изменилось
- Проведен архитектурный рефакторинг без изменения стабильной ветки 0.1.2.
- Выделены отдельные модули для обновлений, mpv, комнат, туннелей и начальной загрузки интерфейса.
- Стабилизирован опрос состояния плеера и работа локальной torrent/mpv-точки у гостя.
- Добавлена проверка релиза перед публикацией: статический анализ, тесты и сборка для публикации.
- Ускорен резервный сценарий туннеля: localhost.run больше не задерживает создание комнаты слишком долго перед переходом на туннель Cloudflare.
Проверки
npm testnpm run lintnpm run build
FrameSync 0.1.2
Что изменилось
- Сохранено стабильное поведение 0.1.1: после полной загрузки фильм продолжает отдаваться через локальную HTTP-точку без перезапуска mpv.
- Добавлена упорядоченная синхронизация воспроизведения в комнате: номер события, эпоха медиа и ключ источника защищают гостей от устаревших команд.
- Улучшено переподключение гостей: повторный вход с тем же стабильным идентификатором больше не создает дубль участника.
- Поведение гостей отделено от состояния полной загрузки у хоста: переход хоста к полностью скачанному файлу не должен перезапускать плееры гостей.
- Часть логики вынесена из крупных модулей в отдельные контроллеры, хуки и общие контракты.
Проверки
npm testnpm run lintnpm run build
FrameSync 0.1.1
Что изменилось
- Добавлен стартовый экран с выбором роли: хост или гость.
- Разделен интерфейс для хоста и гостя: каждая роль видит только нужные действия.
- Добавлен мягкий звуковой сигнал, когда фильм готов к запуску после начальной буферизации.
- Улучшена понятность базового сценария подключения к комнате.
Проверки
npm testnpm run build
FrameSync 0.1.0
Что изменилось
- Первый публичный релиз FrameSync для Windows.
- Добавлена переносимая сборка приложения.
- Доступны базовые сценарии совместного просмотра: создание комнаты, подключение гостя и запуск локального плеера.
Примечание
Это ранняя тестовая версия. Следующие релизы улучшают стабильность синхронизации, загрузку торрентов и диагностику.