-
v1.10 Stable
released this
2026-06-02 14:06:18 +03:00 | 6 commits to main since this releaseQuoteForge 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
- Support Bundle — кнопка-иконка в шапке рядом с именем пользователя скачивает ZIP-архив с диагностикой: версия приложения, статистика локальной БД, статус подключения с TCP-пингом до сервера, история синхронизаций (
-
released this
2026-05-19 12:37:47 +03:00 | 21 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
- Вынести sortConfigsByLine() — устранить дублирование sort.Slice
-
release: v1.8 Stable
released this
2026-04-28 16:56:45 +03:00 | 24 commits to main since this releaseQuoteForge v1.8
Дата релиза: 2026-04-28
Тег:v1.8Ключевые изменения
- исправлен sync прайслистов при конфликте
local_pricelists.server_id: сохранение локального снапшота стало idempotent через upsert; - сохранение нового локального снапшота прайслиста теперь атомарно заменяет строки внутри одной транзакции;
- sync обновляет метаданные уже существующих локальных прайслистов;
- устаревшие sync/export тесты приведены к актуальному контракту,
go test ./...проходит полностью.
Downloads
- исправлен sync прайслистов при конфликте
-
v1.6.2 Stable
released this
2026-04-16 09:28:33 +03:00 | 28 commits to main since this releaseЧто изменено:
- на вкладке Storage в режиме сервера возвращена секция RAID Контроллеры
- в режиме СХД RAID по-прежнему скрыт
Downloads
-
released this
2026-04-09 15:08:47 +03:00 | 32 commits to main since this releaseAmpere, Hopper, Blackwell now produce AMP/HOP/BWL suffixes (like ADA)
so RTX cards across generations are distinguishable: RTX6000ADA vs
RTX6000BWL. LOVELACE remains a skip token as it duplicates ADA info.Downloads
-
released this
2026-04-03 17:55:26 +03:00 | 35 commits to main since this release- Add FOB/DDP basis to export options; DDP multiplies all prices ×1.3
- Rename export file from "pricing" to "{FOB|DDP} {variant}" (e.g. "FOB v1")
- Fix server article missing from CSV summary row (PN вендора column)
- Skip per-row breakdown when neither LOT nor BOM is selected
- Remove empty separator rows between configurations
- Redesign export modal: split into Артикул / Цены / Базис поставки sections
Downloads
-
v1.5.8 Stable
released this
2026-04-02 10:53:36 +03:00 | 36 commits to main since this release- Set PRAGMA journal_mode=WAL + synchronous=NORMAL on SQLite open;
eliminates read blocking during background pricelist sync writes - Replace N+1 per-lot price loop in QuoteService local fallback with
GetLocalPricesForLots batch query (120 queries → 3 per price-levels call) - Add CountAllPricelistItems, CountComponents, DBFileSizeBytes to LocalDB
- Report local_pricelist_count, pricelist_items_count, components_count,
db_size_bytes in qt_client_schema_state for performance diagnostics
Downloads
- Set PRAGMA journal_mode=WAL + synchronous=NORMAL on SQLite open;
-
released this
2026-03-30 12:34:57 +03:00 | 38 commits to main since this releaseSyncPricelistsIfNeeded was called synchronously in Create(), blocking
the HTTP response for several seconds while pricelist data was fetched.
Users clicking multiple times caused 6+ duplicate configurations.- Run SyncPricelistsIfNeeded in a goroutine so Create() returns immediately
- Add TryLock mutex to SyncPricelistsIfNeeded to skip concurrent calls
Downloads
-
QuoteForge v1.5.4 Stable
released this
2026-03-16 08:33:53 +03:00 | 52 commits to main since this releaseДата релиза: 2026-03-16
Тег:v1.5.4Предыдущий релиз:
v1.5.0Ключевые изменения
- pricing tab переработан: закупка и продажа разделены на отдельные таблицы с ценами за 1 шт.;
- экран прайслиста переработан под разные типы источников; удалены misleading-колонки
Поставщикиpartnumbers; - runtime и startup ужесточены: локальный клиент принудительно работает только на loopback, конфиг автоматически нормализуется;
- добавлены действия с вариантом и унифицированы правила именования
_копиядля вариантов и конфигураций; - исправлен CSV-экспорт прайсинговых таблиц в конфигураторе под Excel-совместимый формат Excel-friendly;
- таблица проектов переработана: дата последней правки, tooltip с деталями, отдельный автор, компактные действия и ссылка на трекер;
- sync больше не подменяет
updated_atпроектов временем синхронизации; - добавлена одноразовая утилита
cmd/migrate_project_updated_atдля пересинхронизацииupdated_atпроектов из MariaDB в локальную SQLite; - runtime config, release notes и
bible-local/очищены и приведены к актуальной архитектуре; scripts/release.shбольше не затирает существующийRELEASE_NOTES.md.
Summary
UI и UX
- вкладка ценообразования теперь разделена на отдельные таблицы закупки и продажи;
- список проектов переработан: новая колонка даты, отдельный автор, tooltip с деталями, компактные действия, ссылка на трекер;
- для вариантов добавлены действия переименования, переноса и копирования;
- копии вариантов и конфигураций теперь именуются единообразно:
_копия,_копия2,_копия3.
Прайслисты и экспорт
- экран прайслиста переработан под разные типы источников;
- из прайслистов убраны misleading-колонки
Поставщикиpartnumbers; - CSV-экспорт прайсинговых таблиц в конфигураторе приведён к Excel-совместимому формату.
Runtime и sync
- локальный runtime нормализует
server.hostк127.0.0.1и переписывает некорректный runtime config; - sync перестал подменять
updated_atпроектов временем локальной синхронизации; - добавлена утилита
cmd/migrate_project_updated_atдля восстановления локальных дат проектов с сервера.
Документация и release tooling
bible-local/сокращён до актуальных архитектурных контрактов;- release notes и release-структура приведены к одному формату;
scripts/release.shтеперь сохраняет существующийRELEASE_NOTES.mdи не затирает его шаблоном.
Затронутые области
cmd/qfs/;cmd/migrate_project_updated_at/;internal/localdb/;internal/services/project.go;internal/services/sync/service.go;internal/handlers/pricelist.go;web/templates/pricelist_detail.html;web/templates/index.html;web/templates/project_detail.html;web/templates/projects.html;web/templates/configs.html;bible-local/.
Совместимость
- схема данных не меняется;
- серверные SQL-миграции не требуются;
- для уже испорченных локальных дат проектов можно один раз запустить
go run ./cmd/migrate_project_updated_at -apply.
Downloads