Files
2026-06-09 13:40:23 +00:00

380 lines
39 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Что нового в Ordinis
Список значимых обновлений продукта на понятном языке. Технических подробностей нет — для них есть [внутренний CHANGELOG](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/blob/main/ordinis-admin-ui/CHANGELOG.md) с привязкой к коммитам.
Обновления приходят на твой сервер автоматически при следующем deploy.
## [2.54.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.54.0) (2026-06-09)
### ✨ Новые возможности
* **Удаление справочника — теперь soft-delete с 7-дневным окном восстановления** — раньше «Удалить справочник» физически удалял записи каскадом (recovery только из DB-бэкапа). Теперь backend ставит метку `deleted_at = now()`, записи и черновики остаются в БД. В течение 7 дней администратор может восстановить справочник: открой URL удалённого справочника → красная карточка «Справочник удалён» с кнопкой **«Восстановить справочник»** + счётчик дней до автоудаления. После 7 дней backend cron `DictionaryPurgeJob` (раз в час) физически удаляет cascade — recovery невозможен. Список soft-deleted dicts доступен через `GET /api/v1/dictionaries/deleted` (admin-only Корзина page — UI в follow-up MR).
## [2.52.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.52.0) (2026-06-05)
### ✨ Новые возможности
* **Удаление справочника одной кнопкой** — в правой info-панели редактора справочника появилась danger-кнопка «Удалить справочник…» (видна только пользователям с ролью admin). При клике — модальное окно с предупреждением: будут soft-deleted ВСЕ записи, drafts, schema-drafts. Если на справочник ссылается другой через `x-references` — backend возвращает 409 со списком зависимостей, в модалке появляется дополнительная кнопка «Удалить force» (на случай если зависимый справочник нужно поправить отдельно). Audit log + outbox event «DefinitionDeleted» пишутся при пометке — consumers downstream (геопортал, Альтум) получают snapshot для инвалидации кэша.
## [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)
### ✨ Новые возможности
* **Тихие часы** — на странице «Уведомления» (`/me/notifications/preferences`) можно включить окно, например 22:00–08:00 МСК, когда email и express-сообщения не отправляются. Внутренние уведомления в шапке (bell badge) остаются доступны. Часовой пояс выбирается из 12 российских зон + UTC. Окна через полночь поддерживаются.
## [2.35.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.35.0) (2026-05-17)
### ✨ Новые возможности
* **Bundle hygiene v2 (для интеграторов справочников)** — каталог справочников теперь поставляется с `manifest.yaml` (явный список + метаданные) и ed25519-подписью. Защита от подмены файлов и явный контракт версии для CUOD-handoff. Документация: [`docs/integration/bundle-format-spec.md`](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/blob/main/docs/integration/bundle-format-spec.md) и [`docs/user-guide/bundle-authoring.md`](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/blob/main/docs/user-guide/bundle-authoring.md).
## [2.34.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.34.0) [2.34.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.34.1) (2026-05-16)
### ✨ Новые возможности
* **✨ AI: добавить поле** — в редакторе схемы справочника появилась кнопка «AI: добавить поле». Опиши идею простыми словами («email контакт», «дата запуска», «частотный диапазон в МГц») — LLM сгенерирует валидное JSON Schema поле. Можно принять, отредактировать или попросить другой вариант. Работает на shared Vortex (`vortex.nstart.cloud`, модель `qwen2.5:7b`). Включается через helm `ai.enabled`. Rate-limit 30 запросов/мин на IP, circuit breaker на падения.
### 🐛 Исправления
* **AI endpoint возвращал 500 после деплоя** — nginx роутил `/api/v1/ai/*` через generic fall-through на read-api. Добавлено явное правило к writer (тот же паттерн что для `/drafts`, `/me`, `/admin`).
## [2.33.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.33.0) (2026-05-16)
### ✨ Новые возможности
* **Шаблоны схем при создании справочника** — в окне «Создать справочник», вкладка Schema, появилась grid из 6 готовых шаблонов: Чистая, Космический аппарат, Наземная станция, Антенна, Частотный диапазон, Оператор. Один клик — форма заполнена типовыми полями ДЗЗ-домена. Экономит время на повторяющихся типах объектов.
## [2.32.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.32.0) (2026-05-16)
### ✨ Новые возможности
* **Метка «Запланировано» в таблице записей** — если у записи есть будущая версия (с датой validFrom в будущем), в строке таблицы появляется badge. Видно сразу, не открывая запись.
## [2.31.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.31.0) [2.31.5](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.31.5) (2026-05-15 2026-05-16)
### ✨ Новые возможности
* **Phase B-2 уведомления — матрица 4×3** — на странице «Уведомления» появилась таблица: 4 события (отправлено на ревью / одобрено / отклонено / отозвано) × 3 канала (email / express / telegram). Можно отключить email при approve, оставить email при reject — гранулярно. Express и Telegram пока с пометкой «Скоро» (preferences хранятся для opt-in заранее).
* **TimeTravel — окно в будущее** — слайдер истории дотягивается до реальной максимальной даты словаря, включая запланированные версии. Раньше был зажат в «сегодня». К подписям границ добавлен год.
* **Banner и индикатор запланированных записей** — над таблицей записей показывается количество future-версий + ближайшая дата ввода. Понятно, что прилетит в следующий квартал.
### 🐛 Исправления
* **Smart Search возвращал 0 результатов** — фильтр scope передавался строчными буквами (`'public'`), а в БД хранится `'PUBLIC'` (CHECK constraint UPPERCASE из миграций 0008/0009). Bug жил 5 месяцев. Теперь поиск работает для всех ролей.
* **Версия в шапке показывала «none»** — `/version` возвращал тег без значения, потому что build на main без git-тега. Теперь подхватывает тег из helm chart (например `v2.31.2`), парсит SHA-суффикс и форматирует.
* **Журнал аудита — 13 типов action** — раньше многие типы (DRAFT_PUBLISHED, REVIEWER_ASSIGNED и др.) показывались как enum-имя. Теперь все 13 — русские названия.
* **«Действует с» в редакторе** — поле было пустым в create-режиме, выглядело как баг. Теперь предзаполнено текущим временем (`now()`).
* **QA P3/P4 пакет** — 7 косметических багов (i18n, layouts, labels).
### ♻️ Под капотом
* **CI — Alpine mirror стабилизирован** — после drift между Nexus v3.23 APKINDEX и реальными файлами release-jobs ломались на каждом auto-bump. Pinned `node:22-alpine3.20` + `apk update` перед `add` + sed swap на `repo.nstart.cloud`. Auto-bump теперь работает без ручного вмешательства. Runbook DevOps: `docs-internal/ops/nexus-alpine-mirror.md`.
## [2.30.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.30.0) [2.30.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.30.1) (2026-05-15)
### ✨ Новые возможности
* **Phase B-2 backend** — per-event-type granular preferences API + миграция данных (подготовка к UI-матрице из v2.31).
### 🐛 Исправления
* **Sidebar для PUBLIC users** — outbox / audit / webhooks скрыты (раньше показывали ссылки, при клике — 403).
* **TimeTravel slider** — extend до now + 30 дней или future marks (улучшено окончательно в v2.31).
## [2.29.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.29.0) [2.29.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.29.1) (2026-05-15)
### ✨ Новые возможности
* **Webhook text-wrap для chat-bot receivers** — Mattermost `@WebhookBot` теперь корректно получает payload (receiver требует `{"text":"..."}` иначе «неизвестный webhook»). Включается в admin-ui на странице подписки (host allowlist + textWrapHosts).
### 🐛 Исправления
* **Bell badge glyph** — счётчик уведомлений в шапке обрезался по верху. Теперь полностью виден.
## [2.28.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.28.0) [2.28.2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.28.2) (2026-05-15)
### ✨ Новые возможности
* **Phase B уведомления — backend + UI** — per-user channel preferences (email / express / telegram), страница `/me/notifications/preferences`.
### 🐛 Исправления
* **Email уведомления не уходили вообще** — race между OutboxPoller и dispatcher. Окончательное решение: drop `@Modifying` из `tryClaim` + `EmailChannel` как `@Bean`, не `@Component`. Critical fix.
* **HTTP status code** — `ResponseStatusException` теперь возвращает корректный код (раньше всё было 500).
* **User-Agent webhook** — установлен `ordinis-alerts` (match Webhook Bot subscription).
* **Actuator** — Redis health indicator отключён в writer (не нужен, шумел в `/actuator/health`).
## [2.27.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.27.0) [2.27.13](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.27.13) (2026-05-14 2026-05-15)
### ✨ Новые возможности
* **Полный цикл уведомлений по schema-draft** — после approve/reject автор получает toast (немедленно) + email (через outbox) + bell badge в шапке. Закрывает TODO 7 design-doc'а.
### 🐛 Исправления
* **Согласования — Mine tab для анонимов** — раньше показывал raw AxiosError, теперь dedicated empty state с sign-in CTA.
* **Sidebar — 403 spam в консоли** — outbox/webhook badge polling гейтятся на INTERNAL scope. Анонимам не дёргаем.
* **`/drafts/active` теперь 200 + null** для PUBLIC scope (вместо 404 → нет шума в консоли).
* **QueryErrorState везде** — все routes теперь используют friendly error UI вместо raw AxiosError dump.
* **44×44 px touch targets** — кнопки достижимы на mobile.
* **Em-dash fallback в UserCell** — пустые actor'ы показывают «—» вместо raw UUID.
* **Routing /api/v1/me/*** — закрыт 500 на `/me/notifications` (тот же паттерн что для `/ai`, `/drafts`).
* **Defensive /me/notifications** — wrap DB ops в try/catch с panic-level логированием.
## [2.26.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.26.0) [2.26.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.26.1) (2026-05-14)
### ✨ Новые возможности
* **«Мои» tab в Согласованиях** — maker self-tracking со status-фильтром. Видишь свои поданные draft'ы и их текущий статус в одном месте.
## [2.25.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.25.0) [2.25.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.25.1) (2026-05-14)
### ✨ Новые возможности
* **Approval UX — inline draft CTA + reviewer diff summary** — ревьюер видит сжатый diff в drawer'е, автор получает inline-кнопку «Открыть draft» прямо из таблицы записей.
## [2.24.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.24.0) (2026-05-14)
### ✨ Новые возможности
* **Audit + outbox для record-draft lifecycle** — каждое изменение draft пишется в журнал аудита + outbox event для подписчиков webhook.
### 🐛 Исправления
* **Approval — закрыты 2 bypass paths** (security audit findings).
* **Non-breaking schema changes** — теперь применяются inline без полного draft workflow.
* **DictionaryEditorDialog** — Save блокируется когда нужен draft workflow (раньше silently сохранял).
## [2.23.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.23.0) [2.23.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.23.1) (2026-05-14)
### ✨ Новые возможности
* **UUID → имя пользователя через Keycloak** — Phase 1 (persistent DB cache) + Phase 2 (on-demand Keycloak lookup). Везде где раньше торчал UUID actor'а (changelog, events, history, audit), теперь видно имя через UserCell.
## [2.22.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.22.0) [2.22.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.22.1) (2026-05-14)
### ✨ Новые возможности
* **Per-dictionary approvalMinRole** (Phase 2) — у каждого справочника свой минимальный role для approve. Reviewer с меньшей ролью видит draft, но не может approve.
* **Закрытие записей через draft** — `close` / `bulk-close` идут через workflow, когда у справочника `approvalRequired=true`.
* **Scope-gated audit / outbox endpoints** — INTERNAL/RESTRICTED scopes гейтят доступ к админ-эндпоинтам.
* **`/admin/users/{sub}/display`** — endpoint для UserCell.
## [2.21.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.21.0) (2026-05-13)
### ✨ Новые возможности
* **Auto-route create/edit через draft** — когда у справочника `approvalRequired=true`, любое создание/редактирование записи автоматически создаёт draft в workflow.
## [2.20.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.20.0) (2026-05-13)
### ✨ Новые возможности
* **Schema drafts в «Мои черновики»** — теперь там видны не только record drafts, но и schema drafts.
## [2.19.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.19.0) [2.19.2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.19.2) (2026-05-13)
### ✨ Новые возможности
* **Sidebar /reviews — role-based visibility** — пункт меню «Согласования» показывается только пользователям с reviewer-ролью.
### 🐛 Исправления
* **Чтение ролей из access_token, не id_token** — sidebar /reviews был скрыт у reviewer'ов из-за неправильного источника roles claim.
* **Webhook scope_filter** — Hibernate ordinal mapping bug + UI toggle для активации подписки.
## [2.18.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.18.0) (2026-05-13)
### ✨ Новые возможности
* **WorkflowRoles — configurable claim path + ordinis:admin super-role** — admin теперь bypass'ит все role-checks (для troubleshooting + emergency edits).
## [2.17.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.17.0) (2026-05-13)
### ✨ Новые возможности
* **Phase 1d — backend role enforcement для workflow** — backend сам проверяет роль на approve/reject (раньше доверяли UI). Closing security gap.
## [2.16.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.16.0) [2.16.4](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.16.4) (2026-05-12 2026-05-13)
### ✨ Новые возможности
* **«Что нового» button в шапке** — кнопка открывает modal с этим самым changelog'ом.
### 🐛 Исправления
* **404 вместо 500** — несуществующий endpoint теперь возвращает 404 (NoResource / NoHandler exceptions properly mapped).
* **Кнопки в schema draft drawer** — RU labels + flow row layout.
* **Sidebar badges** — Outbox + Webhooks теперь с реальными счётчиками; audit scope label уточнён.
* **Schema draft — автор display + gate «Отозвать»** — кнопка только у maker'а draft'а.
* **CI release** — убран `[skip ci]` из semantic-release commit'ов (auto-bump pipeline теперь запускается).
## [2.15.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.15.0) (2026-05-12)
### ✨ Новые возможности
* **«Что нового» — первая версия + state.md** — wiring под changelog story (полноценный modal добавлен в v2.16.0).
### 🐛 Исправления
* **Swagger UI на staging** — доступно всегда для exploration; на prod env-flagged.
* **Docs build context** — copy operator/reviewer/changelog директорий в docker image.
## [2.14.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.14.0) (2026-05-12)
### ✨ Новые возможности
* **График доставки webhook'ов** — на странице webhook-подписки теперь видно историю доставок за последние 24 часа или 7 дней. Можно навести курсор на любой столбик и увидеть, сколько было успешных доставок, retry, и сколько ушло в DLQ.
## [2.13.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.13.0) (2026-05-12)
### ✨ Новые возможности
* **Поиск в фильтре типов событий** — у webhook event-type фильтра появилось поле поиска. Можно набрать «Record» и увидеть только относящиеся типы событий, вместо ручного скроллинга через все 11.
* **Выбор диапазона дат** — в журнале аудита вместо двух отдельных полей «с» и «по» теперь один календарь, в котором можно отметить начало и конец периода. Удобнее и компактнее.
## [2.12.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.12.0) (2026-05-12)
### ✨ Новые возможности
* **Подсветка активной секции в редакторе записи** — когда в редакторе записи прокручиваешь форму, соответствующий «таб» в верхней панели подсвечивается синим. Удобно, чтобы не теряться в длинных формах.
## [2.11.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.11.0) (2026-05-12)
### ✨ Новые возможности
* **TimeTravel — реальные данные на момент** — во вкладках «Записи на момент» и «Структура и поля» в окне TimeTravel теперь видны фактические данные, а не заглушка «backend pending». Можно посмотреть, как выглядел справочник в любую дату из истории.
## [2.10.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.10.0) (2026-05-12)
### ✨ Новые возможности
* **Что изменилось — вкладка с реальными изменениями** — в окне TimeTravel вкладка «Что изменилось» теперь показывает фактический diff между версиями (добавленные поля, изменённые типы, удалённые свойства), а не пустую заглушку.
### 🐛 Исправления
* **Понятные сообщения об ошибках** — вместо технического «AxiosError: Request failed with status code 503» теперь видишь нормальное «Сервер временно недоступен» с кнопкой «Повторить». Это работает для всех ошибок 4xx/5xx и проблем с сетью.
## [2.9.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.9.0) (2026-05-12)
### ✨ Новые возможности
* **Статистика webhook-подписок** — на странице подписки появились карточки со счётчиками: в очереди, retry, доставлено, в DLQ + общий процент успешных доставок. Видно с одного взгляда, насколько здоров твой webhook.
## [2.8.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.8.0) (2026-05-12)
### ✨ Новые возможности
* **Редактор схемы прямо в окне создания draft'а** — больше не нужно открывать отдельную форму. Окно «Создать schema draft» теперь содержит полноценный JSON-редактор (Monaco) с подсветкой синтаксиса и проверкой схемы налету.
* **Согласования — отдельные вкладки** — в разделе «Согласования» (`/reviews`) появились вкладки «Записи» и «Схемы» со счётчиками. Auto-switch на ту вкладку, где есть что согласовать.
* **Редактирование draft'а без пересоздания** — если ревьюер запросил изменения, можешь поправить schema draft inline, без удаления и создания нового. Изменения автоматически возвращают draft в статус «На доработке у автора».
* **Фильтр типов webhook-событий** — вместо ввода CSV-строкой теперь multi-select с 11 известными типами событий (`RecordCreated`, `SchemaDraftPublished` и др.).
## [2.7.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.7.0) (2026-05-12)
### ✨ Новые возможности
* **Schema workflow Phase 1c** — окно создания schema draft, расширение раздела согласований, контроль прав доступа.
## [2.6.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.6.0) (2026-05-12)
### ✨ Новые возможности
* **Боковая панель schema draft с действиями** — drawer показывает текущий статус draft'а и контекстные кнопки: отправить на ревью, approve, request changes, reject, publish, withdraw, edit. Видишь только те действия, которые доступны на текущем шаге.
## [2.5.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.5.0) (2026-05-12)
### ✨ Новые возможности
* **Вкладка «История версий»** — теперь показывает реальный timeline изменений с иконками по типу события и кнопкой «Сравнить» — открывает модальное окно с before/after JSON. Раньше там была заглушка.
## [2.4.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/-/tags/v2.4.0) (2026-05-12)
### ✨ Новые возможности
* **Полное сравнение версий схемы** — endpoint позволяет получить before/after любой пары версий схемы для конкретной записи (используется кнопкой «Сравнить» в History tab'е).
### 🐛 Исправления
* **Слайдер TimeTravel** — пометки дат больше не наезжают друг на друга при близких версиях.
* **Кнопки в редакторе записи** — кнопка «JSON» теперь видна явно (раньше скрывалась как иконка). Если у записи всего одна версия, показывается подсказка вместо disabled кнопок.
## [2.3.0-2.0.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/blob/main/CHANGELOG.md) (2026-05-12)
Большой релиз-волна: backend endpoints для полного timeline истории, schema workflow API (8 endpoints с maker-checker согласованием), Diff endpoint, тёмная тема. Подробности — в [полном CHANGELOG](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/blob/main/CHANGELOG.md).