• v2.22 7d190cc7a8

    mchus released this 2026-06-26 08:52:22 +03:00 | 2 commits to main since this release

    Дата релиза: 2026-06-26
    Тег: v2.22

    Что нового

    Исправления

    • MB-автокомплит в конфигураторе теперь работает в offline-режиме. Корневая причина: прайслист мог быть синхронизирован до введения нормализации имён лотов, из-за чего SQLite хранил их в исходном регистре (MB_AMD_2.Rome_...). Запрос на поиск цены отправлял уже нормализованное имя (MB_AMD_2.ROME_...), IN-сравнение в SQLite регистрозависимо — совпадений не было, цена возвращалась как null, и автокомплит показывал пустой список. Все запросы к local_pricelist_items по lot_name переведены на UPPER(lot_name).

    • Удалён мёртвый код инференса категории из имени лота. Функция getCategoryFromLotName на фронтенде выводила категорию из префикса лота (DKC_AFF_A1KDKC) как fallback. Категория всегда приходит из прайслиста; функция удалена. Позиции без категории корректно попадают во вкладку «Other».

    • Удалена таблица local_components и весь связанный с ней код. Источник данных для компонентов — только local_pricelist_items. Убраны маршрут POST /api/sync/components, поля ComponentsSynced и LastComponentSync в ответах синхронизации.

    • Support bundle расширен диагностическими файлами: latest_pricelist_items.json (все позиции активного estimate-прайслиста), autocomplete_lots.json (позиции по категориям с флагом has_price), local.db (полная копия SQLite-базы).

    • Регистронезависимые сравнения lot_name на фронтенде: Set-коллекции для склада, добавленных позиций и корзины BOM теперь нормализуют ключи через .toUpperCase().

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v2.19 4900cd073c

    mchus released this 2026-06-23 09:33:31 +03:00 | 11 commits to main since this release

    QuoteForge v2.19

    Дата релиза: 2026-06-23
    Тег: v2.19

    Что нового

    Серверно-управляемые настройки конфигуратора

    Типы устройств, структура вкладок и фильтры категорий теперь приезжают с сервера вместо жёстко заданных JS-констант.

    • новая таблица qt_settings на стороне сервера (контракт в bible-local/server-contract-qt-settings.md);
    • QF синхронизирует qt_settingslocal_qt_settings (SQLite) после каждой синхронизации компонентов;
    • новый endpoint GET /api/configurator-settings отдаёт четыре настройки: config_types, tab_config, always_visible_tabs, required_categories;
    • при недоступности сервера или отсутствии таблицы QF автоматически использует прежние захардкоженные значения — поведение не меняется.

    Динамический выбор типа оборудования

    • модальное окно «Новая конфигурация» загружает типы устройств с сервера: названия и количество кнопок определяются в qt_settings.config_types;
    • добавление новых типов устройств не требует обновления QF.

    Серверно-управляемая фильтрация категорий

    • конфигуратор фильтрует LOT-категории по списку из qt_settings.config_types[].categories;
    • структура вкладок обновляется из qt_settings.tab_config (порядок вкладок, подразделы, single-select режим);
    • бейдж на вкладке при незаполненных обязательных категориях (qt_settings.required_categories).

    Прочее

    • тайтлы страниц переименованы с OFS на QFS.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.18 4982adbe41

    Release v1.18 Stable

    mchus released this 2026-06-18 14:25:55 +03:00 | 14 commits to main since this release

    QuoteForge v1.18

    Дата релиза: 2026-06-18
    Тег: v1.18

    Предыдущий релиз: v1.17

    Ключевые изменения

    • BOM: поддержка формата <qty>x <description> при импорте Nx-спецификаций;
    • BOM: приоритет cart-LOT в дропдауне, корректный qtyMismatch при lot_qty_per_pn > 1;
    • CSV экспорт: bundle (1 PN → N LOT) разворачивается в отдельные строки;
    • ценообразование: ручная цена (buy/sale) сохраняется и экспортируется в CSV;
    • ценообразование: таблица использует qty из корзины как источник истины;
    • ценообразование: правильный порядок строк (MB→CPU→MEM→…) в pricing CSV и вкладке Ценообразование при отсутствии BOM;

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.16 6df262b8ee

    Release v1.16 Stable

    mchus released this 2026-06-16 17:29:28 +03:00 | 23 commits to main since this release

    QuoteForge v1.16

    Дата релиза: 2026-06-16
    Тег: v1.16

    Предыдущий релиз: v1.15

    Ключевые изменения

    • self-heal застрявших pending changes: конфигурации со ссылкой на удалённый проект теперь автоматически переназначаются на «Без проекта» вместо вечной ошибки;
    • авторемонт очереди (RepairPendingChanges) запускается автоматически перед каждым push-циклом;
    • после 20 неудачных попыток неисправимые записи удаляются из очереди (логируются как ERROR);
    • неизвестные entity_type и operation в очереди дропаются с предупреждением вместо блокировки;
    • детальная диагностика в qt_client_schema_state.last_sync_error_text: теперь JSON-массив с uuid/op/attempts/error по каждому застрявшему изменению;
    • книги партномеров синхронизируются автоматически вместе с прайслистами.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.14 24c34eb0e1

    Release v1.14 Stable

    mchus released this 2026-06-16 09:17:10 +03:00 | 27 commits to main since this release

    QuoteForge v1.14

    Дата релиза: 2026-06-16
    Тег: v1.14

    Предыдущий релиз: v1.13

    Ключевые изменения

    • добавлен импорт человекочитаемого текстового BOM формата <описание> - <кол-во> шт.
      (с необязательным заголовком, оканчивающимся на , в составе:) — как при загрузке файла
      через POST /api/projects/:uuid/vendor-import, так и при вставке в конфигураторе;
    • заголовок конфигурации определяется по маркеру , в составе: с любым префиксом
      (Сервер X3 и Вычислительный GPU сервер X3 → модель X3);
    • парсинг устойчив к пробелам в начале/конце строки (в P/N не попадает лишний пробел),
      а также к запятым и дефисам внутри описания (RAID0,1,10, 8-GPU-2304GB);
    • вставка BOM в конфигураторе и импорт файла используют единый серверный парсер
      (POST /api/vendor-spec/parse-text) — дублирующая логика разбора на фронтенде удалена;
    • сабмодуль bible обновлён до актуальных контрактов (build-version-display,
      local-first-recovery, резервные копии миграций).

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.12 a81947b852

    v1.12 Stable

    mchus released this 2026-06-03 13:46:24 +03:00 | 36 commits to main since this release

    фикс режиме работы кнопки скопировать когфин

    Downloads
  • v1.10 5d5af07fc5

    v1.10 Stable

    mchus released this 2026-06-02 14:06:18 +03:00 | 40 commits to main since this release

    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 для всех категорий — исправлено.

    Запуск на macOS

    Снимите карантинный атрибут через терминал: xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
    После этого бинарник запустится без предупреждения Gatekeeper.

    Downloads
  • v1.9 55acbe138b

    mchus released this 2026-05-19 12:37:47 +03:00 | 55 commits to main since this release

    • Вынести sortConfigsByLine() — устранить дублирование sort.Slice
      в ProjectToExportData и ProjectToPricingExportData
    • Добавить ConfigToPricingExportData() и ExportConfigPricingCSV handler
    • Зарегистрировать POST /api/configs/:uuid/export/pricing
    • Заменить клиентский DOM-скрапинг exportPricingCSV() на fetch к новому
      endpoint; артикул теперь включается через pricingConfigSummaryRow
    Downloads
  • v1.8 8b5e04168a

    release: v1.8 Stable

    mchus released this 2026-04-28 16:56:45 +03:00 | 58 commits to main since this release

    QuoteForge v1.8

    Дата релиза: 2026-04-28
    Тег: v1.8

    Ключевые изменения

    • исправлен sync прайслистов при конфликте local_pricelists.server_id: сохранение локального снапшота стало idempotent через upsert;
    • сохранение нового локального снапшота прайслиста теперь атомарно заменяет строки внутри одной транзакции;
    • sync обновляет метаданные уже существующих локальных прайслистов;
    • устаревшие sync/export тесты приведены к актуальному контракту, go test ./... проходит полностью.
    Downloads
  • v1.6.2 83a3202bdf

    v1.6.2 Stable

    mchus released this 2026-04-16 09:28:33 +03:00 | 62 commits to main since this release

    Что изменено:

    • на вкладке Storage в режиме сервера возвращена секция RAID Контроллеры
    • в режиме СХД RAID по-прежнему скрыт
    Downloads