# Релиз 03.03.2026 - 04.03.2026 (Для поддержки)

##### **Версия Веб-приложения:** 4.1.74

##### **Версия Мобильного приложения:** 4.1.61

---

##### **Исправление багов:**

<table border="1" id="bkmrk-%E2%84%96-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B0%D0%B3%D0%B0-%D0%9F%D1%80%D0%B8%D0%BB" style="border-collapse: collapse; width: 100%; height: 149.156px;"><colgroup><col style="width: 4.82077%;"></col><col style="width: 64.0254%;"></col><col style="width: 19.0401%;"></col><col style="width: 11.9901%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">№</td><td style="height: 46.5938px;">Описание бага</td><td style="height: 46.5938px;">Приложение</td><td style="height: 46.5938px;">Задача в Трекере</td></tr><tr style="height: 102.562px;"><td style="height: 102.562px;">1</td><td style="height: 102.562px;">**Ранее:**

В форме ОВ можно было ввести невалидную дату. Окно могло создаваться с некорректной датой

**Теперь:**

Валидация дат в ОВ исправлена. Невалидные значения корректно ловятся, а создание окна с некорректной датой блокируется

</td><td style="height: 102.562px;">Веб-приложение</td><td style="height: 102.562px;">[ALLY-6303](https://tracker.yandex.ru/ALLY-6303)</td></tr><tr><td>2</td><td>**Ранее:**

При выборе периода в расчетном листе отображался выбранный диапазон + предыдущий день, из-за чего суммы могли выглядеть некорректно на устройствах с таймзоной, отличной от серверной.

**Теперь:**

Исправлена нормализация дат на сервере. Даты расчетного листа корректно отображаются строго внутри выбранного периода

</td><td>Веб-приложение</td><td>[ALLY-6388](https://tracker.yandex.ru/ALLY-6388)</td></tr><tr><td>3</td><td>**Ранее:**

Можно было получить две смены на один день с пересечением по времени на одной ТТ. Это происходило из-за race condition при создании смен через клик по ячейке и копировании, из-за чего в графике появлялись "двойные" смены и затем выходили отклонениями

**Теперь:**

Логику выделения и контекстного меню переработали и добавили защиту от race condition

</td><td>Веб-приложение</td><td>[ALLY-5881](https://tracker.yandex.ru/ALLY-5881)</td></tr><tr><td>4</td><td>**Ранее:**

В логах сервера появлялись ошибки GraphQL при запросе changeLogAt:. Отправлялся запрос с пустым id

**Теперь:**

Добавили корректное условие пропуска запроса: changeLogAt не вызывается, если id отсутствует

</td><td>Веб-приложение</td><td>[ALLY-6321](https://tracker.yandex.ru/ALLY-6321)</td></tr><tr><td>5</td><td>**Ранее:**

В логах появлялась GraphQL-ошибка при logout

**Теперь:**

Добавили защиту: logout вызывается только если refreshToken реально существует, запрос обернут в try/catch, а локальная очистка сессии выполняется всегда

</td><td>Веб-приложение</td><td>[ALLY-6322](https://tracker.yandex.ru/ALLY-6322)</td></tr><tr><td>6</td><td>**Ранее:**

В панели "Настройки плана" при попытке отредактировать время начала/конца смены с клавиатуры значение не менялось. Курсор перемещался в конец поля, из-за чего нормальная правка времени была невозможна.

**Теперь:**

Исправили поведение полей. Время и даты редактируются с клавиатуры корректно

</td><td>Веб-приложение</td><td>[ALLY-6480](https://tracker.yandex.ru/ALLY-6480)</td></tr><tr><td>7</td><td>**Ранее:**

Клиентская сборка могла подтягивать серверный .env, из-за чего конфигурация сервера оказывалась доступной в JavaScript-бандле

**Теперь:**

Сборка разделена на клиентскую и серверную: фронтенд использует только отдельные публичные переменные. Серверные секреты больше не попадают в клиентский код

</td><td>Веб-приложение</td><td>[ALLY-6455](https://tracker.yandex.ru/ALLY-6455)</td></tr><tr><td>8</td><td>**Ранее:**

На Android приложение могло падать при открытии файла/изображения с ошибкой FileNotFoundException: open failed: ENOENT

**Теперь:**

Добавили обработку ошибок открытия/обрезки и загрузки файлов. Операции обернуты в try/catch, при недоступности файла приложение не падает, а показывает пользователю понятное сообщение

</td><td>Мобильное приложение</td><td>[ALLY-5461](https://tracker.yandex.ru/ALLY-5461)</td></tr><tr><td>9</td><td>**Ранее:**

Если при подключении Сберчаевых сервис vv tips-api возвращал 500, МП просто закрывало диалоги и не показывало пользователю никакого сообщения

**Теперь:**

Добавили понятную обработку ошибок, пользователь видит сообщение об ошибке и рекомендацию обратиться на ГЛ

</td><td>Мобильное приложение</td><td>[ALLY-6254](https://tracker.yandex.ru/ALLY-6254)</td></tr><tr><td>10</td><td>**Ранее:**

При открытии панели "Настройка пользователя" для некоторых пользователей на тестовом стенде возникала ошибка в консоли RangeError: Invalid time value

**Теперь:**

Исправлена конфигурация формы настроек пользователя. Данные с невалидными датами корректно обрабатываются, панель открывается без ошибки

</td><td>Веб-приложение</td><td>[ALLY-6318](https://tracker.yandex.ru/ALLY-6318)</td></tr><tr><td>11</td><td>**Ранее:**

При разовом входе в через "Код в приложении" сообщение с кодом могло не отправляться, но сервер возвращал успех, и пользователь не видел ошибку

**Теперь:**

Сервер возвращает ошибку с причиной noPushTokens, а клиенту показывается понятное сообщение: "Пуш-уведомления не настроены. Откройте приложение на телефоне и попробуйте снова."

</td><td>Веб-приложение / Мобильное приложение</td><td>[ALLY-6309](https://tracker.yandex.ru/ALLY-6309)</td></tr></tbody></table>

---

##### **Технические задачи:**

<table border="1" id="bkmrk-%E2%84%96-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8-%D0%9F%D1%80" style="border-collapse: collapse; width: 100%; height: 84.1408px;"><colgroup><col style="width: 4.82077%;"></col><col style="width: 64.0254%;"></col><col style="width: 19.0401%;"></col><col style="width: 11.9901%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">№</td><td style="height: 46.5938px;">Описание задачи</td><td style="height: 46.5938px;">Приложение</td><td style="height: 46.5938px;">Задача в Трекере</td></tr><tr style="height: 37.547px;"><td style="height: 37.547px;">1</td><td style="height: 37.547px;">Проведено обновление зависимостей мобильного приложения в рамках работы с техническим долгом</td><td style="height: 37.547px;">Веб-приложение</td><td style="height: 37.547px;">[ALLY-5408](https://tracker.yandex.ru/ALLY-5408)</td></tr><tr><td>2</td><td>Проведена оптимизация шрифтов в веб-клиенте в рамках улучшения производительности и рекомендаций Lighthouse</td><td>Веб-приложение</td><td>[ALLY-6410](https://tracker.yandex.ru/ALLY-6410)</td></tr><tr><td>3</td><td>Настроено полноценное локальное окружение для разработки на базе Docker. Добавлены PostgreSQL, Redis и сопутствующие сервисы для полноценного локального запуска приложения. Проект переведен на Node.js 24, исправлены миграции и сборка, удалены устаревшие зависимости и конфигурации.</td><td>Веб-приложение</td><td>[ALLY-5482](https://tracker.yandex.ru/ALLY-5482)</td></tr><tr><td>4</td><td>Реализован механизм фоновой предзагрузки данных. Также для форм добавлена поддержка истории изменений с возможностью просмотра предыдущих версий и реализовано кеширование данных форм для более быстрого повторного открытия.</td><td>Веб-приложение</td><td>[ALLY-5117](https://tracker.yandex.ru/ALLY-5117)

[ALLY-5121](https://tracker.yandex.ru/ALLY-5121)

</td></tr><tr><td>5</td><td>Проведена оптимизация производительности мобильного приложения. Пересмотрено использование useMemo, useCallback и memo</td><td>Мобильное приложение</td><td>[ALLY-3351](https://tracker.yandex.ru/ALLY-3351)</td></tr><tr><td>6</td><td>Мобильное приложение переведено с облачных EAS credentials на локальные ключи</td><td>Мобильное приложение</td><td>[ALLY-6316](https://tracker.yandex.ru/ALLY-6316)</td></tr><tr><td>7</td><td>Настроена автоматическая загрузка сборок мобильного приложения в Google Play и App Store, с поддержкой тестирования через TestFlight и Internal App Sharing. Реализован собственный механизм нумерации билдов с единым номером для Android и iOS</td><td>Мобильное приложение</td><td>[ALLY-5382](https://tracker.yandex.ru/ALLY-5382)</td></tr><tr><td>8</td><td>В мобильном приложении реализована полная поддержка синтаксиса Yandex Flavored Markdown в уведомлениях</td><td>Мобильное приложение</td><td>[ALLY-6344](https://tracker.yandex.ru/ALLY-6344)</td></tr><tr><td>9</td><td>Оптимизирована загрузка формы редактирования пользователя для роли “Помощник розницы"</td><td>Мобильное приложение</td><td>[ALLY-6466](https://tracker.yandex.ru/ALLY-6466)</td></tr><tr><td>10</td><td>Оптимизирована загрузка формы редактирования выхода для роли “Помощник розницы”</td><td>Мобильное приложение</td><td>[ALLY-6465](https://tracker.yandex.ru/ALLY-6465)</td></tr><tr><td>11</td><td>Чтение выходов в приложении переведено с таблицы userEvents на таблицу events по полю userId</td><td>Веб-приложение</td><td>[ALLY-5822](https://tracker.yandex.ru/ALLY-5822)</td></tr></tbody></table>