# 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.