Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
687ab99d85 | ||
|
|
ce7c8551be | ||
|
|
3788492089 |
23
releases/v2.23/RELEASE_NOTES.md
Normal file
23
releases/v2.23/RELEASE_NOTES.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# QuoteForge v2.23
|
||||||
|
|
||||||
|
Дата релиза: 2026-06-26
|
||||||
|
Тег: `v2.23`
|
||||||
|
|
||||||
|
## Что нового
|
||||||
|
|
||||||
|
### Исправления
|
||||||
|
|
||||||
|
- **Конфигуратор больше не зависает на «Загрузка...».** При открытии сохранённой конфигурации поле `category` у позиций корзины было `undefined` (в `config.items` хранятся только `lot_name/quantity/unit_price`), что приводило к `TypeError` в JS. Теперь после загрузки `allComponents` корзина обогащается категориями из справочника компонентов.
|
||||||
|
|
||||||
|
- **Регистронезависимые сравнения категорий в конфигураторе.** Все сравнения `category` переведены на хелпер `ciStr()` вместо принудительного `.toUpperCase()` — интерфейс показывает категории как есть, логика сравнения регистронезависима.
|
||||||
|
|
||||||
|
- **Вкладка Other показывает только компоненты без назначенной категории.** Исправлена ошибка при которой компоненты DKC/CTL/ENC попадали в Other при режиме «server»: `ASSIGNED_CATEGORIES` пересобирался из отфильтрованного списка, а не из полного статического. Теперь используется `_allCategories`.
|
||||||
|
|
||||||
|
- **Исправлена ошибка «record not found» при синхронизации проектов.** `UpsertByUUID` передавал ненулевой `ID` в `INSERT … ON DUPLICATE KEY UPDATE`, из-за чего MariaDB разрешала коллизию по первичному ключу чужой строки, не обновляя `uuid`, — последующий `SELECT` не находил запись. Теперь `project.ID` сбрасывается в `0` до вставки.
|
||||||
|
|
||||||
|
- **Устранён бесконечный retry при ошибках синхронизации на стороне сервера.** `RepairPendingChanges` сбрасывал счётчик попыток даже если локальные данные не менялись, что создавало бесконечный цикл при серверных ошибках. Repair-функции теперь возвращают `(bool, error)` и сброс происходит только при `modified=true`.
|
||||||
|
|
||||||
|
## Запуск на macOS
|
||||||
|
|
||||||
|
Снимите карантинный атрибут через терминал: `xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64`
|
||||||
|
После этого бинарник запустится без предупреждения Gatekeeper.
|
||||||
15
releases/v2.24/RELEASE_NOTES.md
Normal file
15
releases/v2.24/RELEASE_NOTES.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# QuoteForge v2.24
|
||||||
|
|
||||||
|
Дата релиза: 2026-06-26
|
||||||
|
Тег: `v2.24`
|
||||||
|
|
||||||
|
## Что нового
|
||||||
|
|
||||||
|
### Исправления
|
||||||
|
|
||||||
|
- **Исправлен ReferenceError в конфигураторе при выборе компонента в секционированных вкладках (Storage, PCI).** Переменная `sectionCategories` не была определена — опечатка, должно быть `section.categories`. Ошибка возникала при клике на элемент автокомплита во вкладках с секциями.
|
||||||
|
|
||||||
|
## Запуск на macOS
|
||||||
|
|
||||||
|
Снимите карантинный атрибут через терминал: `xattr -d com.apple.quarantine /path/to/qfs-darwin-arm64`
|
||||||
|
После этого бинарник запустится без предупреждения Gatekeeper.
|
||||||
@@ -1565,7 +1565,7 @@ function renderMultiSelectTabWithSections(sections) {
|
|||||||
|
|
||||||
// Get cart items for this section
|
// Get cart items for this section
|
||||||
const sectionItems = tabItems.filter(item => {
|
const sectionItems = tabItems.filter(item => {
|
||||||
return sectionCategories.some(c => ciStr(c) === ciStr(item.category));
|
return section.categories.some(c => ciStr(c) === ciStr(item.category));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Section header
|
// Section header
|
||||||
|
|||||||
Reference in New Issue
Block a user