SharkTTY 1.6 вийшов 27 червня, разом із SharkTTY Desk 0.6.0 для Mac. Це той випуск, у якому віддалений робочий стіл перестав означати один екран. Проте більша частина роботи схована під капотом: з’єднання, яке припиняє спроби там, де треба, і повторює їх там, де треба, і повідомляє, що саме з двох сталося.
Кожен екран, а не лише один
До 1.6 підключення до Mac із трьома моніторами давало вам один із них. Ви могли обрати, який саме, і на цьому все. Через це багатомоніторний Mac здавався з телефона меншим, ніж він є насправді, а потрібна частина робочого стола незмінно опинялася на тому дисплеї, на який ви не дивилися.
1.6 надсилає їх усі. Зведений вигляд розкладає дисплеї поруч, а торкання чи перетягування на будь-якому з них дає керування саме тим екраном — вказівник іде туди, куди йде ваш палець, на якому б дисплеї він не опинився. Кожен дисплей транслюється на вимогу, а не всі одразу, і це єдина причина, чому Mac із трьома моніторами взагалі придатний для роботи через з’єднання телефона.
Той самий випуск дозволив редагувати збережений робочий стіл і брати посилання для доступу до нього, не полишаючи сесії, тож налаштувати доступ для другого пристрою більше не означало спершу від’єднатися.
Перепідключення, які справді перепідключають
Віддалений робочий стіл, який обривається під час поїздки в ліфті, — це не віддалений робочий стіл. Шлях з’єднання у 1.6 перебудували навколо простого порядку переваг: спершу спробувати прямий шлях точка-точка, бо він швидший і не втягує нікого стороннього, і переходити на ретранслятор лише тоді, коли прямий шлях не піднімається. Пріоритет точки-точки — це планування, а не перемикач у налаштуваннях: застосунок влаштовує гонку між шляхами й бере той, що відгукнувся.
Саме на повторних спробах такі речі зазвичай ламаються, і то у двох напрямках. Повторюйте все — і хибні облікові дані перетворяться на нескінченний цикл, схожий на проблему з мережею. Не повторюйте нічого — і двосекундний збій мобільного зв’язку обірве вашу сесію. Тож 1.6 розділяє випадки: відмова автентифікації одразу зупиняє обхід запасних шляхів, бо спроба наступного шляху з тим самим хибним ключем провалиться так само, а збій транспорту відкочується з випадковим розкидом і продовжує спроби. Цей розкид важить більше, ніж здається: без нього кожен клієнт, що обірвався одночасно з іншими, повернеться теж одночасно з ними.
Крім того: застосунок тепер помічає, коли мережа повертається, і відновлюється замість того, щоб дочікувати решту свого відкату; шлях через WebSocket отримав підтримання з’єднання, тож неактивні сесії більше не вбиваються проміжними мережевими пристроями, а цикл приймання перестав губити з’єднання, які надходили, поки він був зайнятий попереднім.
Короткі посилання та підключення без копіювання
Рядок з’єднання — це довгий рядок тексту з хостом, портом, відбитком сертифіката й токеном усередині. Його непогано сканувати й геть незручно комусь надсилати. У 1.6 з’явилися короткі посилання і для автономного ретранслятора, і для керованого: застосунок розгортає посилання, отримує у відповідь токен і підключається з ним — жодного відбитка, який треба звіряти на око, нічого не треба вставляти.
Невелике супутнє виправлення з категорії того, про що взагалі не мало б бути потреби казати: сканер QR тепер ігнорує коди, які не є рядком з’єднання Desk чи коротким посиланням, замість того щоб намагатися зробити з’єднання з QR-коду Wi-Fi, який хтось лишив на плакаті.
Шифрування на шляху через ретранслятор
Кадри ретранслятора WebSocket у 1.6 зашифровані, а керований ретранслятор видає квитки замість того, щоб приймати будь-кого, хто з’явився в потрібній кімнаті. І те, і те — кроки в одному напрямку: робота ретранслятора полягає в пересиланні байтів між двома боками, які вже домовилися між собою, і що менше він може зробити з цими байтами, то краще. Якщо ви взагалі волієте не довіряти чужому ретранслятору, то автономний має відкритий код і ви можете запустити його самі.
Версії, які домовляються, а не вгадують
Застосунок і агент на Mac тепер обмінюються версією протоколу й набором бітів можливостей, перш ніж робити будь-що інше. Це неефектно й окупається першого ж разу, коли старий застосунок зустріне нового агента: замість з’єднання, яке працює наполовину, а потім падає десь у незрозумілому місці, застосунок точно знає, на що здатен інший бік, а надто старий застосунок отримує зрозумілу пропозицію оновитися. Усе, що з’явилося відтоді, спирається на ці біти можливостей — узгодження аудіокодека у 1.8 працює тим самим механізмом.
Тут же з’явилася автентифікація за кодом підключення, з обмеженням частоти спроб і списком дозволених на боці Mac, тож код, який витік, не можна тихо підібрати перебором.
Шість мов, доведених до кінця
У цьому випуску інтерфейс локалізували всіма шістьма підтримуваними мовами, а не в більшості з них. Термінальні застосунки накопичують чимало коротких рядків, і останні двадцять відсотків із них — це ті, яких ніхто не бачить, доки щось не піде не так — тобто саме тоді, коли прочитати помилку своєю мовою справді важливо.
І дрібніші речі
- Відступи безпечної зони в терміналі, щоб текст більше не заходив під заокруглені кути й індикатор унизу екрана.
- Пам’ять клавіатури для кожного хоста: та клавіатура, з якою ви працювали на хості, і повернеться.
- Стеля якості xHD для віддаленого робочого стола — для випадків, коли пропускної здатності вистачає, а пікселів хочеться.
- Порт SSH тепер вводиться з клавіатури, а не гортається кроками, що оцінить кожен, хто колись дотискав його до 2222.
Усі можливості в 1.6 безкоштовні. Єдині вбудовані покупки — це добровільні чайові, і вони нічого не відкривають.
Читати цю статтю: English · 中文 · 日本語 · Español · Français · 한국어 · Українська
Більше про сам застосунок — у посібнику SharkTTY; короткі нотатки для користувачів — у розділі Що нового, а найшвидший спосіб зв’язатися з нами — дошка відгуків. Повернутися до девблогу.