From a6006642900bfc34e37554994f5394e6ff39398e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B8=D0=BC=D0=B8=D0=BD?= Date: Sun, 17 May 2026 09:15:07 +0000 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20fill=2022-release=20gap=20v2?= =?UTF-8?q?.15.0=20=E2=86=92=20v2.36.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/changelog.md | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 412c7ec..5c53081 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,210 @@ Обновления приходят на твой сервер автоматически при следующем deploy. +## [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) ### ✨ Новые возможности