Commit Graph

732 Commits

Author SHA1 Message Date
Zimin A.N. cb8a229adf fix(ui): QA report P3/P4 batch — 7 cosmetic/UX bugs
QA report cleanup (после P1/P2 ship'нутых в v2.31.4):

- **BUG-009**: Excel/SQL export форматы получили явный «скоро» badge поверх
  opacity-only disabled state. Title attribute оставлен.
- **BUG-010**: «Доступ актора» (audit scope column) переименован в «Scope» —
  компактнее, не переносится на 2 строки.
- **BUG-011**: Все audit table headers получили title attribute → hover
  tooltip когда text truncate'ится («ИЗМЕНЕН…» → full «Изменения»).
- **UX-001**: Scope chips в /dictionaries теперь показывают ✓ glyph когда
  selected → визуально clear что multi-select. Aria-label расширен:
  «Фильтр по области (можно выбрать несколько)».
- **UX-002**: Breadcrumb segments получили title attribute → hover показывает
  full label когда truncate'ится в narrow viewport.
- **UX-003**: При смене вкладки в редакторе справочника (records → relations
  и т.п.) URL params q/scopes сбрасываются — раньше search фильтр оставался
  применённым после возврата на records.
- **UX-004**: TimeTravel slider boundary метки получили 2-digit year:
  «05.05.26» вместо «05.05» — disambiguates конец декабря / начало января.
  Title attribute exposes full локальную дату.
- **UX-009**: «Удалить» button в RecordDrawer переименован в «Закрыть запись»
  — same action как row context menu «Закрыть» (bitemporal close, не truly
  delete). Consistent labeling across UI.
2026-05-16 00:09:41 +03:00
semantic-release-bot 55ac362a11 chore(release): v2.31.4
## [2.31.4](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.31.3...v2.31.4) (2026-05-15)

### 🐛 Fixes

* **ci:** apk update before add — picks current package versions from mirror ([fc31963](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/fc3196349c80357d16a5761e64087a4ea92c9372))
* **ci:** apk использует internal Nexus mirror вместо public Alpine CDN ([1e0c49f](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/1e0c49fd6936c175811c5f11c4e0130122b889de))
* **ci:** pin release job к node:22-alpine3.20 — bypass v3.23 mirror APKINDEX bug ([ca48ff7](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/ca48ff7f421eadd0cd3c740307f446a51a73ecf7))
* **search:** scope filter uppercase — fixes Smart Search 0 results bug ([35147df](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/35147df68336b872ea65151c913e70baba646a9c))
2026-05-15 20:21:08 +00:00
Александр Зимин 468a732bad Merge branch 'fix/ci-pin-alpine-version' into 'main'
fix(ci): pin release job к node:22-alpine3.20 — bypass v3.23 mirror bug

See merge request 2-6/2-6-4/terravault/ordinis!230
2026-05-15 20:14:38 +00:00
Zimin A.N. ca48ff7f42 fix(ci): pin release job к node:22-alpine3.20 — bypass v3.23 mirror APKINDEX bug
Nexus Alpine v3.23 APKINDEX рассинхронизирован: claims ca-certificates-20251003,
но в file storage только -20260413. Same для libexpat (claims 2.7.3, files 2.7.5).
Apk add 404. v3.20 mirror — consistent.

`node:22-alpine` (latest) использовала Alpine 3.23 → broken. Pin к
`node:22-alpine3.20` обходит баг — apk видит matching versions и files.
2026-05-15 23:14:17 +03:00
Александр Зимин be224e14b8 Merge branch 'fix/ci-apk-update-before-add' into 'main'
fix(ci): apk update before add — picks current package versions from mirror

See merge request 2-6/2-6-4/terravault/ordinis!229
2026-05-15 20:04:58 +00:00
Zimin A.N. fc3196349c fix(ci): apk update before add — picks current package versions from mirror
Image приходит с pre-cached APKINDEX (старые package versions с момента
build'а image). После repo swap (sed на internal mirror) apk всё ещё
использовал stale cache — просил ca-certificates-20251003 когда в mirror
только 20260413 → HTTP 404.

Fix: explicit `apk update` после sed, перед `apk add`. Это refresh'ит
APKINDEX с нашего mirror; apk теперь видит actual available versions.

Применено к 3 jobs (commit-msg-lint, build-docs prep step внутри release,
propose-prod-image-bump). После этого release должен пройти на следующем
main pipeline → semantic-release минтит v2.31.4 → propose-prod-image-bump
auto-создаст infra MR без manual intervention.
2026-05-15 23:04:25 +03:00
Александр Зимин 5916f0baec Merge branch 'fix/smart-search-scope-uppercase' into 'main'
fix(search): scope filter uppercase — fixes Smart Search 0 results (BUG-005)

See merge request 2-6/2-6-4/terravault/ordinis!228
2026-05-15 19:52:24 +00:00
Zimin A.N. 35147df683 fix(search): scope filter uppercase — fixes Smart Search 0 results bug
QA report BUG-005: "/search" возвращал 0 результатов на любые запросы
(«антенна», «GS_MOSCOW», «super» — всё пусто).

Root cause: SearchController convertedil scope enum в lowercase перед
WHERE filter:
  data_scope = ANY(CAST(? AS TEXT[]))  -- value: 'public'

Но DB stores UPPERCASE per migrations 0008/0009 CHECK constraint:
  CHECK (data_scope IN ('PUBLIC', 'INTERNAL', 'RESTRICTED'))

Filter 'public' никогда не матчил 'PUBLIC' → empty result для всех queries.
Багу 5+ месяцев — comment в коде утверждал что DB lowercase, что было
неправдой даже в момент написания.

Fix: убрать .toLowerCase() — pass enum names как есть. Verified:
  curl /api/v1/antenna/records?as_scope=PUBLIC возвращает GS_MOSCOW_A1
  но curl /api/v1/search?q=GS_MOSCOW возвращал 0. После fix должен матчить.
2026-05-15 22:51:01 +03:00
Александр Зимин ba9eeac53b Merge branch 'fix/ci-alpine-internal-mirror' into 'main'
fix(ci): apk использует internal Nexus mirror вместо public Alpine CDN

See merge request 2-6/2-6-4/terravault/ordinis!227
2026-05-15 19:35:39 +00:00
Zimin A.N. 1e0c49fd69 fix(ci): apk использует internal Nexus mirror вместо public Alpine CDN
Runner не имеет outbound к dl-cdn.alpinelinux.org (Permission denied):
```
WARNING: fetching https://dl-cdn.alpinelinux.org/alpine/v3.20/main: Permission denied
ERROR: unable to select packages: curl, git, jq (no such package)
```

Это сломало propose-prod-image-bump в v2.31.3 tag pipeline (failed) — пришлось
вручную создавать infra MR. Тот же риск висел над commit-msg-lint и build-docs.

Fix: sed-замена /etc/apk/repositories на `repo.nstart.cloud/repository/alpine`
перед каждым apk add. Probe подтвердил что mirror отвечает 200 на
`/repository/alpine/v3.20/main/x86_64/APKINDEX.tar.gz`.

Touches: 3 Alpine-based jobs (commit-msg-lint, build-docs, propose-prod-image-bump).
2026-05-15 22:34:47 +03:00
semantic-release-bot 38761947a2 chore(release): v2.31.3
## [2.31.3](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.31.2...v2.31.3) (2026-05-15)

### 🐛 Fixes

* **qa-report:** version tag, /drafts redirect, audit filter complete, i18n cleanup ([ff7e72e](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/ff7e72e0fd3df32f96a39965a4832efa6602b080))
2026-05-15 19:13:22 +00:00
Александр Зимин 57a2341cc9 Merge branch 'fix/qa-report-i18n-batch' into 'main'
fix(qa-report): version tag display, /drafts redirect, audit filter, i18n cleanup

See merge request 2-6/2-6-4/terravault/ordinis!226
2026-05-15 19:04:29 +00:00
Zimin A.N. ff7e72e0fd fix(qa-report): version tag, /drafts redirect, audit filter complete, i18n cleanup
QA report v2.31.x batch:

- **VersionController.tag**: было 'none' (maven build на main без git tag) → UI
  показывал «dev · 6077d4df». Helm передаёт image.tag через env
  ORDINIS_BUILD_IMAGE_TAG, controller парсит «v2-31-2-e3c82775» → «v2.31.2».
  Helm chart change в ordinis-infra (separate MR).

- **/drafts redirect** (BUG-003): пустой 404 «Not Found» plain text → теперь
  static redirect на /my-drafts.

- **Audit action filter** (BUG-004): дропдаун содержал только 3 значения
  (CREATE/UPDATE/CLOSE), но в таблице 11 типов (DRAFT_*, DEFINITION_*).
  Frontend AuditAction enum + ACTIONS list синхронизированы с backend
  AuditLogger/SchemaDraftService/DraftService.

- **i18n cleanup** (BUG-006/007/UX-005):
  - myDrafts.description: «Все ваши submissions с pending/approved...» →
    «Все ваши черновики с историей: ожидает рассмотрения, одобрен...»
  - reviews.description: «Pending drafts от makers, ждут approve/reject» →
    «Черновики от авторов, ждут одобрения или отклонения. Общая очередь...»
  - reviews.queueTotal: «N pending drafts» → «N черновиков в очереди»
  - myDrafts.col.reviewer: «Reviewer» → «Рецензент» (RU only)
  - notifications chip labels: 'submit/approved/rejected' → 'отправлен/
    одобрен/отклонён'
  - audit.action.* expanded к 13 entries для каждого backend action
    type, с понятными лейблами «Черновик одобрен» вместо «DRAFT_APPROVE»

- **WhatsNewModal markdown** (UX-006): тексты вроде «**График доставки
  webhook'ов**» рендерились с буквальными звёздочками. Mini inline renderer
  для **bold**, *italic*, `code` — без full markdown library.
2026-05-15 22:02:29 +03:00
semantic-release-bot e3c827752e chore(release): v2.31.2
## [2.31.2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.31.1...v2.31.2) (2026-05-15)

### 🐛 Fixes

* **record-form:** prefill validFrom=now в create mode тоже ([a740ab3](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a740ab32bffe17c13e394534ac1860bf5b68be1d))
* **records:** scheduled marks on time-travel + non-empty banner + editor validFrom prefill ([9199f38](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/9199f380e1c52ab49384bb5813b38108e34a4ac8))
* **timetravel:** drop arbitrary +30d max — use real marks only ([d0ef822](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/d0ef822b9e2efb35dc8f63496a8e3da9521d0a4b))
2026-05-15 18:41:53 +00:00
Александр Зимин 6077d4dfe8 Merge branch 'fix/create-form-validfrom-prefill' into 'main'
fix(record-form): prefill validFrom=now в create mode тоже

See merge request 2-6/2-6-4/terravault/ordinis!225
2026-05-15 18:34:18 +00:00
Zimin A.N. a740ab32bf fix(record-form): prefill validFrom=now в create mode тоже
Form review после !224 показал что create mode имеет тот же баг что и edit:
SchemaDrivenForm без переданного defaultValues fallback'ит на '' для
validFrom, и пользователь видит пустое поле «Действует с».

Добавлен defaultValues={{ validFrom: nowIsoLocal() }} для create — consistent
UX с edit mode (!224 fix). Other formы (drafts, reviews, schema workflow) —
либо read-only либо без validFrom, clean.
2026-05-15 21:32:41 +03:00
Александр Зимин a996b1d4e8 Merge branch 'fix/scheduled-marks-banner-prefill' into 'main'
fix(records): scheduled marks + non-empty banner + editor validFrom prefill

See merge request 2-6/2-6-4/terravault/ordinis!224
2026-05-15 18:30:30 +00:00
Zimin A.N. d0ef822b9e fix(timetravel): drop arbitrary +30d max — use real marks only
User feedback: «крайняя дата должна быть исходя из реальной в этом
словаре». Раньше slider всегда extended до now + 30d даже без причины —
если нет scheduled записей на 18.05, slider всё равно тянулся туда,
пользователь блуждал по пустоте.

Теперь max = max(marks) — last real change point (record validFrom включая
upcoming scheduled, которые backend возвращает в /scheduled-summary).
Если все marks в прошлом — max=now (always reachable). Если есть future
scheduled на 18.05 — slider тянется ровно туда, не дальше.

Touches: TimeTravelPicker.tsx (inline editor) + TimeTravelModal.tsx (modal).
2026-05-15 21:30:08 +03:00
Zimin A.N. 9199f380e1 fix(records): scheduled marks on time-travel + non-empty banner + editor validFrom prefill
Три связанных UX бага после v2.31.0 release:

1. **TimeTravel marks**: после !220 slider extended до now+30d, но отметок в
   future window не было → blind drag. Backend теперь возвращает
   upcomingValidFroms (top 50) в /scheduled-summary; frontend merges как marks.

2. **Non-empty banner**: empty-state hint работает только когда список пуст.
   Если currently active записи есть AND ещё запланированы — пользователь
   не видит. Добавлен info banner над таблицей с тем же текстом + CTA.

3. **Editor "Действует с"**: edit mode оставлял поле пустым (bitemporal
   policy «новая версия с now»). User feedback: «показывает ничего, а даты
   заданы» — выглядит как баг. Prefill nowIsoLocal() — теперь юзер видит
   конкретную дату как точку отсчёта.
2026-05-15 21:28:29 +03:00
semantic-release-bot a800d56afa chore(release): v2.31.1
## [2.31.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.31.0...v2.31.1) (2026-05-15)

### 🐛 Fixes

* **timetravel:** extend modal slider max до now + 30 days (paired с !220) ([1713951](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/1713951f76f02df46a3b470e525d2ec9d79f9545))
2026-05-15 18:13:46 +00:00
Александр Зимин 24ac9fd33a Merge branch 'fix/timetravel-modal-future-window' into 'main'
fix(timetravel): extend modal slider max до now + 30 days (paired с !220)

See merge request 2-6/2-6-4/terravault/ordinis!223
2026-05-15 18:08:45 +00:00
Zimin A.N. 1713951f76 fix(timetravel): extend modal slider max до now + 30 days (paired с !220)
MR !220 расширил range у TimeTravelPicker.tsx, но юзер видит другой компонент —
TimeTravelModal.tsx (fullscreen modal с компарисоном now vs picked moment).
У него своя range logic с max = now + pad (1 day), и фикс !220 туда не дотянулся.

User feedback: создал запись с validFrom=18.05, открыл time-travel modal — слайдер
14.05 → 16.05, не дотянуть до 18-го.

Apply same 30-day future window logic к TimeTravelModal так чтобы оба компонента
вели себя одинаково.
2026-05-15 21:08:02 +03:00
semantic-release-bot d728d4f2fd chore(release): v2.31.0
## [2.31.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.30.1...v2.31.0) (2026-05-15)

###  Features

* **records:** scheduled records empty-state hint ([2341846](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/234184645f235680e43b49d8a6cb5e41946db088))
2026-05-15 17:54:56 +00:00
Александр Зимин fd98ce9d8e Merge branch 'feat/scheduled-records-hint' into 'main'
feat(records): scheduled records empty-state hint

See merge request 2-6/2-6-4/terravault/ordinis!222
2026-05-15 17:20:53 +00:00
Zimin A.N. 234184645f feat(records): scheduled records empty-state hint
Fixes UX bug: пользователь создаёт запись с validFrom на будущую дату
(e.g. 18.05), открывает catalog 15.05 — пустая таблица, никаких хинтов
о том что запись существует.

Backend (read-api):
- New endpoint GET /api/v1/{dict}/records/scheduled-summary
- Returns {count, nearestValidFrom} для записей с validFrom > now AND
  validTo > now в текущем scope view
- Single-aggregate JPA query (COUNT + MIN), respect scope filter same way
  as listActive — INTERNAL scheduled не учитывается для PUBLIC consumer'а

Frontend:
- New useScheduledSummary hook + ScheduledRecordsSummary type
- Empty-state в dictionaries.$name now shows: "Запланировано N, ближайшая
  на DD.MM [Перейти к этой дате]" с CTA который set'ает time-travel на
  nearestValidFrom
- i18n keys для ru/en plural forms

Связан с MR !219 (TimeTravelPicker 30-day future window) — теперь slider
позволяет дойти до даты записи, и empty-state hint позволяет узнать что
запись существует.
2026-05-15 20:17:07 +03:00
semantic-release-bot 8cc78e95b7 chore(release): v2.30.1
## [2.30.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.30.0...v2.30.1) (2026-05-15)

### 🐛 Fixes

* **sidebar:** hide outbox/audit/webhooks для PUBLIC users ([df704c2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/df704c28a66b63d97de1f6003263c21a0e97d850))
* **timetravel:** extend slider max до now + 30 days (или future marks) ([4dd67af](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/4dd67af50392cea3ce3b97d5acd2fa0e4f32264a))
2026-05-15 17:14:26 +00:00
Александр Зимин 1d359beb8e Merge branch 'fix/sidebar-admin-nav-internal-only' into 'main'
fix(sidebar): hide outbox/audit/webhooks для PUBLIC users

See merge request 2-6/2-6-4/terravault/ordinis!221
2026-05-15 17:05:51 +00:00
Александр Зимин df704c28a6 fix(sidebar): hide outbox/audit/webhooks для PUBLIC users 2026-05-15 17:05:51 +00:00
Александр Зимин 4c3327b05c Merge branch 'fix/timetravel-future-window' into 'main'
fix(timetravel): extend slider max до now + 30 days (или future marks)

See merge request 2-6/2-6-4/terravault/ordinis!220
2026-05-15 17:03:00 +00:00
Александр Зимин 4dd67af503 fix(timetravel): extend slider max до now + 30 days (или future marks) 2026-05-15 17:03:00 +00:00
semantic-release-bot 836bc6a4e0 chore(release): v2.30.0
## [2.30.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.29.1...v2.30.0) (2026-05-15)

###  Features

* **notifications:** Phase B-2 — per-event-type granular preferences ([f04b1be](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/f04b1be1f6a75ad13d2b7a43e71273a3599f0691))
2026-05-15 17:00:49 +00:00
Александр Зимин 4f1a02de2a Merge branch 'feat/phase-b2-per-event-prefs' into 'main'
feat(notifications): Phase B-2 — per-event-type granular preferences

See merge request 2-6/2-6-4/terravault/ordinis!219
2026-05-15 16:53:32 +00:00
Александр Зимин f04b1be1f6 feat(notifications): Phase B-2 — per-event-type granular preferences 2026-05-15 16:53:32 +00:00
semantic-release-bot 0790abf1d0 chore(release): v2.29.1
## [2.29.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.29.0...v2.29.1) (2026-05-15)

### 🐛 Fixes

* **reviews:** reset drawer state когда reviewer переключает draft ([641a9a6](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/641a9a64f8b337587b609d9a55d85c834737f298))
2026-05-15 16:45:31 +00:00
Александр Зимин 4bc947b88b Merge branch 'fix/review-drawer-state-leak-between-drafts' into 'main'
fix(reviews): reset drawer state когда reviewer переключает draft

See merge request 2-6/2-6-4/terravault/ordinis!218
2026-05-15 16:40:34 +00:00
Александр Зимин 641a9a64f8 fix(reviews): reset drawer state когда reviewer переключает draft 2026-05-15 16:40:33 +00:00
semantic-release-bot b5c9d07403 chore(release): v2.29.0
## [2.29.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.28.2...v2.29.0) (2026-05-15)

###  Features

* **webhook:** text-wrap payload для chat-bot receivers (stellix pattern) ([2c24d24](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/2c24d249beaa11f5cab65bfb5aa429bc4f292571))

### 🐛 Fixes

* **topbar:** notification bell badge — fix glyph clip ([597e05d](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/597e05db4cca46cfda36fcf6982bb72e43777a89))
2026-05-15 16:35:13 +00:00
Александр Зимин abe9bc31ad Merge branch 'fix/notification-bell-badge-clip' into 'main'
fix(topbar): notification bell badge — fix glyph clip

See merge request 2-6/2-6-4/terravault/ordinis!217
2026-05-15 16:28:49 +00:00
Александр Зимин 597e05db4c fix(topbar): notification bell badge — fix glyph clip 2026-05-15 16:28:49 +00:00
Александр Зимин 116d6fc840 Merge branch 'feat/webhook-text-wrap-stellix-pattern' into 'main'
feat(webhook): text-wrap payload для chat-bot receivers (stellix pattern)

See merge request 2-6/2-6-4/terravault/ordinis!216
2026-05-15 16:24:15 +00:00
Александр Зимин 2c24d249be feat(webhook): text-wrap payload для chat-bot receivers (stellix pattern) 2026-05-15 16:24:15 +00:00
semantic-release-bot 80ae31dc9b chore(release): v2.28.2
## [2.28.2](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.28.1...v2.28.2) (2026-05-15)

### 🐛 Fixes

* **notifications:** tryClaim drop @Modifying — unblocks ALL dispatch ([c41c561](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/c41c561ee616a47dbfce524833fb490f0bd3c7ed))
2026-05-15 16:09:42 +00:00
Александр Зимин 00e6d4e375 Merge branch 'fix/notification-tryclaim-modifying' into 'main'
fix(notifications): tryClaim drop @Modifying — unblocks ALL dispatch

See merge request 2-6/2-6-4/terravault/ordinis!215
2026-05-15 16:02:11 +00:00
Александр Зимин c41c561ee6 fix(notifications): tryClaim drop @Modifying — unblocks ALL dispatch 2026-05-15 16:02:11 +00:00
semantic-release-bot 1eed8be700 chore(release): v2.28.1
## [2.28.1](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.28.0...v2.28.1) (2026-05-15)

### 🐛 Fixes

* **actuator:** disable Redis health indicator in writer ([a1989da](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a1989da1be71a76a243799480bbc04f961abc4aa))
* **notifications:** dispatcher race с OutboxPoller — emails never sent ([9f885e5](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/9f885e50c24dd0e418b6d0f69e9a69b071545cfa))
* **rest-api:** preserve status code from ResponseStatusException ([fd35e71](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/fd35e71fe89ddcb3889f28f8373f269fbbf4d432))
* **webhook:** User-Agent 'ordinis-alerts' (matches Webhook Bot subscription) ([0269542](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/0269542ebeb561c53c6b753026aa3e5766691ec3))
2026-05-15 15:42:31 +00:00
Александр Зимин f56a3bde71 Merge branch 'fix/notifications-dispatcher-poll-race' into 'main'
fix(notifications): dispatcher race с OutboxPoller — emails never sent

See merge request 2-6/2-6-4/terravault/ordinis!214
2026-05-15 15:34:36 +00:00
Александр Зимин 9f885e50c2 fix(notifications): dispatcher race с OutboxPoller — emails never sent 2026-05-15 15:34:36 +00:00
Александр Зимин 11d0846893 Merge branch 'fix/webhook-user-agent-ordinis-alerts' into 'main'
fix(webhook): User-Agent 'ordinis-alerts' (matches Webhook Bot subscription)

See merge request 2-6/2-6-4/terravault/ordinis!213
2026-05-15 15:24:12 +00:00
Александр Зимин 0269542ebe fix(webhook): User-Agent 'ordinis-alerts' (matches Webhook Bot subscription) 2026-05-15 15:24:12 +00:00
Александр Зимин ea1de8e649 Merge branch 'fix/disable-redis-health-in-writer' into 'main'
fix(actuator): disable Redis health indicator in writer

See merge request 2-6/2-6-4/terravault/ordinis!212
2026-05-15 15:20:54 +00:00