docs: release notes v2.21
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
27
releases/v2.21/RELEASE_NOTES.md
Normal file
27
releases/v2.21/RELEASE_NOTES.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# QuoteForge v2.21
|
||||
|
||||
Дата релиза: 2026-06-25
|
||||
Тег: `v2.21`
|
||||
|
||||
## Что нового
|
||||
|
||||
### Исправление: сбой синхронизации при дублях lot_name в прайслисте
|
||||
|
||||
При загрузке нового прайслиста (W-2026-06-25-001) синхронизация прерывалась с ошибкой `UNIQUE constraint failed: local_pricelist_items.pricelist_id, local_pricelist_items.lot_name` — в серверной таблице `qt_pricelist_items` оказались дубли `lot_name` для одного прайслиста. QF теперь дедуплицирует позиции при загрузке и пропускает повторные вхождения с предупреждением в лог.
|
||||
|
||||
### Исправление: race condition при параллельном запуске синхронизации
|
||||
|
||||
Если фоновый тикер и ручной запуск «Синхронизировать» срабатывали одновременно, оба потока пытались записать items в одну таблицу, что приводило к UNIQUE constraint ошибке. `SyncPricelists()` теперь защищена тем же мьютексом, что и фоновый `SyncPricelistsIfNeeded()`.
|
||||
|
||||
### Улучшение: ошибки отправки изменений попадают в лог синхронизации
|
||||
|
||||
`PushPendingChanges` теперь записывает результат в `sync_log` (тип `changes`) — ошибки отправки конфигураций и проектов на сервер видны в диалоге «Информация о синхронизации» и в support bundle.
|
||||
|
||||
### Улучшение: состояние клиента всегда отправляется на сервер после синхронизации
|
||||
|
||||
`reportClientSchemaState` теперь вызывается по завершении синхронизации через `defer` — актуальное состояние (включая ошибки) уходит на сервер независимо от того, завершился sync успехом или сбоем.
|
||||
|
||||
## Запуск на macOS
|
||||
|
||||
Снимите карантинный атрибут через терминал: `xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64`
|
||||
После этого бинарник запустится без предупреждения Gatekeeper.
|
||||
Reference in New Issue
Block a user