# RDP FIDO — что нового

Клиент и шлюз обновляются вместе: клиент предлагает новую версию при запуске,
шлюз обновляется из клиента после сессии, подтверждённой ключом (галочка
«Автоматически обновлять шлюз на этой машине»). Скачать:
[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)
(хост или клиент), [RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi),
[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi).
English: [CHANGELOG.en.md](CHANGELOG.en.md).

## 1.19.2 — 20.09.2026

- **Меню сеанса вернулось — и всё остальное, что потеряла 1.19.** 1.19.0 и
  1.19.1 были собраны из линии разработки, в которую не попали четыре более
  ранних выпуска, поэтому обновление до 1.19 молча убрало: меню в окне потока
  (Ctrl+Alt+Shift+M) и его горячие клавиши, панель у верхнего края в полном
  экране, Ctrl+Alt+Del на хост, исправления положения указателя, «разрешение
  хоста по моему экрану» и исправление шлюза, из-за которого подключение
  потока открывало RDP-порт. Всё это возвращено вместе со всем, что добавила
  1.19 (точная частота монитора, оверлей метрик, AV1 / 10 бит / HDR, Opus,
  реле, геймпад).
- **Обновите и шлюз.** Две линии заняли одни и те же два внутренних номера
  сообщений под разное. С клиентом 1.19.0–1.19.1 и шлюзом 1.18.1 подключение
  нажимало на хосте Ctrl+Alt+Del и раз в секунду просило сменить видеорежим.
  В 1.19.2 оба номера выведены из оборота; пока обе стороны не станут 1.19.2,
  поток работает с возможностями 1.18 (без AV1, 10 бит, HDR и точной частоты)
  — и ничего хуже.
- Выпуски теперь проверяются взглядом на само окно потока — тестовая таблица
  должна прийти неперевёрнутой и в цвете, меню должно открыться, — а скрипт
  публикации отказывается собирать из дерева, где нет чего-либо выпущенного
  раньше.

## 1.19.1 — 20.09.2026

- **FIDO Stream показывал чёрное окно.** Сессия подключалась, заголовок окна и
  оверлей сообщали нормальную частоту кадров, но сама картинка оставалась
  чёрной — на любой машине, с любым кодеком и настройками качества: вьювер
  отбрасывал прямоугольник с видео ещё до отрисовки. Исправлено; вместе с ним
  снова виден и удалённый указатель мыши. Меняется только клиент — шлюз ради
  этого обновлять не нужно.

## 1.19.0 — 16.09.2026

- **120 / 144 / 240 Гц.** Поток идёт с точной частотой вашего монитора
  (143,856 Гц так и остаются 143,856, а не 144): хост захватывает и кодирует в
  этом ритме по таймеру с субмиллисекундной точностью, а вьювер показывает
  кадр либо сразу после декодирования («Сразу»: минимальная задержка,
  разрешён разрыв), либо на следующем обновлении экрана («Плавно»: без
  разрывов и повторов). «Автоматически» выбирает «Плавно», когда частота
  потока совпадает с частотой монитора. Мышь передаётся событие за событием с
  её собственной частотой опроса (1000 Гц включительно); события, скопившиеся
  пока окно было занято, объединяются без добавления задержки. Программные
  кодеры ограничены 60 к/с.
- **Оверлей метрик и трасса.** Ctrl+Alt+O показывает, на что уходит каждая
  миллисекунда: захват, преобразование, кодирование, сеть и сборка,
  декодирование, ожидание обновления экрана, показ; битрейт, потери, доля FEC
  и восстановления, NACK, RTT, задержка в очереди, размер датаграммы, реле;
  частота и дрожание показа; оценка «клик → фотон» — клики и нажатия
  помечаются, и ищется первый кадр, захваченный хостом после их ввода (время
  отклика самого монитора не входит). Ctrl+Alt+T пишет CSV-трассу (строка на
  кадр со всеми отметками времени, строка в секунду со счётчиками канала,
  строка на событие) в `%LOCALAPPDATA%\RdpFidoClient\traces`; сессия может
  стартовать с включённым оверлеем или записью трассы.
- **AV1, 10 бит, 4:4:4 и HDR.** Новые настройки сессии «Кодек» (авто / H.264 /
  HEVC / AV1) и «Цвет» (авто / 8 бит / 10 бит / 4:4:4 / HDR). AV1 кодируется
  на NVENC (RTX 40) и на AV1-кодерах Intel Arc и AMD RDNA3, декодируется на
  NVDEC или аппаратном декодере. 10-битные HEVC/AV1 убирают полосы в
  градиентах; 4:4:4 сохраняет чёткость тонкого текста. При включённом HDR в
  Windows на хосте и HDR-мониторе у клиента рабочий стол дублируется в FP16,
  на видеокарте переводится в 10-битный PQ BT.2020 и показывается как HDR
  (на SDR-мониторе — с тон-мэппингом). Всё автоматически понижается до того,
  что умеют обе стороны; «Автоматически» берёт AV1 или HEVC, когда узкое
  место — канал, и H.264, когда — компьютеры.
- **Звук Opus.** Звук хоста передаётся Opus 128 кбит/с (режим restricted low
  delay, кадры 10 мс), микрофон — 48 кбит/с; потерянный пакет восстанавливается
  из встроенного FEC следующего. libopus 1.5.2 (BSD-3) собран внутрь
  исполняемых файлов; старые версии остаются на ADPCM.
- **Реле для симметричных NAT.** Когда напрямую не достучаться ни до одной
  стороны, поток идёт через ваше реле: `rdpfido-relay` для Linux-VPS
  (`src/relay`, `make install`, systemd-юнит) или `RdpFidoGate.exe relay serve`
  на Windows. Реле перечисляются в `gate.json` шлюза (`"streamRelays":
  [{"address": "relay.example.com:7443", "name": "eu-1"}]`); обе стороны
  пробуют их и берут ближайшее, дав прямым путям фору 1,5 с. Реле пересылает
  только сквозно зашифрованные датаграммы и ключей не имеет.
- **Настройка для WAN.** Контроль перегрузки масштабирует пороги задержки по
  базовому RTT (12 мс в локальной сети, до 50 мс через континенты), бюджет на
  восстановление растёт с RTT, FEC — на длинных путях. MTU discovery поднимает
  датаграмму с 1200 до 1472 байт, когда путь это выдерживает (меньше, но
  крупнее шардов), перепроверяя каждые 30 с и откатываясь при смене пути.
- Совместимо по протоколу с 1.15–1.18: старые версии игнорируют новые
  сообщения.

## 1.18.1 — 13.09.2026

- **Подключение FIDO Stream больше не открывает RDP-порт.** Авторизация потока
  заодно открывала разрешение на RDP, которым поток не пользуется; недожившее
  RDP-соединение могло удерживать его открытым, и клиент рисовал на плитке
  ложную тревогу «RDP открыт всем».
- **Разрешение хоста по вашему экрану** (выключено по умолчанию; галочка в
  параметрах сессии и пункт в меню сеанса): хост переключается в режим вашего
  монитора или в наибольший с теми же пропорциями и возвращает прежний по
  окончании сеанса.

## 1.18.0 — 16.09.2026

- **Геймпад в FIDO Stream.** Подключите XInput-геймпад (Xbox One/Series,
  Xbox 360, большинство геймпадов с переключателем «X») к клиенту: на хосте
  он появляется как контроллер Xbox 360, игра ничего не замечает, вибрация
  возвращается на ваш геймпад. До четырёх геймпадов на сессию. Как и
  клавиатура, геймпад управляет хостом только пока окно потока впереди.
- **На основе ViGEmBus.** Виртуальный контроллер — открытый драйвер ViGEmBus
  от Nefarius Software Solutions (лицензия BSD-3), тот же, на котором работают
  Sunshine, Apollo и DS4Windows. Проект архивирован в конце 2023 года; его
  последний выпуск (драйвер 1.21.442.0, подпись Microsoft/WHQL) ставится на
  текущие сборки Windows 10/11 x64 без тестового режима и с включённым HVCI.
  Пакет вшит в `RdpFidoGate.exe`: `setup` его устанавливает, шлюз, обновлённый
  на месте, ставит его при следующем запуске службы, а `uninstall` удаляет
  только драйвер, который поставил этот шлюз — ViGEmBus, принесённый другой
  программой, остаётся. `RdpFidoGate.exe gamepad status|install|remove`
  управляет им; `RdpFidoGate.exe stream gamepad-test` проверяет весь путь на
  хосте (подключение, XInput его видит, вибрация возвращается, отключение)
  без вьювера. Если драйвер поставить не удалось, шлюз и поток работают,
  просто геймпад на этом хосте ничего не делает.
- Оба установщика кладут рядом с программой `THIRD-PARTY-LICENSES.txt`
  (ViGEmBus, заголовки ViGEmClient, заголовки кодеков NVIDIA).
- `gate.json`, сохранённый с меткой порядка байтов UTF-8 (Блокнот, Windows
  PowerShell), больше не останавливает службу; номера шагов `setup` теперь
  видны в журнале Windows Installer.

## 1.17.2 — 12.09.2026

- **Указатель попадал мимо.** Агент хоста не учитывал DPI: при масштабе экрана
  больше 100 % абсолютные координаты мыши ложились на экран меньше
  захваченного; а при захваченной мыши вьювер ставил указатель хоста по
  размеру видео, а не хоста, и в уменьшенном потоке он не доезжал.

## 1.17.1 — 12.09.2026

- **Меню сеанса и горячие клавиши.** Ctrl+Alt+Shift+M открывает меню в окне
  потока: захват мыши, полный экран, баланс качества, Ctrl+Alt+Del,
  отключение. Горячие клавиши на трёх модификаторах, которые не занимает ни
  одна игра: +Z мышь, +X полный экран, +D Ctrl+Alt+Del, +Q отключиться.
  Ctrl+Alt+End шлёт Ctrl+Alt+Del, как mstsc. В полном экране у верхнего края
  выезжает панель.
- Окно потока было чёрным на машинах без видеокарты.

## 1.17.0 — 11.09.2026

- **Один файл на сторону.** Агент хоста FIDO Stream теперь встроен в
  `RdpFidoGate.exe`, окно потока — в `RdpFidoClient.exe`. Оба установщика и
  автообновление приносят всё, что нужно потоку; вручную больше ничего
  копировать не надо. Шлюз запускает себя командой `stream serve` в сеансе
  пользователя, клиент — командой `viewer` в дочернем процессе, поэтому
  падение декодера или драйвера закрывает только окно потока.
- На установленном хосте доступны команды диагностики
  `RdpFidoGate.exe stream encoders`, `stream encoders --bench`,
  `stream selftest` и `stream audio-devices`.
- Самообновление при открытом потоке: старый файл сначала переименовывается,
  потом копируется новый, поэтому обновление больше не срывается, пока идёт
  стрим.
- **Шлюз восстанавливается после зависшей службы брандмауэра Windows.** Если
  вызов в службу брандмауэра не возвращается, сторожевой поток завершает шлюз
  через 90 с, и диспетчер служб перезапускает его — вместо ответа «рабочий
  поток брандмауэра не ответил вовремя» на каждый запрос, пока кто-нибудь не
  заметит. Гранты, записанные из потока брандмауэра, истекают по расписанию,
  даже если вызывающая сторона перестала ждать; удаление правил не теряется.

## 1.16.1 — 11.09.2026

- HEVC декодируется на видеокарте безопасным путём: NVIDIA NVDEC на NVIDIA,
  аппаратный DXVA-декодер на Intel и AMD. Программное расширение HEVC от
  Microsoft не используется (оно падает), поэтому вьювер без подходящей
  видеокарты переходит на H.264, а не падает, и пишет причину в `client.log`.
- Декодер H.264 Media Foundation теперь тоже работает на видеокарте (DXVA).

## 1.16.0 — 10.09.2026

- **Кодер и декодер выбираются в сессии.** «Кодер (хост)»: Автоматически /
  NVIDIA NVENC (напрямую) / Аппаратный (любая видеокарта) / Программный
  (процессор); «Декодер»: Автоматически / Аппаратный (GPU) / Программный
  (CPU). NVENC работает напрямую через драйвер, аппаратный вариант — кодер
  любого производителя через Media Foundation (Quick Sync, AMF), программный —
  H.264 Microsoft.
- `encoders --bench` измеряет каждый бэкенд на синтетических кадрах без экрана
  и сети.
- Два исправления задержки: ожидание захвата экрана больше не блокирует поток
  кодера, а настройки низкой задержки кодера NVIDIA применяются там, где он их
  учитывает. Кодирование 2560×1600 — с 60 мс до 6,5 мс на кадр; задержка «из
  конца в конец» в локальной сети — с 380 мс до 25–45 мс.

## 1.15.0 — 10.09.2026

- **FIDO Stream** — второй режим подключения рядом с RDP для игр и другой
  работы, где важнее всего задержка «клик — фотон». Видео, звук и ввод идут
  по UDP: AES-256-GCM на ключах из ECDH, привязанного к билету, который шлюз
  выдаёт только после подтверждения ключом FIDO2; код Рида–Соломона (FEC)
  вместо ретрансляций; надёжный канал для ввода; контроль перегрузки.
- Хост: захват DXGI Desktop Duplication, аппаратное кодирование (NVENC /
  Quick Sync / AMF через Media Foundation) с путём пикселей D3D11 без копий,
  звук WASAPI, внедрение ввода скан-кодами. Вьювер: аппаратное декодирование,
  вывод D3D11 flip без вертикальной синхронизации, raw input, захват мыши
  (Ctrl+Alt+Home), полный экран (Ctrl+Alt+Enter), отключение (Ctrl+Alt+End).
- Один ползунок **«Баланс»** от «плохой канал» до «слабые компьютеры» с
  режимом «Авто»; звук в обе стороны, включая микрофон; хост сам дозванивается
  до клиента через большинство NAT по кандидатам адресов, переданным через
  HTTPS-канал шлюза. UDP 7441 открывается только для подтверждённого адреса и
  только на время сессии.

## 1.14.0 — 03.09.2026

- **Один объединённый установщик** `RdpFido-Setup.exe` задаёт единственный
  вопрос — это хост (к нему подключаются) или клиент (с него подключаются) — и
  ставит нужную половину. Без диалогов: `RdpFido-Setup.exe host|client`.
  Клиент остаётся пакетом «на пользователя» (без прав администратора), шлюз —
  «на машину» (служба).

## 1.13.0 — 01.09.2026

- Шлюз поставляется как MSI, `RdpFidoGate-Setup.msi`: включает удалённый
  рабочий стол с NLA, привязывает сертификат к порту 7440, регистрирует службу
  и показывает одноразовый код регистрации ключа на последней странице, на
  языке Windows. Тихо: `msiexec /i RdpFidoGate-Setup.msi /qn`.

## 1.12.x — 30.08.2026

- Подписанные лицензия и манифест обновлений, баннеры с картинками по выбору
  сервера с офлайн-ротацией, контроль порта RDP, неудачные вызовы шлюза
  записываются в `client.log`.
