-
v1.5.8 Stable
released this
2026-04-02 10:53:36 +03:00 | 0 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 | 2 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 | 16 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 | 26 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 | 34 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 | 57 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 | 59 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
-
Release v1.3.2 Pre-Release
released this
2026-02-19 18:48:01 +03:00 | 65 commits to main since this releaseSummary
Release focuses on stability and data integrity for local configurations. Added configuration revision history, stronger recovery for broken local sync/version states, improved sync self-healing, and clearer API error logging.
Changes
Configuration Revisions
- Added full local configuration revision flow with storage and UI support.
- Introduced revisions page/template and backend plumbing for browsing revisions.
- Prevented duplicate revisions when content did not actually change.
Local Data Integrity and Recovery
- Added migration and snapshot support for local configuration version data.
- Hardened updates for legacy/orphaned configuration rows:
- allow update when project UUID is unchanged even if referenced project is missing locally;
- recover gracefully when
current_version_idis stale or version rows are missing.
- Added regression tests for orphan-project and missing-current-version scenarios.
Sync Reliability
- Added smart self-healing path for sync errors.
- Fixed duplicate-project sync edge cases.
API and Logging
- Improved HTTP error mapping for configuration updates (
404/403instead of generic500in known cases). - Enhanced request logger to capture error responses (status, response body snippet, gin errors) for failed requests.
UI and Export
- Updated project detail and index templates for revisions and related UX improvements.
- Updated export pipeline and tests to align with revisions/project behavior changes.
Breaking Changes
None identified.
Downloads
-
Changes since v1.3.0: Pre-Release
released this
2026-02-13 19:33:16 +03:00 | 73 commits to main since this releaseRelease Notes — v1.3.1
Что нового
- Проекты: добавлены
codeиvariant(уникальность по связке),nameстал необязательным. - UI проектов: обновлена таблица, кликабельные коды/варианты, новый вариант через кнопку.
- Breadcrumbs: единый стиль, кликабельные переходы и домик “все проекты”.
- Квотатор: навигация по проектам/вариантам через breadcrumbs.
Миграции и совместимость
- Добавлены миграции для
code,variantиnullable nameв MariaDB и SQLite. - Перезагрузка локальной БД теперь не сбрасывает параметры подключения.
- Дедупликация проектов по
codeв интерфейсе и улучшенная синхронизация вариантов.
Исправления и улучшения
- Корректная обработка
NULL nameв UI и API. - Стабильное формирование кодов/вариантов и уникальность на уровне БД.
- Улучшенные элементы интерфейса (варианты в виде чипов, клики по ним).
Downloads
- Проекты: добавлены
-
Release v1.3.0 (2026-02-11) Pre-Release
released this
2026-02-11 19:24:25 +03:00 | 79 commits to main since this releaseSummary
Introduced article generation with pricelist categories, added local configuration storage, and expanded sync/export capabilities. Simplified article generator compression and loosened project update constraints.
Changes
Main Features: Articles + Pricelist Categories
- Article generation pipeline
- New generator and tests under
internal/article/ - Category support with test coverage
- New generator and tests under
- Pricelist category integration
- Handler and repository updates
- Sync backfill test for category propagation
Local Configuration Storage
- Local DB support
- New localdb models, converters, snapshots, and migrations
- Local configuration service for cached configurations
Export & UI
- Export handler updates for article data output
- Configs and index templates adjusted for new article-related fields
Behavior Changes
- Cross-user project updates allowed
- Removed restriction in project service
- Article compression refinement
- Generator logic simplified to reduce complexity
Breaking Changes
None identified. Existing APIs remain intact.
Files Modified
internal/article/*- Article generator + categories + testsinternal/localdb/*- Local DB models, migrations, snapshotsinternal/handlers/export.go- Export updatesinternal/handlers/pricelist.go- Category handlinginternal/services/sync/service.go- Category backfill logicweb/templates/configs.html- Article field updatesweb/templates/index.html- Article field updates
Stats: 33 files changed, 2059 insertions(+), 329 deletions(-)
Commits
5edffe8- Add article generation and pricelist categoriese355903- Allow cross-user project updatese58fd35- Refine article compression and simplify generator
Testing Checklist
- Tests not run (not requested)
Migration Notes
- New migrations:
022_add_article_to_configurations.sql023_add_server_model_to_configurations.sql024_add_support_code_to_configurations.sql- Ensure migrations are applied before running v1.3.0
Downloads
- Article generation pipeline