From 1de66d6f333e5f5342a6b94c5f5382f31cb47242 Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Tue, 2 Jun 2026 14:31:32 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20release=20notes=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?v1.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- releases/v1.10/RELEASE_NOTES.md | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 releases/v1.10/RELEASE_NOTES.md diff --git a/releases/v1.10/RELEASE_NOTES.md b/releases/v1.10/RELEASE_NOTES.md new file mode 100644 index 0000000..5c5b942 --- /dev/null +++ b/releases/v1.10/RELEASE_NOTES.md @@ -0,0 +1,38 @@ +# QuoteForge v1.10 + +Дата релиза: 2026-06-02 +Тег: `v1.10` + +## Что нового + +### Новые возможности + +- **Support Bundle** — кнопка-иконка в шапке рядом с именем пользователя скачивает ZIP-архив с диагностикой: версия приложения, статистика локальной БД, статус подключения с TCP-пингом до сервера, история синхронизаций (`sync_log`), список скачанных прайслистов, системные метрики (память, диск), состояние readiness-блокировки и лог-файл приложения. +- **Автосинхронизация компонентов** — при первом запуске с пустой таблицей компонентов фоновый воркер автоматически скачивает каталог из MariaDB. Новые пользователи сразу видят все вкладки и автокомплит артикулов без ручной синхронизации. +- **Импорт собственного CSV QuoteForge** — файлы, экспортированные из QuoteForge, можно импортировать обратно в конфигурацию. +- **Кнопка «Обновить цены» на странице варианта проекта** — обновление цен доступно прямо со страницы проекта. +- **Импорт BOM Inspur в формате PN×qty** — поддержка формата `артикул × количество` при импорте Inspur-спецификаций. + +### Исправления + +- **«Не докачано» исчезает когда всё на месте** — исправлена логика `NeedSync`: при наличии подключения всегда сравниваем реальные версии с сервером, не ориентируясь на давность последнего синка. Устраняет ситуацию когда бейдж висел вечно после сетевого сбоя, хотя все прайслисты уже были скачаны. +- **Синхронизация прайслистов через медленное соединение** — увеличен `WriteTimeout` с 30 с до 10 мин. При высокой задержке до сервера (VPN, >300 мс) кнопка «Синхронизировать» больше не зависает без обратной связи. +- **ALTER-спам в логах** — устранены повторяющиеся WARN `ALTER command denied` каждые 5 минут. DDL на `qt_client_schema_state` выполняется не более одного раза за жизнь процесса и только если колонки реально отсутствуют. +- **Галочка «Создать копию»** включена по умолчанию в обоих диалогах клонирования. +- **Сортировка категорий в CSV-экспорте** — исправлена сортировка без учёта регистра и правильный порядок (MB → CPU → MEM → RAID → диски → GPU → NIC → HBA → PSU → ACC). +- **`/api/categories` возвращал `display_order: 0`** для всех категорий — исправлено. + +## Для администраторов + +При обновлении с v1.9 выполните миграцию на сервере: + +```bash +go run ./cmd/qfs -migrate +``` + +Это добавит колонку `hostname` в `qt_client_schema_state`, после чего клиентские приложения перестанут получать ошибку `ALTER command denied`. + +## Запуск на macOS + +Снимите карантинный атрибут через терминал: `xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64` +После этого бинарник запустится без предупреждения Gatekeeper.