Conchshell 2.6.0 (macOS + Linux)
RDP работает по-настоящему
RDP был заглушкой: connect всегда возвращал «не реализовано». Теперь это рабочий клиент на IronRDP — подключение через NLA, поток кадров, клавиатура, мышь, буфер обмена и перенос файлов. Проверено на живом Windows-хосте, а не на моках.
- Подключение: TCP → X.224 → TLS 1.3 → CredSSP/NTLM → MCS → лицензирование → capability exchange, около 3 секунд.
- Клавиатура: физические клавиши вместо
keyCode, поэтому левый и правый Ctrl больше не путаются, а numpad не сливается со стрелками. - Не-ASCII печатается символами, а не позициями клавиш. Скан-код называет позицию, и удалённый хост толкует её своей раскладкой: клавиша «ж» на английской раскладке сервера приезжает как
;. Синхронизировать раскладки — заведомо проигрышная игра, поэтому кириллица уходит Unicode-событиями, и раскладка на той стороне перестаёт иметь значение. Переключать язык в Windows не нужно. - Cmd работает как Ctrl. Cmd+C/V/X/A внутри сессии делают то, что вы от них ждёте. Cmd+Q, Cmd+W, Cmd+M и Cmd+H остаются локальными — из полноэкранной сессии всегда есть выход, плюс
Cmd+Shift+Escвозвращает клавиатуру принудительно. - Буфер обмена в обе стороны и перенос файлов Mac → Windows: копируете в Finder, вставляете в проводнике.
Проверка подлинности серверов
Раньше приложение не проверяло, с кем разговаривает: любой ключ SSH и любой сертификат RDP принимались молча. Соединение шифровалось, но подмена сервера была незаметна.
Теперь при первом подключении показывается отпечаток — в том же формате, что печатает ssh-keygen -lf, так что его можно сверить глазами. При изменении ключа появляется отдельное, более строгое предупреждение.
Чтобы это не превратилось в стену диалогов, ваш ~/.ssh/known_hosts импортируется автоматически. Не импортируются хешированные записи (имя в них необратимо), записи центров сертификации и хосты с противоречивыми ключами — ложная тревога обесценила бы саму тревогу.
Пароль и подпись ключом больше не отправляются непроверенному серверу: решение принимается до аутентификации.
Кириллица в локальном терминале
Приложение, запущенное из Finder, не получает от системы ни одной переменной локали, и оболочка работала в локали C — там кириллица не символы, а байты. Отсюда кракозябры при вставке. Теперь оболочке передаётся ваша локаль.
Прочее
- SFTP-подключение по ключу не могло работать в принципе: в разбор ключа передавался путь к файлу вместо его содержимого.
- В лог не попадали никакие предупреждения — фильтр по умолчанию пропускал только ошибки. Из-за этого объяснения отказов вроде «это папка, сожмите её сначала» писались в никуда.
- Добавлен CI: тесты, проверка типов, паритет локалей.
Тесты: Rust 453, фронтенд 874.