История изменений
Все версии, от новых к старым. Номера совпадают с тем, что приложение показывает в настройках.
2.16.0
Удалённый рабочий стол
- Кнопка «Подключить» в списке подключений наконец открывает RDP и VNC. Раньше она уводила соединение по SSH на порт рабочего стола, сервер сбрасывал его, и подключение падало с «Connection reset by peer» — при том что то же самое подключение из окна настроек работало.
- Пока идёт подключение, на экране написано «Подключение», а не «Рабочий стол отключён». Прежняя надпись появлялась сразу после нажатия и висела всё рукопожатие, из-за чего кнопку «Переподключиться» жали ещё раз и открывали второе соединение поверх первого.
- «По размеру окна» действительно означает размер окна. Раньше этот выбор превращался в 1024×768 независимо ни от чего, и рабочий стол показывался в рамке из серых полей.
Редактор удалённых файлов
- Двойной щелчок открывает файл в той программе, которая выбрана в настройках. Файл без расширения — например ключ id_ed25519 — больше не вызывает системный вопрос «чем открыть».
- Правки сохраняются на сервер из ЛЮБОГО редактора. Раньше так умел только VS Code, а всякая другая программа получала отдельную копию: человек сохранял файл, видел, что сохранилось, и не знал, что на сервер ничего не уехало.
- При первом открытии файла приложение один раз спрашивает, чем открывать. Не выбрали — работает встроенный редактор.
- Копии удалённых файлов больше не остаются в домашнем каталоге навсегда: они живут во временном каталоге только на время правки и убираются за собой.
Перенос с других клиентов
- Серверы можно перенести из Bitvise: приложение читает файлы профилей .tlp и показывает список до того, как что-то записать. Переносится адрес — хост, порт, имя пользователя; пароли и ключи в профиле зашифрованы, поэтому вход задаётся заново.
- Дубликаты и профили без имени пользователя помечаются и по умолчанию не отмечены — вернуть галочку можно, но это осознанное решение.
Подключения и папки
- Подключение можно создать прямо в папке, а сервер — перетащить в другую папку; раньше перетаскивание не срабатывало.
- Серверы, которые спрашивают пароль в диалоге входа (keyboard-interactive), больше не требуют вводить его руками — подходит пароль, сохранённый в подключении.
- Поле порта снова можно стереть и набрать заново. И оно не остаётся пустым, когда диалог открывают в следующий раз.
Мелочи, которые мешали
- График сети показывает настоящий трафик: шкала подстраивается под него, а не стоит на фиксированном пределе, рядом с которым любое реальное значение выглядело нулём.
- Раскрытый раздел «Дополнительно» в окне подключения больше не прокручивается в пустоту.
- Действующая лицензия больше не может быть отвергнута из-за случайной ошибки чтения файла: такая ошибка теперь не приравнивается к её отсутствию.
Установка на Windows
- При установке можно выбрать, ставить приложение только себе или на весь компьютер, в Program Files. Раньше выбора не было.
2.15.1
Исправление багов и ошибок
- Мелкие исправления и улучшения стабильности.
2.15.0
Ключи SSH стали списком
- Ключ больше не нужно набирать путём на каждое подключение: приложение находит ключи в ~/.ssh и предлагает выбрать из списка.
- В настройках появился раздел «Ключи»: своя подпись вместо имени файла, отпечаток, алгоритм и сколько подключений ключом пользуются.
- Ключ можно положить в хранилище — тогда он поедет на другие устройства и на телефон, где каталога ~/.ssh нет вовсе. Это отдельный выбор, а не умолчание: решать, попадёт ли закрытый ключ в папку, которая синхронизируется, вправе только владелец.
- Существующие подключения можно привязать к ключу одним нажатием. Путь при этом остаётся запасным, и ни одно работающее подключение не ломается.
Парольная фраза спрашивается при подключении
- Зашифрованный ключ больше не требует хранить фразу заранее: её спросят в момент подключения, с галочкой «Запомнить», по умолчанию снятой.
- Запомненная фраза хранится у ключа, а не у каждого подключения отдельно: один ключ на десять серверов — одна фраза, а не десять копий.
- Неверная фраза больше не уводит в бесконечный круг вопросов и распознаётся точнее: сломанный ключ теперь не выдаётся за неверную фразу.
Удалённый рабочий стол
- Вставка из буфера в RDP заработала как надо: файлы и текст переносятся сразу, без всплывающей кнопки, которую приходилось нажимать.
- Появилась «вставка набором» (Cmd/Ctrl+Shift+V): текст печатается в сессию как с клавиатуры, минуя буфер удалённой стороны.
- Видно, что вставка пошла, а повторные нажатия больше не переносят файл по нескольку раз.
- Обои рабочего стола на той стороне не передаются — сессия стала легче.
Обновления
- Окно обновления показывает, что изменилось, вместо ссылки на сайт.
- Кнопка обновления и запрос полного кадра заработали — раньше они не делали ничего.
Исправления
- Зашифрованный ключ PuTTY при импорте больше не ложится на диск расшифрованным.
- Испорченный файл .ppk больше не роняет приложение.
- Хранилище можно отпереть из настроек — раньше запирание было дорогой в один конец.
- Диалоги встают по центру; кнопки в окне подключения больше не наезжают друг на друга.
- Ключи создаются сразу с закрытыми правами, без промежутка, в котором файл читался всеми.
2.14.0
Conchshell на Android
- Conchshell выходит на Android: подключения, терминал, файлы, монитор и удалённый рабочий стол — то же приложение, что на компьютере, с экранами под телефон. APK раздаётся с сайта.
- Мастер-пароль не спрашивают при каждом запуске: ключ хранилища лежит в системном Keystore. На устройстве без клавиатуры это разница между клиентом, которым пользуются, и клиентом, который каждый раз просит пароль.
- Хранилище не уезжает ни в облачную резервную копию, ни через мастер переноса «телефон → телефон»: ни файл хранилища, ни отпечатки серверов, ни список подключений новый аппарат не получает.
Синхронизация напрямую
- Связанные устройства обмениваются хранилищем напрямую по вашей сети, пока приложение открыто. Общая папка для этого больше не нужна — телефону она и не была доступна.
- Лицензия приезжает на второе устройство вместе с хранилищем: вводить её отдельно не нужно, и об этом говорится вслух.
- Компьютер научился присоединяться к хранилищу по коду с телефона. Показывать свой код телефон умел всегда, а принять его на компьютере было нечем — при том, что подсказка под кнопкой это обещала.
Свои экраны на телефоне
- «Новое подключение» и «Настройки» перестали быть десктопными окнами, втиснутыми в ширину телефона: теперь это полноэкранные листы. Настройки к тому же открываются на свежей установке — раньше дверь была заперта, пока что-нибудь не подключено, а ключ лицензии вводится именно там.
- Ряд клавиш терминала не пропадает под клавиатурой. Ctrl, Esc, Tab и стрелки нужны ровно тогда, когда набираешь, — и исчезали ровно тогда.
- Кнопки, поля и строки списков выросли до размера пальца, главная кнопка диалогов не уходит под системную панель, а системная «назад» поднимает на уровень выше, а не закрывает приложение.
Окно подключения и настройки
- Обычное подключение — один экран вместо четырёх вкладок: три поля, все восемь протоколов в один ряд, Enter подключает. Редкие настройки свёрнуты и подписаны текущим значением — «Прокси: напрямую», а не просто «Прокси».
- Правку можно сохранить, не подключаясь. Раньше запись писалась только после удачного подключения, и хост с ошибкой в адресе исправить было нельзя: сохранению мешал тот самый адрес.
- Разделы настроек стали списком слева вместо полосы вкладок со стрелками прокрутки; «Устройства» и «Расхождения» — свои разделы, а число нерешённых расхождений видно прямо в списке.
- На первом экране предлагаются хосты из ~/.ssh/config — те, которых у вас ещё нет. Раньше это лежало в «Настройки → Дополнительно» и находилось теми, кто уже знал, что искать.
Лицензия и покупка
- Ключ можно ввести коротким кодом активации из двенадцати символов, а не только ключом на 250 знаков: набрать его с телефона на ноутбук наконец реально. Длинный ключ работает по-прежнему и без сети.
- Серая надпись «conchshell.app» стала кнопкой «Купить лицензию», которая открывает страницу покупки на языке интерфейса.
- После обновления один раз показывается, что изменилось, а само окно обновления заговорило на языке интерфейса — из четырнадцати переведённых строк читались ровно две. В меню появился пункт «Проверить обновления»: автопроверку можно выключить, и после этого проверить было нечем.
Сообщения на вашем языке
- Отказы, которые ядро приложения присылает при связывании устройств и синхронизации, переводятся. Русский интерфейс показывал «Connection timed out after 3 seconds», а иногда и служебную метку вместо текста.
- Отказ вашей же системы больше не выдаётся за проблему с сетью: связывание телефона с компьютером падало с «оба устройства должны быть в одной сети», хотя они в ней были.
Безопасность
- Отозвать украденное устройство можно и без действующей лицензии. Раздача хранилища связанным устройствам лицензии не спрашивала, а кнопка «Отозвать» отвечала отказом — то есть платная граница стояла ровно наоборот.
- Отозванное устройство больше не возвращается переустановкой приложения: отзыв искали по идентификатору, который устройство сообщает о себе само, а при чистой установке он новый. Теперь проверка идёт по ключу, который устройство доказывает подписью.
- Код восстановления больше не выдаётся по одному факту «хранилище открыто» — нужен действующий пароль или предыдущий код. По умолчанию хранилище открывается системной связкой молча, и постоянный второй ключ к нему выдавался без единого нажатия.
- Одна неудачная запись на диск больше не выключает синхронизацию навсегда, а удаление пароля больше не проигрывает слияние из-за переполнения счётчика: удалённый пароль оставался жив на всех остальных устройствах, а локально удаление выглядело успешным.
Исправления
- Перетаскивание папки первого уровня на «Все подключения» удаляло всё, что в ней лежало, — подключения, вложенные папки и их пароли из хранилища, — и сообщало об успехе.
- «Удалённый хост подменил ваш буфер обмена» больше не появляется на каждое копирование: `yy` в vim по SSH — та же последовательность байтов, что и подмена.
- Локальная вкладка терминала открывается на Windows: оболочка выбиралась одинаково для всех систем, и Windows пытался запустить /bin/sh.
- Список шрифтов редактора перестал быть терминальным — на телефоне в поле стояла обрезанная строка и не был выбран ни один пункт; подсветку парных скобок стало можно выключить; а кнопка «Открыть во внешней программе» на Windows и Linux больше не остаётся заблокированной, пока открыт редактор.
- Экран «что уходит» показывал нули в счётчиках — ровно в тех полях, ради которых он и существует.
2.13.0
Список подключений переделан
- В шапке панели — общее число подключений, у каждой папки своё. Свёрнутая папка теперь остаётся свёрнутой: раньше она раскрывалась обратно при первом же клике по любому подключению.
- У строки появилась точка состояния и адрес справа: для SSH — сам адрес, для остального — протокол и короткая примета машины, «ftps · nas» или «rdp · .46». Один и тот же хост может быть тремя строками с одинаковым именем, и различает их именно протокол.
- Выбранная строка показана тремя способами сразу — подложкой, планкой слева и насыщенностью шрифта. Наведение больше не красит строку так же, как выбор: раньше под курсором список показывал две выбранные строки.
- Кнопки «Подключение» и «Быстрый вход» подписаны, а в узкой панели вторая сжимается до значка. Панель тянется до 12% ширины окна, и никакая подпись туда не помещается.
- Состояние подключения показывается настоящее. Раньше панель знала только «вкладка есть», поэтому «подключаемся» и «подключено» выглядели одинаково, а второе окно к тому же серверу гасило первое при закрытии.
Экран хостов на телефоне
- Свой список вместо десктопной панели: крупные строки под палец, кольцо состояния, «логин@адрес» под именем, значок протокола справа.
- Папки стали плоскими разделами со счётчиком. Раскрытие требует второго значения у касания, а строка здесь значит ровно одно — подключиться.
- Один тап подключает, долгое нажатие открывает правку, дублирование и удаление.
Исправления
- Фоновое изображение терминала теперь применяется к уже открытым вкладкам. Раньше оно доезжало только до вкладок, созданных после сохранения, — то есть до удалённых, которые пересоздаются при каждом подключении, и никогда до локальной оболочки, живущей весь сеанс.
- Слишком большая картинка больше не теряется молча: раньше она не помещалась в хранилище и уносила с собой весь остальной блок внешнего вида, ничего об этом не сообщая. Теперь изображение ужимается, а отказ виден.
- Межстрочный интервал и расстояние между символами применяются сразу, а не после перезапуска.
- Файл, брошенный на терминал, вставляет свой путь. Раньше терминал не принимал перетаскивание вовсе, а на экранах Retina промах мимо цели отправлял файл в панель файлов под терминалом — вместо вставки пути начиналась загрузка на сервер.
- Имя приложения видно в полноэкранном режиме: там системная строка заголовка скрыта, и названия не было нигде.
- «О программе» открывает экран приложения со ссылками на сайт, политику конфиденциальности и список сторонних лицензий, а не системную панель. На Windows и Linux этого пункта не было вовсе.
- Копия подключения больше не теряет настройки. Дубликат FTPS-хоста выглядел неотличимо от исходника, но подключался без TLS — пароль уходил по сети открытым текстом. Вместе с этим терялись пароль VNC, домен и разрешение RDP.
- Перетаскивание папки с вложенными папками больше не теряет их. Вложенные оставались в хранилище с несуществующим родителем и пропадали из приложения безвозвратно.
- Длинный адрес больше не съедает имя подключения в узкой панели.
- Изменение настроек внешнего вида не ломает фоновые вкладки. Прежде оно ужимало их до примерно 10×5 знаков и сообщало этот размер удалённой оболочке: запущенный там htop или vim перерисовывался в нечитаемый столбик.
Безопасность
- Закрыта возможность выполнить команду через имя файла. Файл, в имени которого записаны управляющие последовательности терминала, при перетаскивании на терминал мог выполнить произвольную команду — без единого нажатия Enter, локально или на сервере в открытой сессии. Такое имя заводится обычными средствами и приезжает в архиве или на флешке. Теперь управляющие символы вырезаются из пути перед вставкой.
2.12.0
Синхронизация подключений между машинами
- Подключения синхронизируются через папку, которую вы и так синхронизируете сами — iCloud Drive, Dropbox, рабочую копию git, примонтированный WebDAV. Приложение кладёт туда один зашифрованный файл и читает то, что положили другие ваши машины. Сервера-посредника нет, нам ничего не отправляется.
- Второй компьютер присоединяется к уже существующему хранилищу: укажите ту же папку и откройте мастер-паролем. Раньше на второй машине оставалось создать новое — и оно затирало общую папку пустой копией, а облачный клиент разносил это удаление на все устройства.
- Если две машины изменили одно подключение или одна удалила то, что другая правила, появляется список «Требуют вашего решения». Проигравшая копия сохраняется до вашего ответа. Автоматика здесь вредит в обе стороны: в одну — возвращает пароль, который вы удалили как скомпрометированный, в другую — молча теряет тот, что вы считаете сохранённым.
- Проход, в котором ничего не изменилось, ничего и не пишет: приложение не подкидывает облаку новый файл каждые несколько минут просто потому, что оно запущено.
Кто имеет право писать в ваше хранилище
- В «Безопасности» появился список машин, которые касались хранилища, с кнопками «Это моё» и «Больше не доверять». Изменения незнакомого устройства не принимаются, пока вы его не подтвердите — и подтверждать нужно на каждой своей машине отдельно.
- Подтверждение принимается локально именно потому, что решение, едущее внутри файла, мог бы выдать себе любой, у кого есть ключ. Без этого «отозвать устройство» не значило бы ничего: потерянный ноутбук по-прежнему держит ключ.
- Приложение запоминает, до какого состояния хранилища дошло, и отказывается принимать подсунутую старую копию. Прошлогодний файл проходит все проверки — он честно подписан и зашифрован, — и иначе вернул бы вам сменённый пароль, удалённое подключение или отозванное устройство.
Подключение телефона к хранилищу
- На компьютере — «Связать устройство» и код на экране, на телефоне — камера. Копия хранилища идёт напрямую между устройствами по локальной сети.
- Мастер-пароль по коду не передаётся. Телефон получает собственный ключ, который открывает только это хранилище и который можно потом убрать, не трогая доступ остальных устройств: фотография экрана не становится ключом ко всему навсегда.
- Телефон получает копию на момент связывания. Продолжать синхронизироваться он пока не умеет — для этого нужна папка, видимая обоим устройствам, а у iOS её нет.
Conchshell на iPhone
- Приложение собирается и работает на iPhone, со своей иконкой: команды, интерактивная оболочка, файлы по SFTP, мониторинг и удалённый рабочий стол.
- Раскладка сделана под телефон, а не сжата с десктопа: по одному разделу за раз — Подключения, Терминал, Файлы, Монитор, Настройки — и ряд клавиш над клавиатурой с тем, чего на iOS-клавиатуре нет: Ctrl, Esc, Tab, стрелки и сочетания, которые ждёт readline.
- Удалённый рабочий стол занимает весь экран и управляется как трекпадом: курсор нарисован и остаётся там, где вы его оставили, один палец — мышь, два — панорама и масштаб. Пальцем в сорок точек шириной невозможно попасть по цели в несколько пикселей, которую он же и закрывает.
- Файл открывается во встроенном редакторе и пишется обратно по SSH.
- Чего телефон не умеет: открыть оболочку на самом телефоне — iOS не разрешает приложению запускать другие программы. Карточка локального терминала там просто не показывается, вместо обещания, которое не сбудется.
Хранилище и мастер-пароль
- Подключение хранится в зашифрованном виде целиком — имя, хост, пользователь, порт, папка, — а не только его пароль. Раньше адреса ваших серверов и учётные имена лежали на диске открытым текстом рядом с зашифрованными секретами.
- Включение «Спрашивать мастер-пароль при запуске» стало двумя шагами: сначала создаётся и показывается код восстановления, и его нужно подтвердить. Раньше пароль, набранный дважды вслепую, мгновенно становился единственным, что открывает все ваши учётные данные, — а сброса не существует. Одинаковая опечатка в обоих полях означала безвозвратную потерю.
- Копия подключений из версий до 0.7 — с паролями и парольными фразами ключей в открытом виде — теперь удаляется при переносе в хранилище. У части пользователей она лежала там с тех пор, как хранилища ещё не существовало.
- macOS перестала снова и снова спрашивать пароль от связки ключей: разрешение «Всегда разрешать» теперь держится дольше одного сохранения.
Что синхронизация теряла и больше не теряет
- Слияние двух копий проверяли на двух настоящих машинах с папкой между ними. По итогам исправлены случаи, когда сохранённое не доезжало: изменение, не сдвинувшее общий счётчик, не отправлялось вовсе, а копия с тем же счётчиком отвергалась целиком как «устаревшая» — вместе со всем, что в ней было нового.
- Один разрешённый конфликт больше не размножается. Две машины, разобравшие его независимо, получали результаты, в которых не узнавали друг друга, и разбирали их снова: одно сохранённое подключение превращалось в шестьдесят четыре копии за шесть синхронизаций.
- Компьютер со старой версией больше не стирает поля подключения, которых он не знает. Пока обновлены не все машины — а так выглядит любое обновление — настройка из новой версии исчезала бы на обеих сторонах молча.
- Удаление подключения теперь убирает и его сохранённый пароль, и запомненный размер окна, и историю файлового браузера. Восстановление сессий при запуске действительно работает — и для всех вкладок, а не только для видимых.
Безопасность
- Отдельное окно удалённого рабочего стола больше не может открыть оболочку на вашем компьютере. Оно показывает содержимое чужой машины и имело для этого список из семи разрешённых действий — а одно из них выдавало ключ, которым этот список обходился целиком.
- Подпись записи теперь покрывает всё, на что смотрит слияние. Держатель ключа мог менять поля, оставшиеся вне подписи, в чужой записи — и подключение исчезало из списка на всех машинах, под подписью его владельца.
- Присоединение к чужой папке больше не выдаёт права записи автоматически. Список устройств внутри файла — заявление того, кто этот файл написал, и теперь машины из него ждут вашего подтверждения, а не получают доверие молча.
Терминал и вкладки
- Открытие сессии больше не печатает семь строк нашего собственного текста перед оболочкой. Терминал начинается с того, что сказала машина.
- Вкладка берёт имя из заголовка оболочки — так же, как меняется заголовок окна терминала по ходу работы. Три вкладки к одному серверу перестают быть «server», «server (2)», «server (3)».
- Вкладку можно назвать и самому: двойной клик или пункт меню. Данное вручную имя автоматика больше не перебивает; пустое поле возвращает её обратно.
Оформление
- У десктопа новая палитра. Терминал теперь темнее панели, в которой лежит, и того же семейства по тону, — а не более светлый серый прямоугольник на синем фоне, из-за чего он читался наклеенным, а не вырезанным.
- Цветная точка рядом с сервером значит одно. У протокола свой цвет — оболочка, файлы или экран, — у состояния подключения свой. Раньше зелёный означал то ли «подключено», то ли «это SSH», и различить было нельзя.
- Диалоги всегда помещаются в окно: высокий прижимается к экрану и прокручивает середину, оставляя заголовок и кнопки на месте, а поля вокруг снова пропорциональны размеру окна.
Лицензия, обновления и сборки
- Синхронизация подключений между машинами — платная возможность. Всё остальное в Conchshell остаётся бесплатным. Ключ спрашивается только там, где что-то меняется: выбрать папку, синхронизировать, связать устройство, ответить на конфликт.
- Если ключ перестал действовать, вас не запирают от собственных данных: список устройств, разбор конфликтов и настройки остаются доступны — закрывается только сама синхронизация.
- Загрузки и обновления приходят с conchshell.app.
- В настройках появилась вкладка «О программе» с полным списком открытых компонентов, на которых собран Conchshell, и текстом лицензии каждого.
- Эта версия выпущена для macOS и Linux. Сборка для Windows задержалась и приедет отдельно; на Windows пока остаётся 2.11.0.
2.11.0
Импорт подключений из ~/.ssh/config
- Настройки читают клиентскую конфигурацию OpenSSH и предлагают её хосты к импорту.
- Наследование разбирается по правилам самого OpenSSH: хост берёт настройки от каждого совпавшего шаблона, и побеждает первое значение, а не последнее. Наивное чтение здесь молча даёт подключение без пользователя или с чужим портом.
- ProxyJump разрешается через блок джамп-хоста — вместе с его пользователем, портом и ключом.
- Ничего не сохраняется, пока вы не выберете сами. Строки с предупреждением — дубликат, нет пользователя, укороченная цепочка джампов — сняты по умолчанию.
Подпись сборок macOS
- Сборки для macOS теперь несут подпись и собираются с hardened runtime. Раньше подписи не было вовсе, и скачавший с сайта получал «повреждён и не может быть открыт» — сообщение без выхода.
- Нотаризации пока нет: при первом запуске система по-прежнему попросит подтверждение через «Конфиденциальность и безопасность».
Обновления
- Исправлена проверка подписи обновления. Четыре релиза подряд скачивались и не проходили проверку на машине пользователя.
- Перед сборкой ключ подписи сверяется с публичным ключом из конфигурации. Не совпало — релиз не выходит.