diff --git a/releases/v1.0.3/RELEASE_NOTES.md b/releases/v1.0.3/RELEASE_NOTES.md new file mode 100644 index 0000000..52a2ecb --- /dev/null +++ b/releases/v1.0.3/RELEASE_NOTES.md @@ -0,0 +1,51 @@ +# QuoteForge v1.0.3 + +Дата релиза: 2026-02-06 +Тег: `v1.0.3` +Диапазон изменений: `v1.0.2..v1.0.3` + +## Что нового + +- Добавлена страница управления проектами `/projects` с: + - датой и временем создания проекта; + - сортировкой по названию и дате создания; + - серверной пагинацией; + - фильтром по автору в заголовке таблицы. +- Добавлена отдельная вкладка `Статус синхронизации` на уровне `Алерты / Компоненты / Прайслисты`. +- Во вкладке статуса синхронизации отображаются: + - пользователь; + - версия приложения; + - статус (`онлайн` или относительное время последней синхронизации). + +## Изменения синхронизации + +- Реализован heartbeat синхронизации пользователей в MariaDB: `qt_pricelist_sync_status`. +- Добавлен API `GET /api/sync/users-status` для UI статуса синхронизации. +- Логика онлайн-статуса рассчитана от интервала фоновой синхронизации: `5 минут + 10%`. +- В heartbeat фиксируется версия приложения (`app_version`). + +## Важные исправления + +- Исправлено восстановление отсутствующей серверной конфигурации при push обновлений. +- Исправлено экранирование паролей в MySQL DSN в setup. +- Улучшена логика запуска SQL-миграций на старте при отсутствии прав/необходимости. +- Обновлена логика пересчета прайслистов через админский price-refresh. + +## Миграции и совместимость + +Добавлены SQL-миграции: + +- `migrations/010_add_pricelist_sync_status.sql` +- `migrations/011_add_app_version_to_pricelist_sync_status.sql` + +Релиз совместим с предыдущей веткой `v1.0.x`; новая таблица синхронизации создается автоматически. + +## Коммиты в релизе + +- `b1b50ce` Add projects table controls and sync status tab with app version +- `6ab1e98` sync: recover missing server config during update push +- `a1d2192` Fix MySQL DSN escaping for setup passwords and clarify DB user setup +- `a90c07c` update stale files list +- `e9307c4` Apply remaining pricelist and local-first updates +- `1b48401` Use admin price-refresh logic for pricelist recalculation +- `4a86f7b` fix: skip startup sql migrations when not needed or no permissions