Merge branch 'docs/changelog-public-2.45-2.52' into 'main'
docs(changelog): public release notes v2.45.3 → v2.52.0 See merge request 2-6/2-6-4/terravault/ordinis!293
This commit is contained in:
@@ -4,6 +4,87 @@
|
|||||||
|
|
||||||
Обновления приходят на твой сервер автоматически при следующем deploy.
|
Обновления приходят на твой сервер автоматически при следующем deploy.
|
||||||
|
|
||||||
|
## [2.52.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.52.0) (2026-06-05)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Удаление справочника одной кнопкой** — в правой info-панели редактора справочника появилась danger-кнопка «Удалить справочник…» (видна только пользователям с ролью admin). При клике — модальное окно с предупреждением о cascade: будут удалены ВСЕ записи, drafts, schema-drafts и история версий. Если на справочник ссылается другой через `x-references` — backend возвращает 409 со списком зависимостей, в модалке появляется дополнительная кнопка «Удалить force» (на случай если зависимый справочник нужно поправить отдельно). Cascade на уровне БД через FK `ON DELETE CASCADE` (миграция 0030). Audit log + outbox event «DefinitionDeleted» пишутся ДО удаления — consumers downstream (геопортал, Альтум) получают snapshot final state для инвалидации кэша.
|
||||||
|
|
||||||
|
## [2.51.2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.51.2) (2026-06-04)
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **FK reference: целевое поле — выпадающий список вместо free-form ввода** — в Schema Builder при настройке поля как FK (x-references) раньше «Целевое поле» был обычным input с placeholder `code`. Можно было ввести любое имя — UI не проверял существование. На staging получили 6 broken FK где target field = `code`, а в реальных схемах поля `code` не было (есть `designator`, `name`, etc). При создании записи backend искал по несуществующему полю и возвращал 422 `x_references_target_not_found`. Теперь target field — Select из реальной схемы целевого справочника (businessKey + все scalar non-localized поля). При смене целевого справочника поле сбрасывается на `businessKey` (universal identifier). Если в существующей схеме FK указывает на несуществующее поле — Builder показывает красное предупреждение «Поле … отсутствует в схеме …».
|
||||||
|
|
||||||
|
## [2.51.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.51.1) (2026-06-02)
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **Админ теперь может self-approve собственный draft** — раньше в Reviews при открытии своего pending draft через «Мои» кнопки Approve/Reject были скрыты, виден только Withdraw, даже для пользователей с ролью `ordinis:admin`. Backend в v2.46 уже пропускал админский override, но фронт не давал кликнуть. Теперь `useIsAdmin()` с tail-match (`admin` / `ordinis:admin` / `*-admin` / `*_admin` / `*:admin`) определяет роль и снимает блокировку UI для всех admin-эквивалентных ролей. В audit log пишется отдельная запись «Admin self-approve override» для compliance trail.
|
||||||
|
|
||||||
|
## [2.51.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.51.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Полная ширина на больших экранах** — раньше контент в админке ограничивался шириной 1280px и был центрирован. На мониторах 1920+px по краям оставалось много пустого места. Убрали ограничение — теперь страницы записей справочника, schema editor и audit log используют всю доступную ширину (полезной ширины +33% на 1920px мониторе). Reviews/Settings text-heavy страницы остаются ограниченными (читаемость).
|
||||||
|
|
||||||
|
## [2.50.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.50.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Колонки таблицы — лишние спрятаны по умолчанию** — info-dense справочники (spacecraft с 13 полями, ground_station с 10+) переполняли таблицу и приводили к горизонтальному скроллу. Теперь из коробки видны только businessKey, name, scope, validFrom + первые 2 дополнительных scalar поля. Остальные доступны через меню «Колонки» (включил один раз — выбор сохранится в localStorage per справочник).
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **Sticky header + sticky pagination** — при вертикальной прокрутке длинного списка записей шапка таблицы (с фильтрами и стрелками сортировки) и кнопки навигации страниц больше не уезжают, они зафиксированы. Не приходится листать вверх/вниз чтобы переключить страницу или отсортировать.
|
||||||
|
* **Существующие пользователи получают новые defaults** — те, кто хоть раз открывал таблицу до этой версии, имели пустое значение `hidden` в localStorage и продолжали видеть все 13 колонок. Добавили схему версии `_v: 2` — старые записи переинициализируются с правильными default-hidden настройками, сортировка preserve.
|
||||||
|
|
||||||
|
## [2.49.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.49.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Все поля схемы доступны как колонки таблицы** — раньше в меню «Колонки» попадали только enum и FK-поля справочника. Все остальные scalar-поля (string, number, integer, boolean, date), которые отображаются в drawer редактирования, в таблице выбрать было нельзя. Теперь pool колонок == поля редактирования (1:1).
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **Массовый approve больше не падает с 500** — при выборе нескольких черновиков и нажатии «Approve all» одновременные запросы конфликтовали в Postgres (`SERIALIZABLE` isolation, SSI canceled-as-pivot). Один из approve выдавал 500, остальные проходили. Добавили retry с exponential backoff (50/100/200ms + jitter) для `CannotAcquireLockException` — теперь Postgres conflict разрешается прозрачно за 1-3 попытки.
|
||||||
|
|
||||||
|
## [2.48.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.48.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Drawer записи: широкий режим по умолчанию на десктопе** — раньше при открытии записи drawer всегда стартовал в узком режиме (520px), на 1920px мониторе с info-dense схемами приходилось каждый раз вручную нажимать кнопку расширения. Теперь при viewport ≥ 1024px drawer открывается в широком режиме (880px) по умолчанию. На мобильных — узкий (520px, полная ширина anyway). Выбор пользователя (явный toggle) побеждает viewport и сохраняется в localStorage.
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **Bundle importer не откатывает user-published schema** — раньше при рестарте writer'а сравнение `bundle.schemaVersion != db.schemaVersion` срабатывало в обе стороны: если пользователь опубликовал через UI новую версию схемы (например `1.1.0`), а в bundle manifest осталась `1.0.0`, writer на следующем restart перезаписывал DB обратно к старой. Теперь используется semver-aware compare — обновление применяется ТОЛЬКО если bundle строго новее DB. User-published changes сохраняются.
|
||||||
|
|
||||||
|
## [2.47.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.47.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Таблица справочника — сортировка по колонкам и выбор колонок** — клик по любому заголовку колонки сортирует по asc → desc → none (NULL-значения всегда в конце). Сортировка numeric-aware (`BK-2 < BK-10 < BK-100` для бизнес-ключей). Меню «Колонки» позволяет скрыть/показать любую колонку кроме businessKey (primary identifier). Выбор сохраняется в localStorage per справочник.
|
||||||
|
|
||||||
|
## [2.46.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.46.1) (2026-06-02)
|
||||||
|
|
||||||
|
### 🐛 Исправления
|
||||||
|
|
||||||
|
* **Admin self-approve разблокирован на уровне БД** — в v2.46.0 backend разрешил админу approve собственный draft, но DB CHECK constraint (от старой defense-in-depth) всё равно блокировал INSERT/UPDATE → 500. Constraint убран миграцией 0029. Защита теперь только на Java-уровне через `WorkflowRoles.isAdmin()`.
|
||||||
|
|
||||||
|
## [2.46.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.46.0) (2026-06-02)
|
||||||
|
|
||||||
|
### ✨ Новые возможности
|
||||||
|
|
||||||
|
* **Админ может self-approve drafts** — для small teams без выделенных reviewer'ов админ (роль `ordinis:admin` или любой tail-match `*:admin` / `*-admin` / `*_admin`) теперь может approve собственный draft. Backend пропускает self_approve_forbidden проверку, в audit log пишется запись «Admin self-approve override: draft=… maker=… reviewer=… (same)» для compliance.
|
||||||
|
|
||||||
|
## [2.45.3](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.45.3) (2026-06-02)
|
||||||
|
|
||||||
|
### 🛡️ Безопасность
|
||||||
|
|
||||||
|
* **Backend контейнеры запускаются как non-root** — все три backend сервиса (writer, read-api, projection-writer) теперь работают под UID 10001 вместо root. Защита от container escape если злоумышленник захватит JVM.
|
||||||
|
* **`.env` файлы добавлены в `.gitignore`** — whitelist для `.env.example` / `.env.template` / `.env.sample`. Защита от случайного коммита credentials.
|
||||||
|
* **Actuator endpoints — public scope сужен** — раньше permitAll() на весь `/actuator/**` экспонировал potentially sensitive endpoints (env, beans, mappings) для anonymous browse. Теперь permitAll только для `health`/`info`/`prometheus`, остальное denyAll. Defense-in-depth через `MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE` env override.
|
||||||
|
|
||||||
## [2.36.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.36.0) (2026-05-17)
|
## [2.36.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.36.0) (2026-05-17)
|
||||||
|
|
||||||
### ✨ Новые возможности
|
### ✨ Новые возможности
|
||||||
|
|||||||
Reference in New Issue
Block a user