-
v1.6.2 Stable
released this
2026-04-16 09:28:33 +03:00 | 126 commits to main since this releaseЧто изменено:
- на вкладке Storage в режиме сервера возвращена секция RAID Контроллеры
- в режиме СХД RAID по-прежнему скрыт
Downloads
-
released this
2026-04-09 15:08:47 +03:00 | 130 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 | 133 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 | 134 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 | 136 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 | 150 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
-
v1.5.0 Pre-Release
released this
2026-03-07 23:18:07 +03:00 | 160 commits to main since this releaseЧто нового?
- Добавлен импорт vendor workspace и связанный workflow обработки vendor spec.
- Добавлен экспорт pricing/конфигураций в новом сервисном контуре.
- Починена работа price levels в offline/local-first режиме.
- Приложение переведено на более жёсткий local-first runtime: обычная работа больше не зависит от прямых запросов в MariaDB вне sync.
- Удалены auth/RBAC и связанный мёртвый код для старой server-style модели.
- Усилен startup recovery локальной SQLite: битые read-only кэши теперь могут автоматически quarantine/reset, чтобы приложение запускалось.
- Переработан локальный каталог partnumber books и логика enrichment прайслистов через локальную копию qt_partnumber_book_items.
- Полностью выпилен legacy-механизм lot_partnumbers.
- Убрана неиспользуемая server-driven схема client local migrations.
- Исправлен генератор article для кейса с 1xINTEL в GPU-сегменте.
Как работает импорт xml
В проекте добавлена новая кнопка "Импорт выгрузки вендора"
В данной версии поддерживаются только xml файлы конфигуратора lenovo - dcsc.
Загружаются файлы-по одному.
После импорта распознанные аппаратные позиции добавляются в проект с соблюдением колличества и названия из конфигуратора
Распознавание спеки вендора
Этот функционал релизнут в версии v1.4 но допилен тут. В разделе конфигуратора добавились вкладки
На вкладке BOM вставляется спека вендора из буфера обмена, либо если использовали импорт xml - она уже добавлена автоматически.
p/n для которых есть сопоставления в базе размечаются автоматически.Если работу начали со вставки BOM то внизу таблицы есть кнопка "пересчитать эстимейт" которая заменяет содержимое калькулятора распознанными LOT:
Downloads
- Добавлен импорт vendor workspace и связанный workflow обработки vendor spec.
-
released this
2026-03-04 12:35:40 +03:00 | 168 commits to main since this releaseИмпорт вендорной спецификации (BOM)
- Полный цикл импорта BOM из вставки вендорного текста: разбор, привязка PN→LOT, автодополнение LOT.
- Страница Партномера — сводная таблица всех встреченных партномеров с привязками к LOT.
- Канонический механизм
lot_mappings: изменения всегда сохраняются через единую точку записи. - При импорте конфигурации проекта локальная вендорная спецификация больше не затирается.
Ценообразование
- Переименование: «цена поставщика» → «цена проекта» во всём интерфейсе и экспорте.
- Расширен CSV-экспорт прайсинга: добавлены дополнительные поля стоимости.
- Исправлены итоговые суммы по складу на вкладке прайсинга.
Таблица проектов
- Компактный макет: столбцы дат и названий сжаты для отображения большего числа строк.
- Исправлена нумерация строк при создании нового проекта.
BOM — UX
- Упрощена вставка BOM: фиксированный позиционный порядок столбцов.
- Добавлена кнопка «Очистить BOM» со сбросом на стороне сервера.
- Подсказка по формату рядом с полем вставки вендорного BOM.
Исправления
- Прайслисты: корректная работа при ограниченных правах БД; активы из встроенных ресурсов.
- Синхронизация: дополнение недостающих позиций для уже существующих локальных прайслистов.
- Миграции БД: новые SQLite-таблицы создаются через
AutoMigrateвместо хардкодных миграций. - BOM: сохранение локальной вендорной спецификации при импорте конфига.
Запуск на macOS
Снимите карантинный атрибут через терминал:
xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64
После этого бинарник запустится без предупреждения Gatekeeper.Downloads
-
v1.3.5 Pre-Release
released this
2026-02-24 15:13:41 +03:00 | 191 commits to main since this releaseСинхронизация прайслистов теперь догружает позиции для уже существующих локально прайслистов, если локальный кэш позиций пуст.
Исправлен кейс 0 позиций в прайслисте при частично заполненном локальном кэше (local_pricelists есть, local_pricelist_items пусты).
Добавлен graceful fallback при ограниченных правах MariaDB:
если нет SELECT на lot_partnumbers и/или stock_log, синк прайслиста больше не падает;
позиции и цены сохраняются без enrichment (могут отсутствовать остатки и partnumbers).
Убран fallback на файловые templates/static рядом с бинарником:
приложение всегда использует embedded-ресурсы из бинарника.
Актуализирована документация по правам MariaDB (03-database.md):
добавлены обязательные SELECT на lot_partnumbers и stock_log для полноценной синхронизации прайслистов.Downloads
-
released this
2026-02-24 15:09:12 +03:00 | 193 commits to main since this releaseИсправлен кейс, когда в списке прайслистов отображалось 0 позиций при наличии локальных “шапок” прайслистов.
Теперь при синхронизации приложение догружает позиции для уже существующих локально прайслистов, если local_pricelist_items пусты.
Добавлен graceful fallback при ограниченных правах MariaDB.
Если у пользователя нет SELECT на RFQ_LOG.lot_partnumbers и/или RFQ_LOG.stock_log, синхронизация позиций прайслиста больше не падает.
Позиции и цены прайслиста сохраняются без enrichment (могут отсутствовать partnumbers и остатки available_qty).
Убран fallback на файловые web/templates и web/static рядом с бинарником.
Приложение теперь всегда использует embedded-ресурсы из бинарника.
Это делает поставку более предсказуемой на клиентских машинах.
Обновлена документация по правам MariaDB (03-database.md).
Добавлены обязательные SELECT-права на lot_partnumbers и stock_log для полноценной синхронизации прайслистов.
Рекомендации после обновленияОбновить клиент до v1.3.4.
Нажать Синхронизация.Downloads