Tonkeeper 4.7.0: разбор changelog релиз-кандидата
Tonkeeper выкатил v4.7.0-rc.2 — второй релиз-кандидат ветки 4.7. В changelog две главные строчки: фикс уязвимости подписи данных (TK-1104) и каркас встроенной аналитики (TK-1046). Остальное — UX-полировка: CLDR-плюрализация числа кошельков, скелетон вместо «$0» во время загрузки баланса, переработанный поиск токенов в свапе и удаление легаси-виджета web-swap-widget.
До этой ветки 22 мая команда выпустила короткий hotfix v4.6.1, который правил расчёт комиссии (TK-1026) и приводил в порядок deeplinks. Ниже — построчная сборка по официальным release notes на GitHub: что именно прилетело, что это значит для пользователя и почему 4.7.0 пока ещё не stable.
TL;DR
- TK-1104 — закрыта дыра в проверке домена manifest и в операции signData, через которую можно было выдать себя за чужой dApp.
- TK-1046 — добавлена телеметрия (analytics + analytics schema + analytics transfer); это инфраструктура, а не пользовательская фича.
- Свап обновлён — новый API-клиент и сортировка в поиске токенов; старый встраиваемый web-swap-widget удалён из кодовой базы.
- Корректная плюрализация числа кошельков по правилам CLDR (важно для русского с его «1 кошелёк / 2 кошелька / 5 кошельков»).
- Скелетон вместо «$0» пока баланс грузится — больше не пугает пользователя нулём.
Что прилетело в 4.7.0-rc.2
Список ниже — дословный набор пунктов из release notes на GitHub, сгруппированный по смыслу.
Безопасность
- fix(TK-1104): isLocalhost manifest bypass and signData domain spoofing. Вектор атаки выглядел так: вредоносный сайт мог обходить проверку, что manifest TON Connect лежит на легитимном домене (через подмену под localhost), и подсовывать signData-запрос с чужим origin. После фикса оба обхода закрыты. Это самый важный пункт всего релиза с точки зрения пользователя — рекомендуем не игнорировать обновление, как только выйдет stable.
Аналитика (TK-1046)
- Tk 1046/analytics — базовая реализация трекинга событий внутри кошелька.
- TK-1046/analytics schema — описание схемы событий (какие поля шлются).
- Tk 1046/analytics transfer — трекинг событий, связанных с переводами.
Tonkeeper не комментирует в release notes, какие именно метрики собираются и куда уходят. Если приватность критична — стоит дождаться публичного объяснения от команды или включения opt-out тумблера. Сама по себе телеметрия не равна «сливу данных», но это новая поверхность, заслуживающая отдельного разбора.
Свап
- chore(web-swap-widget): remove widget from the codebase. Отдельный встраиваемый виджет, который раньше можно было поставить на сторонний сайт, удалён из репозитория. Основная функциональность свапа осталась в самом кошельке.
- swap tokens search sorting + API client — обновлён поиск токенов в свапе (новая сортировка) и подменён API-клиент под него. По release notes это та же ветка, что была отмечена в rc.1.
UX-полировка
- fix(uikit): Show skeleton instead of $0 while balance is loading. Пока кошелёк подтягивает баланс, теперь показывается скелетон вместо нулевого значения. Раньше пользователь успевал увидеть «$0» и решить, что у него что-то списали.
- fix(uikit): prevent click event propagation on address copy. При нажатии «скопировать адрес» клик больше не «протекает» в родительский элемент. Мелочь, но раньше копирование могло случайно открыть карточку кошелька.
- fix(i18n): pluralize wallet count strings via CLDR rules. Множественное число количества кошельков теперь склоняется по правилам CLDR — то есть «1 кошелёк», «2 кошелька», «5 кошельков», а не машинно-неправильное «5 кошелёк».
Активы и протоколы
- TK-1096: Handle asset parsing for unstake tsTON. Парсер активов теперь корректно распознаёт операцию unstake tsTON (ликвидный стейк Tonstakers). До этого транзакция могла отображаться сырой строкой.
- fix(core): tk-1101 — баг во внутренней логике core-пакета, без подробностей в release notes.
Инфраструктура
- Dependencies update — апгрейд зависимостей.
- Chore/release workflows — правки CI/CD пайплайнов сборки релизов.
Что починили в 4.6.1 hotfix
Перед feature-веткой 4.7.0 вышел маленький стабилизирующий релиз v4.6.1. В нём — три пункта:
- TK-1038 (PR #616): request wallets with pubkeys — при запросе списка кошельков теперь возвращаются и публичные ключи. Это нужно для корректной работы интеграций, которым ключ нужен для верификации подписи.
- Feature/deeplinks (PR #613): расширение поддержки deeplink-протокола. В release notes не уточняется, какие именно схемы добавлены, но судя по структуре PR это работа с обработкой внешних ссылок-команд.
- TK-1026 (PR #612): fee calculation bug — фикс ошибки в расчёте комиссии. Самый важный пункт релиза: до него в каких-то сценариях кошелёк мог показывать неверную fee, что приводило либо к недозалитой транзакции, либо к переплате.
После 4.6.1 в main влились ~70 коммитов до тега 4.7.0-rc — это и есть содержимое нового релиз-кандидата.
Что это значит для пользователя
Если вы держите Tonkeeper как основной кошелёк: дождитесь stable 4.7.0. Главная причина обновляться — TK-1104, фикс спуфинга подписи. Эту проблему вы вряд ли встретите в обычной жизни (она требует целевого фишинга), но классу «вредоносный dApp подделывает источник запроса» уделяют внимание неспроста.
Если вы используете свап Tonkeeper: проверьте, что устраивает новая логика сортировки результатов поиска токенов. Если у вас был встроен web-swap-widget на стороннем сайте — этот путь больше не поддерживается, нужен альтернативный flow (например, deep-link в основной кошелёк).
Если вы стейкаете tsTON: unstake-транзакции теперь будут корректно подписываться человекочитаемой строкой, а не «сырым» payload (TK-1096).
Приватность. Появление аналитики (TK-1046) — это нейтральная инфраструктура, но стоит следить, появится ли в настройках opt-out тумблер и опубликует ли Tonkeeper privacy policy для собираемых событий. Антарктическая часть аудитории non-custodial-кошельков особенно чувствительна к этому пункту — резонно ждать ясности от команды.
Когда ждать stable
v4.7.0-rc.2 — это release candidate, не stable. Тонкипер не публикует roadmap-дат, но по практике их предыдущих веток между последним rc и тегом stable проходит от нескольких дней до пары недель. До этого момента:
- сборку 4.7.0-rc.2 ставить не обязательно на основной кошелёк;
- если хочется попробовать новый свап и UX-правки — поставьте rc в качестве второстепенного аккаунта (импорт seed-фразы во второй профиль), но не переносите туда крупные суммы;
Также не исключено, что между rc.2 и stable выйдет ещё rc.3 — это нормальная практика, особенно при критичных фиксах вроде TK-1104, требующих повторной проверки регрессий.