-
Несколько рабочих столов дашборда. На одно колесо можно завести до шести раскладок — например, городскую, скоростную и диагностическую. Столы переключаются горизонтальным свайпом, полоска под шапкой показывает, какой открыт и сколько их всего, а при переключении на секунду всплывает имя. Пока стол один, свайп предлагает завести второй; управление — по тапу на полоске или в меню дашборда, пункт «Рабочие столы»: копия текущего, переименование, удаление.
-
Модель колеса выбирается вручную: меню дашборда → «Модель». Выбор сохраняется за колесом и переживает переподключение, а если приложение опознало модель само, оно так и пишет. Пока модель не выбрана и не опознана, заряд по напряжению не показывается вовсе: вывести число банок из одного напряжения нельзя даже в принципе — полный 36S и 40S по 3.78 В дают одни и те же 151.2 В. Раньше приложение здесь угадывало, и на T4 просадка ниже 90 В переводила делитель с 24S на 20S: заряд показывал 100 % на наполовину пустом пакете до конца поездки. У кого класс напряжения Begode выставлен руками — он продолжает работать, пока модель не выбрана.
-
Заряд перестал расти, пока пакет отдаёт энергию. Напряжение после нагрузки восстанавливается само, и кривая читала это как приход: на Lynx после разгона шкала поднималась на восемь пунктов, пока из пакета уходило ещё 46 Вт·ч. Заодно ушёл скачок вверх посреди поездки на два десятка пунктов — признак «пакет полон» снимался одним кадром рекуперации в конце торможения, теперь ток в пакет считается зарядкой, только если продержится полминуты.
-
Ноль шкалы больше не наступает раньше времени: подгонка кривой могла утащить нижний узел к нулю, и на 3.93 В на банку райдер видел ровный ноль тридцать четыре минуты подряд. И наоборот — полный пакет теперь опознаётся после зарядки: пакет Sherman L отдыхает на 4.1655 В на банку и на четыре милливольта промахивался мимо прежнего порога, отчего весь следующий цикл шкала занижала заряд примерно на четверть.
-
Запас хода перестал раздуваться на ровном месте: плитка показывала 107 км там, где до торможения было 44. Кадры со стоянки в расход больше не входят — это подсветка и мозги, а не цена километра; расход меряется кусками по 250 метров, а не по четырёхметровым тикам одометра, и сглаживается на трёх километрах вместо полукилометра.
-
«Обучить по поездкам» в разделе «Модель батареи»: приложение проходит уже записанные поездки и строит кривую пакета по ним, не дожидаясь новых. Сначала показывает список — какие поездки годятся, сколько это километров и почему остальные не подошли. Не годятся записи старых версий, где торможение записывалось расходом, записи без знака тока и слишком короткие; склеенные поездки режутся по швам, а телеметрия со стоянки не берётся.
-
Выученная модель батареи и сводки поездок теперь попадают в выгрузку и восстанавливаются при импорте. Переезд на новый телефон больше не стирает всё, чему приложение научилось о пакете.
-
История колеса переезжает за ним, если оно пришло под новым адресом — например, когда архив снят с айфона, где колесо помечено другим идентификатором. Поездки, сводки, модель пакета и калибровка скорости привязываются к нынешнему колесу. Правило намеренно узкое: перенос делается, только если под этим именем в базе лежит ровно один чужой идентификатор.
-
Импорт архива поездок больше не роняет приложение. Одиннадцатимегабайтный архив, импортированный на связи с колесом, ронял его трижды подряд: импорт держал базу занятой всё время разбора файла, и очередная запись телеметрии идущей поездки не могла пробиться. Заодно импорт стал быстрее — 13.3 секунды против 0.21 на тридцати двух тысячах строк, — а неудачные импорт и экспорт показывают строку об ошибке вместо вылета.
-
Трек проходит сквозь провалы GPS. Там, где спутников не было, а колесо ехало, рисуется пунктирный участок ровно той длины, которую накрутил одометр, с подписью «без GPS» и километрами: на поездке райдера концы разрыва расходились на 4.1 км, а пройдено было 6.3. Лента показаний штрихует те же участки, а карточка поездки рвёт линию там же, где карта — раньше на ней было семь разрывов, которых на карте нет.
-
Сброс одометра посреди поездки больше не схлопывает трек. Счётчик колеса обнулился на двадцать первой минуте, и просмотр девяностоминутной поездки показывал почти пустую гребёнку с бегунком в самом начале, хотя все точки и вся телеметрия записаны. Километраж на карточке был правильный и раньше — расходилась только карта.
-
Виджет на домашнем экране наконец рисуется. В релизной сборке он вечно показывал крутилку — в отладочной этого не было видно вовсе. Заодно: настоящая карточка в списке виджетов вместо той же крутилки, растяжка до пяти столбцов, итоги поездки на широком ярусе (средняя и максимальная скорость, пик ШИМ, средняя банка), кнопка фары, которая шлёт ту же команду, что кнопка на дашборде, и фон на выбор — «Плитка», «Матовый», «Прозрачный». Кнопка сигнала рядом пока молчит: команды сигнала нет ни в одной разобранной прошивке, а слать в колесо угаданные байты нельзя.
-
Автосвет умеет выключаться по углу педалей — третий способ вдобавок к скорости и таймеру. Он смотрит на позу колеса, а не на движение: подняли за ручку, положили набок, поставили на подножку. Угол сообщают LeaperKim («Угол педалей») и Inmotion; у остальных колёс пункт недоступен, а неизвестный угол фару не гасит никогда.
-
Кнопка сигнализации в пульте быстрых действий: постановка и снятие охраны, тумблер идёт за ответом колеса, а не за нажатием. Кнопка появляется, только когда плагин сигнализации действительно работает на колесе — то есть на пропатченной прошивке. Проверено на стенде эмуляции прошивки, на живом колесе не подтверждено.
-
Прошивка LeaperKim проверяется до заливки: точное совпадение с известной сборкой, целостность структуры образа и предупреждение, если колесо называет себя не тем, что записано в файле. Файл, который прошивкой не является, экран отклоняет. И сама заливка теперь уходит только в ту характеристику, которую использует официальное приложение: запасные ветки могли отправить образ не туда — в худшем случае уже после того, как колесо уведено в загрузчик.
-
В конструкторе порога по тапу на значении наконец поднимается клавиатура. Поле открывалось и рисовало курсор, но набирать было нечем.
-
«Искать всегда» в настройках связи: попытка переподключения раз в тридцать секунд без предела по времени, пока не отключитесь сами. Реже обычного поиска — иначе телефон сядет за ночь.
-
Подложка карты «OSM» — обычная карта OpenStreetMap. Подписи и мелкие улицы у неё подробнее, чем у приглушённых подложек, и она не гасится ни в светлой теме, ни в тёмной: её выбирают именно такой, какая она есть.
-
Кнопка «сохранить текущее» в библиотеке оформлений больше не плодит одинаковые записи. Она сочиняла новое имя каждому нажатию, поэтому десять нажатий давали десять копий одного дашборда; теперь она гаснет и подписывается, под каким именем это оформление уже сохранено.
-
Боковые метрики закреплённой полосы можно переставлять: в настройках полосы потяните строку за ручку слева.
-
Несколько рабочих столов дашборда. На одно колесо можно завести до шести раскладок — например, городскую, скоростную и диагностическую. Столы переключаются горизонтальным свайпом, полоска под шапкой показывает, какой открыт и сколько их всего, а при переключении на секунду всплывает имя. Пока стол один, свайп предлагает завести второй; управление — по тапу на полоске или в меню дашборда, пункт «Рабочие столы»: копия текущего, переименование, удаление.
-
Модель колеса выбирается вручную: меню дашборда → «Модель». Выбор сохраняется за колесом и переживает переподключение, а если приложение опознало модель само, оно так и пишет. Пока модель не выбрана и не опознана, заряд по напряжению не показывается вовсе: вывести число банок из одного напряжения нельзя даже в принципе — полный 36S и 40S по 3.78 В дают одни и те же 151.2 В. Раньше приложение здесь угадывало, и на T4 просадка ниже 90 В переводила делитель с 24S на 20S: заряд показывал 100 % на наполовину пустом пакете до конца поездки. У кого класс напряжения Begode выставлен руками — он продолжает работать, пока модель не выбрана.
-
Заряд перестал расти, пока пакет отдаёт энергию. Напряжение после нагрузки восстанавливается само, и кривая читала это как приход: на Lynx после разгона шкала поднималась на восемь пунктов, пока из пакета уходило ещё 46 Вт·ч. Заодно ушёл скачок вверх посреди поездки на два десятка пунктов — признак «пакет полон» снимался одним кадром рекуперации в конце торможения, теперь ток в пакет считается зарядкой, только если продержится полминуты.
-
Ноль шкалы больше не наступает раньше времени: подгонка кривой могла утащить нижний узел к нулю, и на 3.93 В на банку райдер видел ровный ноль тридцать четыре минуты подряд. И наоборот — полный пакет теперь опознаётся после зарядки: пакет Sherman L отдыхает на 4.1655 В на банку и на четыре милливольта промахивался мимо прежнего порога, отчего весь следующий цикл шкала занижала заряд примерно на четверть.
-
Запас хода перестал раздуваться на ровном месте: плитка показывала 107 км там, где до торможения было 44. Кадры со стоянки в расход больше не входят — это подсветка и мозги, а не цена километра; расход меряется кусками по 250 метров, а не по четырёхметровым тикам одометра, и сглаживается на трёх километрах вместо полукилометра.
-
Выученная модель батареи и сводки поездок теперь попадают в выгрузку и восстанавливаются при импорте. Переезд на новый телефон больше не стирает всё, чему приложение научилось о пакете.
-
История колеса переживает переустановку приложения. iOS выдаёт колесу идентификатор, заведённый на пару «колесо — установка приложения»: обновление из App Store его сохраняет, а удаление с переустановкой — нет, и всё, что приложение помнило о колесе, оставалось лежать под старым ключом. Теперь поездки, сводки, модель пакета и калибровка скорости переезжают на нынешнее колесо. Правило намеренно узкое: перенос делается, только если под этим именем в базе лежит ровно один чужой идентификатор.
-
Трек проходит сквозь провалы GPS. Там, где спутников не было, а колесо ехало, рисуется пунктирный участок ровно той длины, которую накрутил одометр, с подписью «без GPS» и километрами: на поездке райдера концы разрыва расходились на 4.1 км, а пройдено было 6.3. Карточка поездки и превью в списке рвут линию там же, где карта.
-
Сброс одометра посреди поездки больше не схлопывает трек. Счётчик колеса обнулился на двадцать первой минуте, и просмотр девяностоминутной поездки показывал почти пустую гребёнку с бегунком в самом начале, хотя все точки и вся телеметрия записаны. Километраж на карточке был правильный и раньше — расходилась только карта.
-
Кнопка «сохранить текущее» в библиотеке оформлений больше не плодит одинаковые записи. Она сочиняла новое имя каждому нажатию, поэтому десять нажатий давали десять копий одного дашборда; теперь она гаснет и подписывается, под каким именем это оформление уже сохранено.
-
Боковые метрики закреплённой полосы можно переставлять: в настройках полосы потяните строку за ручку слева.