|
4 | 4 |
|
5 | 5 | ## Навигация |
6 | 6 |
|
7 | | -- **Текущий месяц:** [Февраль 2026](#февраль-2026) (ниже) |
8 | | -- **Предыдущий месяц:** [Январь 2026](#январь-2026) (ниже) |
| 7 | +- **Текущий месяц:** [Март 2026](#март-2026) (ниже) |
| 8 | +- **Предыдущий месяц:** [Февраль 2026](#февраль-2026) (ниже) |
| 9 | +- **Ещё раньше:** [Январь 2026](#январь-2026) (ниже) |
9 | 10 | - **Архив по месяцам:** |
10 | 11 | - [Декабрь 2025](changelogs/2025-12.md) |
11 | 12 | - [Ноябрь 2025](changelogs/2025-11.md) |
|
14 | 15 |
|
15 | 16 | --- |
16 | 17 |
|
| 18 | +## Март 2026 |
| 19 | + |
| 20 | +### 🚀 Версия 1.6.0-beta1 |
| 21 | + |
| 22 | +**Тип релиза:** MINOR (beta) — httpOnly cookie auth, отмена заказов, community PRs |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +#### ✨ Добавлено |
| 27 | + |
| 28 | +**Отмена заказа покупателем (#119, Issue #117):** |
| 29 | +- API endpoint `POST /api/v1/customer/orders/{id}/cancel` с авторизацией |
| 30 | +- Кнопка «Отменить заказ» в списке заказов и на странице деталей |
| 31 | +- Настройка `ms3_customer_cancel_allowed_statuses` — разрешённые статусы для отмены (по умолчанию: новый, оплаченный) |
| 32 | + |
| 33 | +**Запоминание активной вкладки товара (#120, Issue #111):** |
| 34 | +- При переключении вкладки ключ сохраняется в `localStorage`, при перезагрузке восстанавливается |
| 35 | +- Настройка `ms3_product_remember_tabs` (по умолчанию включена) |
| 36 | + |
| 37 | +#### 🐛 Исправлено |
| 38 | + |
| 39 | +- **httpOnly cookie token architecture (#124):** единый httpOnly cookie `ms3_token` вместо 4 несинхронизированных хранилищ (localStorage, `$_SESSION`, `ms3_customer_tokens`, `msCustomer.token`). Middleware injection (`$_COOKIE` → `$_REQUEST`) для обратной совместимости. Корзина сохраняется при логине/регистрации. |
| 40 | +- Корректное отображение кнопки «Сохранить» для товаров и категорий в MODX 3.2 (#118) — явное вычисление `canSave`/`locked` с учётом `save_document`, компонентных permissions и `checkPolicy('save')` |
| 41 | +- Формат `data` в политиках доступа для совместимости с апгрейдом MODX (#107, Issue #100) — устранено двойное JSON-кодирование при сборке пакета |
| 42 | + |
| 43 | +#### ⚠️ Breaking changes |
| 44 | + |
| 45 | +- **Register.php response format (#124):** поле `token` изменено с объекта `{token, expires_at}` на строку. `expires_at` вынесен на верхний уровень ответа. Кастомные темы, обращающиеся к `result.object.token.token`, потребуют обновления. |
| 46 | + |
| 47 | +--- |
| 48 | + |
17 | 49 | ## Февраль 2026 |
18 | 50 |
|
19 | 51 | ### 🚀 Версия 1.5.0-beta1 |
|
56 | 88 |
|
57 | 89 | #### 🐛 Исправлено |
58 | 90 |
|
59 | | -- **httpOnly cookie token architecture (#124):** единый httpOnly cookie `ms3_token` вместо 4 несинхронизированных хранилищ. Middleware injection для обратной совместимости. Корзина сохраняется при логине/регистрации. |
60 | 91 | - Исправлены неточности в лексиконах (Issue #21) |
61 | 92 | - Удалён `action` из конфигурации меню miniShop3 (#94) |
62 | 93 | - Очистка EAV-опций из формы товара |
|
67 | 98 | - Корректные дефолтные ID статусов заказов с fallback для нулевых значений |
68 | 99 | - `getIterator` для msProduct/msCategory — добавлен `class_key` в критерии |
69 | 100 |
|
70 | | -#### ⚠️ Breaking changes |
71 | | - |
72 | | -- **Register.php response format (#124):** поле `token` изменено с объекта `{token, expires_at}` на строку. `expires_at` вынесен на верхний уровень ответа. Кастомные темы, обращающиеся к `result.object.token.token`, потребуют обновления. |
73 | | - |
74 | 101 | #### 🔧 Изменено |
75 | 102 |
|
76 | 103 | - Удалены избыточные проверки прав в `initialize()` процессоров (#95) |
|
0 commit comments