Releases
Обновление Entergram - неделя 25 июня 2026: стабильность, инструменты для прокси и более 25 исправлений

Это была неделя глубокой инженерной работы. Мы выпустили две инфраструктурные функции, заметно подняли стабильность для рабочих пространств с большим объёмом чатов и закрыли более 25 багов в сообщениях, управлении подключениями, онбординге, биллинге и таблице CRM. Ниже всё, что доехало до продакшена.
Новое: инструменты для прокси в админке
Расход прокси по маршрутам и пул статических прокси
Администраторы теперь видят, какой трафик прокси относится к конкретным маршрутам и подключённым аккаунтам, то есть понимают, какие соединения съедают больше всего полосы. Вдобавок отдельному маршруту можно назначить выделенный статический прокси. Это полезно, когда для конкретных аккаунтов Telegram нужен предсказуемый стабильный IP, а не ротация внутри пула.
Монитор здоровья прокси в админ-панели
Фоновый воркер периодически опрашивает каждый прокси и обновляет его статус. Админ-панель теперь отражает реальное состояние связности, поэтому деградировавший прокси видно заранее, а не через тикеты поддержки.
Почему прокси вообще важны
Entergram работает на настоящих личных аккаунтах Telegram, и каждый такой аккаунт ходит через свой уникальный прокси. Для команды это не техническая мелочь. Когда аккаунт внезапно меняет сетевой маршрут, Telegram воспринимает это как подозрительную активность, и растёт риск ограничений на номер. Именно поэтому предсказуемый статический IP для важных аккаунтов и своевременная замена деградировавшего прокси напрямую влияют на доставляемость рассылок и на то, доживёт ли аккаунт до конца квартала без сюрпризов.
Производительность: быстрее и стабильнее на больших пространствах
Стабилизация ws-v2 для пространств с большим объёмом
Крупные пространства с сотнями чатов на множестве подключённых аккаунтов сталкивались с заметной блокировкой главного потока и подтормаживанием браузера. На этой неделе мы переработали движок подключений ws-v2: всплески account.bind теперь ограничиваются, а вызовы folder.chats.fetch распределяются по времени. Результат: QA-сессия, которая раньше давала 692 длинные задачи и около 166 секунд блокировки главного потока, теперь загружается чисто.
Значки «Требуется переподключение» больше не срабатывают ложно
В нагруженных пространствах аккаунты показывали значок «Требуется переподключение / Отключено», хотя серверная MTProto-сессия была жива и обслуживала трафик. Операторы нажимали «Переподключить», запускали лишний вход и иногда упирались в ограничение FLOOD_WAIT на номере телефона. Теперь значок появляется только при настоящей проблеме со связью.
Исправления: сообщения и чаты
Голосовые сообщения снова воспроизводятся. Входящие аудио падали молча, кнопка воспроизведения ничего не делала. Исправлено во всех типах чатов. (DEV-133)
Ошибки «Socket closed» устранены. Несколько пространств получали жёсткие обрывы связи с ошибкой контекста chat.subscribe. Логика переподключения сокета стала стабильной. (DEV-120)
История супергрупп и каналов загружается корректно. Навигация в супергруппах вызывала ошибки «Invalid realtime command payload» на пути history.around, когда фронтенд отправлял подсказки о собеседнике (entity_class_name), которые шлюз не распознавал. Исправлено на уровне шлюза. (DEV-168, PRODUCT-121)
Страница больше не зависает во время переписки и пересылки. Целый класс зависаний с последующей перезагрузкой у операторов прямо посреди разговора устранён. (DEV-143)
Статус «в сети» стал согласованным. Индикатор присутствия в таблице чатов и в шапке чата читали данные из разных источников. Теперь у них одно общее вычисленное состояние. (DEV-186)
Правильные имена отправителей в групповых чатах. Над сообщениями в группах иногда показывался чужой username Telegram. Исправлено на путях chat_list.window.snapshot и live_chat_list.delta. (DEV-192)
Счётчики непрочитанного стали точными. В нескольких сценариях бейдж завышал число: например, вы отправили 2 сообщения, а видели 5 непрочитанных. Теперь счётчик корректно сходится после переподключений. (DEV-135)
Дубли сообщений исправлены. Когда два и более подключённых аккаунта состояли в одном чате, одно сообщение могло отображаться дважды. Это был баг дедупликации на фронтенде, а не проблема слияния данных между аккаунтами. Исправлено. (DEV-183)
Запасной отправитель и авторы реакций определяются верно. В истории иногда показывалась подпись other у входящих сообщений, а всплывающее окно реакций зависало на «Loading reactions». Обе проблемы устранены. (DEV-156)
Чаты остаются в папке после вашего ответа. Папки с флагом «Исключать прочитанные чаты» выбрасывали чат сразу после ответа оператора, и разговор исчезал прямо во время работы. Теперь папка удерживает отвеченные чаты, пока вы не перейдёте в другое место. (DEV-178)
MCP пишет новым контактам. Интеграция MCP отдавала ошибку при попытке отправить сообщение контакту Telegram, с которым вы раньше не переписывались. Первая отправка теперь работает корректно. (DEV-141)
Исправления: подключения и сессии
Мёртвые сессии восстанавливаются сами. Баг в логике учёта ёмкости маршрутов у session-agent (observeRoutes) приводил к тому, что часть сессий переставала перезапускаться после падения. Затронутые аккаунты отвечали nats: no responders на любой запрос истории или папок, и перезапуск агента не помогал. Голодание устранено, мёртвые сессии оживают сами. (DEV-139)
Диалог подключения ws-v2 больше не заваливает вас ошибками 400. Из-за проблемы с таймингами цикл опроса при подключении аккаунта продолжал запрашивать несуществующий идентификатор сессии авторизации и выдавал сотни уведомлений API request failed: 400 за одну сессию. Исправлено в жизненном цикле опроса. (DEV-181)
Статус прокси корректно отображается в настройках. Индикатор прокси застревал в состоянии загрузки при каждом открытии страницы настроек, даже для здоровых подключений. Теперь он показывает реальное состояние. (DEV-154)
Исправления: рабочее пространство и онбординг
Присоединиться к пространству теперь можно надёжно. Падение React с ошибкой максимальной глубины обновления (#185) срабатывало, когда новый пользователь попадал в таблицу чатов CRM сразу после присоединения. Причиной была ссылка на массив, которая пересоздавалась внутри определения CHAT_PAGE_SIZE_OPTIONS; теперь она вынесена за цикл рендера. (DEV-165, DEV-167)
Принятие приглашения при онбординге исправлено. Пользователи, которые вставляли ссылку-приглашение во время онбординга, могли пройти его до конца, так и не попав в нужное пространство: они оказывались в пустом личном пространстве, а затем получали падение при переходе в Настройки и таблицу чатов. Логика принятия приглашения и редиректа теперь корректна. (DEV-170)
Удалённые пользователи больше не возвращаются. Участники, которых удалили или которые вышли сами, снова оказывались в пространстве после каждого обновления страницы из-за устаревшей сессии по ссылке-приглашению. Эндпоинт /api/onboarding теперь проверяет статус членства перед повторным присоединением. (DEV-175)
Исправления: настройки аккаунта
Запрос на смену email можно отменить. Кнопка отмены не была привязана к действию, нажатие ничего не давало. Теперь запрос действительно отменяется. (DEV-137)
Выделение чатов в светлой теме снова видно. Из-за отсутствующего токена контраста выделение строк в белой теме было почти незаметным. Исправлено. (DEV-157)
Исправления: биллинг и подписки
Владельцы на пробном периоде покупают места без тупиковой ошибки. Вызов purchaseSeat() до появления активной платной подписки возвращает 400 OWNER_SUBSCRIPTION_REQUIRED. Теперь владелец на триале видит понятное предложение сначала оформить подписку и прямой путь на страницу подписки. (DEV-174)
Покупка подписки работает стабильно. Класс конфликтов авторизации 401/403 на оплате, вызванных инвалидацией сессии во время редиректа в Stripe, устранён. (DEV-172)
Исправления: таблица CRM
Медиа и видео проигрываются без ошибок ограничения частоты. Эндпоинт /api/realtime/media подпадал под общий лимит в 20 запросов в минуту. Потоковое видео в браузере делает несколько запросов по диапазонам байтов к одному файлу и выбивало лимит меньше чем за секунду. Медиазапросы теперь идут в обход общего лимитера. (DEV-152)
Поиск стал полным и предсказуемым. Часть запросов возвращала неполные результаты или падала с сообщением «Telegram Search is unavailable» на первом запросе, а повторный поиск по той же фразе работал. Исправлено: результаты возвращаются сразу. (DEV-136)
«Время с первого входящего сообщения» считается от Telegram, а не от открытия приложения. Специальная колонка запускала отсчёт с момента, когда вы открыли Entergram, а не с момента получения сообщения в Telegram. Источник отметки времени исправлен. (DEV-162)
Что проверить у себя после обновления
Неделя получилась настолько насыщенной исправлениями, что имеет смысл потратить десять минут и убедиться, что всё встало как надо.
- Откройте таблицу чатов на самом большом пространстве и просто прокрутите её. Если раньше вкладка подтормаживала на первых секундах загрузки, разница будет заметна без всяких измерений.
- Пройдите по подключённым аккаунтам и посмотрите на значки состояния. Всё, что теперь показывает «Требуется переподключение», действительно требует внимания, так что ложных срабатываний быть не должно.
- Не жмите «Переподключить» по привычке. Лишний вход по номеру повышает шанс поймать FLOOD_WAIT, и после этой недели такой привычке больше нет оправдания.
- Проверьте папку с включённым исключением прочитанных чатов: ответьте в одном из чатов и убедитесь, что он остался на месте.
- Если вы пользуетесь колонкой со временем с первого входящего сообщения для контроля скорости реакции, пересмотрите её значения. Цифры теперь считаются от Telegram и могут отличаться от того, к чему вы привыкли.
- Владельцам на пробном периоде: если вы упирались в ошибку при покупке мест, повторите попытку. Сначала оформляется подписка владельца, затем докупаются места.
Немного контекста для команд, которые растут
Большая часть этой недели ушла не на новые экраны, а на то, чтобы продукт спокойно держал десятки подключённых аккаунтов в одном интерфейсе. Это и есть основной сценарий Entergram: единые входящие поверх множества настоящих личных аккаунтов Telegram, без переключения между ними и с фильтрацией по аккаунту, когда нужно сузить обзор.
Чем больше аккаунтов в пространстве, тем дороже обходится каждая мелкая неточность. Один лишний всплеск запросов при загрузке папок превращается в секунды заблокированного интерфейса. Один ложный значок отключения превращается в лишний вход и риск ограничений на номере. Один сбитый счётчик непрочитанного заставляет команду перепроверять руками то, что должно быть видно с первого взгляда. Поэтому мы считаем эту неделю продуктовой, а не только технической.
Если вы ведёте продажи или поддержку в Telegram и присматриваетесь к тому, как всё это выглядит целиком, начните с Telegram CRM и раздела про работу с несколькими аккаунтами.
Полный список изменений
Полный changelog версии v0.16.0 и всех предыдущих релизов доступен на странице «Что нового» Entergram.
Готовы улучшить рабочий процесс в Telegram?
Не упустите еще одного лида. Не потеряйте еще одно сообщение.
Начать работу с Entergram

