Changelog for Yametrika3x.

3.1.5-pl
==============
- Removed unused processors and old HTML grids
- Obsolete files are deleted from installed sites on upgrade
- Permissions: yametrika3x_view, _sync, _remove, _settings (added to the
   Administrator policy; Yametrika3xManagerPolicy and Yametrika3xViewerPolicy)
- Improved request validation in the manager
- Cron: one run at a time, interrupted runs are marked as errors, batch writes,
   new setting yametrika3x_weekly_sync_days (90)
- More reliable API requests: calendar date windows, per-section errors
- Fixed URL normalization of already stored pages
- Overview: yesterday vs the day before; "Users" marked as a sum of days
- Guzzle is taken from the MODX core

- Удалены неиспользуемые процессоры и старые HTML-гриды
- При обновлении устаревшие файлы удаляются с установленных сайтов
- Права: yametrika3x_view, _sync, _remove, _settings (добавлены в политику
   Administrator; политики Yametrika3xManagerPolicy и Yametrika3xViewerPolicy)
- Усилена проверка запросов в админке
- Cron: одновременно один запуск, прерванные запуски отмечаются ошибкой,
   пакетная запись, новая настройка yametrika3x_weekly_sync_days (90)
- Надёжнее запросы к API: окна по календарным датам, ошибки по разделам
- Исправлена нормализация URL уже сохранённых страниц
- Обзор: вчера в сравнении с позавчера; «Пользователи» помечены как сумма по дням
- Guzzle берётся из ядра MODX


3.1.4-pl
==============
- Ошибки API Яндекса больше не обрезаются на 120 символах: запросы идут через
   новый Yametrika3x\Api\MetrikaClient, который отдаёт в лог полный разобранный
   ответ Метрики (тип ошибки и текст целиком). Раньше причина отказа была не видна
- Период синхронизации дробится на окна по 30 дней (настройка
   yametrika3x_api_chunk_days). Если Метрика отвечает «Запрос слишком сложный»,
   окно делится пополам вплоть до одного дня, и только потом понижается точность
   (accuracy: по умолчанию -> low -> 0.01)
- Исправлена молчаливая потеря данных: у API Метрики limit по умолчанию равен 100,
   поэтому запрос посещаемости за год возвращал только 100 дней. Теперь limit
   задаётся явно, а ответ дочитывается постранично через offset
- Отказ одного раздела больше не обрывает всю синхронизацию: остальные разделы
   отрабатывают, а в журнал пишется список проблемных
- Предохранитель: если Метрика отклонила даже минимальный запрос (один день,
   нижняя ступень accuracy), оставшиеся разделы пропускаются без обращений к сети.


3.1.3-pl
==============
-- Исправлен Duplicate entry для key 'date_url' на длинных URL: уникальность страниц
   и поисковых фраз теперь считается по md5 полного значения (url_hash / phrase_hash),
   а не по префиксу колонки в 191 символ. Просмотры таких страниц больше не теряются
-- URL страниц нормализуется перед записью: рекламные метки (utm_*, calltouch_tm,
   etext, yclid и др.) вырезаются, просмотры складываются в одну строку.
   Список параметров — в настройке yametrika3x_strip_query_params, пустое значение
   отключает нормализацию
-- Автоочистка устаревших данных выполняется одним DELETE на таблицу вместо
   поштучного удаления объектов
-- Из таблицы страниц убрана колонка unique_visitors — она всегда была нулевой
   и нигде не отображалась

3.1.0-pl
==============
-- Гибридные гриды: таблицы всех отчётов переведены на Tabulator 6.5 (HTMX остался
   на модалках, формах и панели синхронизации)

3.0.2-pl
==============
-- Fixed bugs

3.0.1-pl
==============
-- Fixed bugs

3.0.0-pl
==============
-- Первый релиз
