В бете Telegram для macOS 13.1.0.283429, вышедшей 1 ноября, карточка сеанса в списке активных устройств показывает, вошли ли в аккаунт из официального приложения Telegram: рядом с названием приложения стоит галочка с подсказкой «This session is from the official Telegram app». Там же появились точные дата и время первого входа и последней активности, отдельные строки для версии и системы и кнопка, которая показывает место входа на карте. Изменение пришло из пулл-реквеста стороннего разработчика, влитого 31 октября. Касается это всех, кто проверяет, кто ещё сидит в их аккаунте: в стабильной версии 13.1.0 (283357) от 20 октября новой карточки пока нет.

Что изменилось в карточке сеанса

Карточка открывается кликом по сеансу: настройки, раздел «Конфиденциальность и безопасность», список Active Sessions. Раньше в ней были модель устройства, строка приложения, где через запятую стояли название и версия, IP-адрес, место и переключатели секретных чатов и звонков. Версии системы в карточке не было вовсе. Теперь строки разбиты на две группы.

ГруппаСтрокаЧто показывает
DeviceApplicationназвание приложения и галочку, если сеанс из официального клиента
DeviceVersionверсию приложения, например 13.1.0 (283402) BETA
DeviceOSсистему, например macOS 27.2
ConnectionIP Address и Locationадрес и страну с регионом, кнопка открывает место на карте
ConnectionFirst Signed Atдату и время, когда сеанс вошёл в аккаунт, с точностью до секунды
ConnectionLast Activeдату и время последней активности сеанса

Сама карточка стала шире — 440 точек вместо 340, — потому что длинная строка приложения раньше выталкивала версию за край. Галочка окрашена акцентным цветом темы, а не каким-то своим. Подписи «First Signed At» и «Last Active» пока зашиты в код по-английски с пометкой //TODOLANG: перевод на другие языки добавляется отдельно.

Место на карте ищется по тексту, а не по координатам. Сервер отдаёт страну и регион, которые он определил по IP-адресу, приложение передаёт эту строку геокодеру macOS (CLGeocoder, сервис Apple) и открывает превью найденной точки. Не нашлось — выводится «Couldn't find this location. Please try again.» Точность от этого не растёт: под карточкой по-прежнему написано, что оценка места построена по IP-адресу и может ошибаться.

Откуда берётся галочка

Галочку рисует клиент, а решает сервер. В объекте authorization, которым API описывает каждый сеанс, есть флаг official_app — «сеанс из официального приложения». Там же лежат date_created, date_active, ip, country, region, версия приложения и системы — всё, что теперь выведено в карточку. Поля эти API отдавал и раньше; автор изменения пишет, что клиенты используют лишь малую их часть.

Сторонние клиенты подключаются к API со своим идентификатором приложения, который выдаётся на my.telegram.org, и такой вход, скорее всего, галочки не получит, даже если клиент честный: как именно сервер решает, что приложение официальное, документация не говорит. Отсутствие галочки — повод присмотреться к сеансу, а не доказательство взлома.

Что делать

  • Проверить сеансы. В Telegram для macOS — настройки, «Конфиденциальность и безопасность», Active Sessions. В бете начиная с 283429 у официальных приложений рядом с названием стоит галочка; в стабильной версии карточка старая, но IP-адрес и место в ней есть.
  • Сверить даты. Строка First Signed At показывает, когда сеанс появился. Время показано в часовом поясе этого Mac. Если в тот день вы не входили в Telegram ни на новом устройстве, ни в веб-версии, ни после переустановки, а Last Active свежий, это повод завершить сеанс.
  • Завершить чужой сеанс. Кнопка Terminate Session внизу карточки чужого сеанса выкидывает устройство из аккаунта. Неизвестный сеанс без галочки, с незнакомым приложением или страной — первый кандидат. С только что подключённого устройства старые сеансы завершить нельзя: приложение просит подождать несколько часов.
  • Поставить облачный пароль. Без двухэтапной проверки для нового входа хватает одного кода подтверждения; с паролем нужен ещё и он.

Бета macOS раздаётся через фид обновлений. В стабильной версии 13.1.0 (283357) новой карточки нет.

Как изменение попало в бету

Пулл-реквест #172 открыл 28 октября сторонний разработчик, его влил 31 октября в 20:52 UTC аккаунт команды macOS: четыре коммита, 256 строк добавлено, 21 удалена, пять файлов. При ревью нашлась ошибка: строка в первой версии называлась «Last Signed At», но показывала время последней активности, а не входа, — сеанс, вошедший год назад и открытый две минуты назад, выглядел бы свежим входом. Строку переименовали в «Last Active».

Сборка 283426 от 31 октября строк новой карточки не содержит. В 283429 от 1 ноября в бинарнике есть и подсказка про официальное приложение, и ошибка поиска места, и класс строки SessionDetailRowItem из того же пулл-реквеста. От влития до беты прошло меньше суток. Правки сторонних разработчиков клиент для macOS принимает с тех пор, как его исходники открыли для внешних пулл-реквестов.

Что ещё в той же бете

Сборка 283427, вышедшая за 40 минут до 283429, принесла боковую панель тем для форумов. В бинарнике появились ForumSidebarController, ForumSidebarView, ForumDisplayMode с вариантами вида и строки «All Messages» и «Show Chats». Бета Telegram для Android 13.2.0 (7278) от 31 октября объявила то же самое — боковую панель в форумах, в том числе у ботов, в личных сообщениях каналов и в «Избранном». В открытом коде клиента для macOS на 1 ноября панели ещё нет, и экрана с ней в сборке не видно: как она выглядит, пока известно только по именам классов.