Commit Graph

769 Commits

Author SHA1 Message Date
Александр Зимин c59724125e Merge branch 'fix/no-resource-found-returns-404' into 'main'
fix(restapi): NoResource/NoHandler exceptions → 404, не 500

See merge request 2-6/2-6-4/terravault/ordinis!153
2026-05-12 21:10:20 +00:00
Zimin A.N. 000322d6ee test(restapi): drop /swagger-ui from 404 test (env-dependent)
Failed pipeline 6805: /swagger-ui/index.html в test profile вернул 200
(springdoc enabled по умолчанию через ORDINIS_SWAGGER_UI_ENABLED default
true). Это валидно — Swagger render'ит реальную UI page.

Замена: проверяем generic non-API typo path который точно не имеет
controller'а и не SPA-route'д. Покрывает тот же NoResourceFoundException
branch handler'а независимо от springdoc env config.
2026-05-13 00:07:17 +03:00
Александр Зимин 3021bd7e3c Merge branch 'feat/whats-new-modal-from-banner' into 'main'
feat(updateBanner): «Что нового» button открывает modal с changelog

See merge request 2-6/2-6-4/terravault/ordinis!152
2026-05-12 21:04:56 +00:00
Zimin A.N. f2adc37e2e fix(restapi): NoResource/NoHandler → 404, не 500
GlobalExceptionHandler catch-all Exception → 500 ловил NoResourceFoundException
и NoHandlerFoundException. Симптомы на prod:

- /swagger-ui/index.html при disabled springdoc возвращал 500 (UI всё равно
  не рендерился, но spring логировал 'Unhandled exception' на каждый запрос —
  спамил alerting и затруднял поиск настоящих ошибок).
- GET /api/v1/typo от integrator'ов давал 500 вместо 404, осложняло
  debugging без traceId-correlation.
- Любой stale frontend bundle с переименованным endpoint мог триггерить
  false-positive incident alerts.

Fix: explicit @ExceptionHandler для обоих exception типов → 404 not_found.
Логирование DEBUG (не WARN/ERROR) — это ожидаемый 404, не аномалия.

Test: SmokeE2ETest.unknownPath_returns404WithNotFoundCode покрывает оба пути
(/api/v1/* и /swagger-ui/*) → 404 + body.code='not_found'.
2026-05-13 00:00:36 +03:00
Zimin A.N. e46598c47d feat(updateBanner): «Что нового» button открывает modal с changelog
Per user feedback: «по кнопке что нового должно открываться модальное
окно с изменениями».

UpdateBanner кнопка «Что нового» (т9n key `updateBanner.docs`) ранее
открывала `/docs/` в новой вкладке — generic documentation page, не
contextual для «что именно в этом обновлении».

Теперь — открывает `WhatsNewModal` (тот же modal что показывает 🎁
button в TopBar) — public changelog с release notes сразу.

## Refactor

- **`WhatsNewModal.tsx` (NEW)** — extracted controlled-mode modal с
  release notes. Props: `open`, `onClose`. Internal logic читает
  changelog, tracks lastSeen в localStorage, на open mark'ает latest
  как seen.
- **`WhatsNewButton.tsx`** — refactored: trigger button + use
  `WhatsNewModal`. Поведение unchanged (🎁 icon с unread badge → click → modal).
- **`UpdateBanner.tsx`** — replaced `window.open(DOCS_URL)` на
  `setWhatsNewOpen(true)` + render `<WhatsNewModal>`. DOCS_URL constant
  removed (больше не используется).

## UX intent

Когда update detected:
1. User видит orange banner «Доступна новая версия v2.16.0»
2. Hover «Что нового» button → opens modal
3. User читает release notes (что добавлено, исправлено) ДО reload
4. Click «Обновить» → reload

Раньше «Что нового» вёл к generic docs page — user не знал ЧТО
изменилось, только что update есть. Modal даёт structured answer.

## Test plan

- [x] `pnpm tsc --noEmit` clean
- [x] `pnpm build` clean
- [x] `pnpm vitest run useChangelog.test` — 11/11 pass (parser logic
      unchanged)
- [ ] Manual: симулировать update banner (mock useAppVersion
      `updateAvailable=true`), click «Что нового» → modal opens
- [ ] Manual: 🎁 button в TopBar также opens same modal
- [ ] Manual: close modal → red dot disappears на 🎁 button
      (localStorage updated)
2026-05-12 23:28:12 +03:00
semantic-release-bot 6c48cfac46 chore(release): v2.15.0 [skip ci]
## [2.15.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.14.0...v2.15.0) (2026-05-12)

###  Features

* **topbar:** «Что нового» button + 2026-05-12 state.md update ([a34c6d4](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a34c6d4c8248040f90fc24597317d748195468b5))

### 🐛 Fixes

* **admin-ui:** changelog build context — copy script + CI before_script ([5103ed6](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/5103ed6d9cd8e5ba742f66ea72fa8f35e1dcf60a))
* **docs,security:** Swagger UI — staging для exploration, prod env-flagged ([e2080d8](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/e2080d899153f78eb35cf7fab7ea59d52fdc151d))
* **docs:** copy operator/reviewer/changelog dirs to docker image ([82e481a](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/82e481a418f278a566bf6cc3ab7345c99e363902))

### 📝 Docs

* **design:** AI schema assist + dictionary marketplace v1 proposals ([cef5f49](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/cef5f49bf70d5abf857e4d40bfb5550a751fe2ec))
* **design:** ai-schema-assist v2 — /office-hours, Approach C hybrid ([a3eb5f0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a3eb5f0c86196acf3fbbad0e5ac74eb058eaa7e3))
* **design:** marketplace v2 — bundle hygiene, hard cap 2-3d ([89c6e04](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/89c6e049657db808ff7c7fa70c58c3311360673a))
* **design:** Redis FK projection v2 — eng review applied ([d9fc49f](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/d9fc49fe72cfcf4cbb7b7568aba560a5a3e1dc84))
2026-05-12 18:54:51 +00:00
Александр Зимин 013749e0e8 Merge branch 'fix/changelog-build-context' into 'main'
fix(admin-ui): changelog build context — copy script + CI before_script

See merge request 2-6/2-6-4/terravault/ordinis!151
2026-05-12 18:48:04 +00:00
Александр Зимин 5103ed6d9c fix(admin-ui): changelog build context — copy script + CI before_script 2026-05-12 18:48:04 +00:00
Александр Зимин 9cc079ba68 Merge branch 'fix/docs-swagger-staging-not-prod' into 'main'
fix(docs,security): Swagger UI — staging для exploration, prod env-flagged

See merge request 2-6/2-6-4/terravault/ordinis!150
2026-05-12 17:43:12 +00:00
Александр Зимин e2080d8991 fix(docs,security): Swagger UI — staging для exploration, prod env-flagged 2026-05-12 17:43:12 +00:00
Александр Зимин ba7b36326d Merge branch 'fix/docs-dockerfile-copy-new-dirs' into 'main'
fix(docs): copy operator/reviewer/changelog dirs to docker image

See merge request 2-6/2-6-4/terravault/ordinis!149
2026-05-12 17:37:08 +00:00
Александр Зимин 82e481a418 fix(docs): copy operator/reviewer/changelog dirs to docker image 2026-05-12 17:37:08 +00:00
Александр Зимин 1a3d41fcf6 Merge branch 'feat/whats-new-button' into 'main'
feat(topbar): «Что нового» button + 2026-05-12 state.md update

See merge request 2-6/2-6-4/terravault/ordinis!148
2026-05-12 17:05:24 +00:00
Александр Зимин a34c6d4c82 feat(topbar): «Что нового» button + 2026-05-12 state.md update 2026-05-12 17:05:24 +00:00
Александр Зимин 58dd871808 Merge branch 'docs/marketplace-v2-bundle-hygiene' into 'main'
docs(design): marketplace v2 — bundle hygiene, hard cap 2-3d

See merge request 2-6/2-6-4/terravault/ordinis!147
2026-05-12 17:03:54 +00:00
Александр Зимин 89c6e04965 docs(design): marketplace v2 — bundle hygiene, hard cap 2-3d 2026-05-12 17:03:54 +00:00
Александр Зимин d1c6043117 Merge branch 'docs/ai-schema-assist-v2' into 'main'
docs(design): ai-schema-assist v2 — /office-hours, Approach C hybrid

See merge request 2-6/2-6-4/terravault/ordinis!146
2026-05-12 17:03:52 +00:00
Александр Зимин a3eb5f0c86 docs(design): ai-schema-assist v2 — /office-hours, Approach C hybrid 2026-05-12 17:03:52 +00:00
Александр Зимин d04e24c314 Merge branch 'docs/ai-marketplace-design' into 'main'
docs(design): AI schema assist + dictionary marketplace v1 proposals

See merge request 2-6/2-6-4/terravault/ordinis!145
2026-05-12 15:10:22 +00:00
Александр Зимин cef5f49bf7 docs(design): AI schema assist + dictionary marketplace v1 proposals 2026-05-12 15:10:22 +00:00
Александр Зимин 4aa5fd97d1 Merge branch 'docs/redis-fk-projection-design-v2' into 'main'
docs(design): Redis FK projection v2 — eng review applied

See merge request 2-6/2-6-4/terravault/ordinis!144
2026-05-12 14:44:55 +00:00
Александр Зимин d9fc49fe72 docs(design): Redis FK projection v2 — eng review applied 2026-05-12 14:44:55 +00:00
semantic-release-bot 08c9262727 chore(release): v2.14.0 [skip ci]
## [2.14.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.13.0...v2.14.0) (2026-05-12)

###  Features

* **webhook:** time-series histogram stats endpoint + frontend chart ([5479142](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/5479142093e428d081fbb548685f7559ddb1fb08))
2026-05-12 14:39:08 +00:00
Александр Зимин 49734211c1 Merge branch 'feat/webhook-stats-histogram' into 'main'
feat(webhook): time-series histogram stats endpoint + frontend chart

See merge request 2-6/2-6-4/terravault/ordinis!143
2026-05-12 14:30:22 +00:00
Александр Зимин 5479142093 feat(webhook): time-series histogram stats endpoint + frontend chart 2026-05-12 14:30:22 +00:00
semantic-release-bot 91f4310a77 chore(release): v2.13.0 [skip ci]
## [2.13.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.12.0...v2.13.0) (2026-05-12)

###  Features

* **ui:** searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker) ([21d9561](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/21d95613fc26e298684c1f225896f96fd3bea750))
2026-05-12 14:01:58 +00:00
Александр Зимин 09c248de4f Merge branch 'feat/searchable-multiselect-and-date-range' into 'main'
feat(ui): searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker)

See merge request 2-6/2-6-4/terravault/ordinis!142
2026-05-12 13:55:35 +00:00
Александр Зимин 21d95613fc feat(ui): searchable MultiSelect (cmdk) + DateRangePicker (react-day-picker) 2026-05-12 13:55:35 +00:00
semantic-release-bot 680866bcee chore(release): v2.12.0 [skip ci]
## [2.12.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.11.0...v2.12.0) (2026-05-12)

###  Features

* **drawer:** section chip strip scroll-spy via IntersectionObserver ([da04b86](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/da04b862ab5642b33913ae83e6e6429b7ebcbc22))
2026-05-12 13:35:45 +00:00
Александр Зимин 79a56c4aa8 Merge branch 'feat/sections-chip-strip-scroll-spy' into 'main'
feat(drawer): section chip strip scroll-spy via IntersectionObserver

See merge request 2-6/2-6-4/terravault/ordinis!141
2026-05-12 13:29:53 +00:00
Александр Зимин da04b862ab feat(drawer): section chip strip scroll-spy via IntersectionObserver 2026-05-12 13:29:52 +00:00
semantic-release-bot 9073229c0e chore(release): v2.11.0 [skip ci]
## [2.11.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.10.0...v2.11.0) (2026-05-12)

###  Features

* **timetravel:** Records + Schema tabs wired with real data ([775b834](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/775b8345e346747029b2bd2f59488df595652a39))
2026-05-12 13:06:12 +00:00
Александр Зимин 748d0da4dd Merge branch 'feat/timetravel-records-schema-tabs' into 'main'
feat(timetravel): Records + Schema tabs wired with real data

See merge request 2-6/2-6-4/terravault/ordinis!140
2026-05-12 13:00:03 +00:00
Александр Зимин 775b8345e3 feat(timetravel): Records + Schema tabs wired with real data 2026-05-12 13:00:03 +00:00
semantic-release-bot 8878b3f0b6 chore(release): v2.10.0 [skip ci]
## [2.10.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.9.0...v2.10.0) (2026-05-12)

###  Features

* **timetravel:** «Что изменилось» tab — закрывает «backend pending» placeholder ([3dbad1e](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/3dbad1e16ce63cdd1a26e12bcedfcf67b54891cd))

### 🐛 Fixes

* **ux:** friendly error UI вместо raw AxiosError ([3984d99](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/3984d99004ce4a1e7de09cfc0a1d3b6de45f5bad))
2026-05-12 12:51:35 +00:00
Александр Зимин c412424586 Merge branch 'feat/timetravel-changes-tab-wireup' into 'main'
feat(timetravel): «Что изменилось» tab — закрывает «backend pending» placeholder

See merge request 2-6/2-6-4/terravault/ordinis!139
2026-05-12 12:45:55 +00:00
Александр Зимин 3dbad1e16c feat(timetravel): «Что изменилось» tab — закрывает «backend pending» placeholder 2026-05-12 12:45:55 +00:00
Александр Зимин 735cc955fc Merge branch 'fix/friendly-error-ui-5xx' into 'main'
fix(ux): friendly error UI вместо raw AxiosError

See merge request 2-6/2-6-4/terravault/ordinis!138
2026-05-12 12:41:48 +00:00
Александр Зимин 3984d99004 fix(ux): friendly error UI вместо raw AxiosError 2026-05-12 12:41:48 +00:00
semantic-release-bot db0986d235 chore(release): v2.9.0 [skip ci]
## [2.9.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.8.0...v2.9.0) (2026-05-12)

###  Features

* **webhooks:** stats cards dashboard на subscription detail ([d864a85](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/d864a8561a3f34440d2ef2e0413037bd40c1c73c))
2026-05-12 12:31:16 +00:00
Александр Зимин aa91057f8f Merge branch 'feat/webhook-delivery-dashboard' into 'main'
feat(webhooks): stats cards dashboard на subscription detail

See merge request 2-6/2-6-4/terravault/ordinis!137
2026-05-12 12:25:15 +00:00
Александр Зимин d864a8561a feat(webhooks): stats cards dashboard на subscription detail 2026-05-12 12:25:15 +00:00
Александр Зимин 59a5c65606 Merge branch 'chore/semantic-release-changelog-cleanup' into 'main'
chore(release): remove bare 'BREAKING' noteKeyword + lesson doc

See merge request 2-6/2-6-4/terravault/ordinis!136
2026-05-12 12:18:46 +00:00
Александр Зимин 56e3e3d1be chore(release): remove bare 'BREAKING' noteKeyword + lesson doc 2026-05-12 12:18:46 +00:00
Александр Зимин 1b68721afa Merge branch 'chore/font-audit-text-tokens' into 'main'
chore(theme): font audit — arbitrary px → semantic tokens (1/6 Stage 3.x)

See merge request 2-6/2-6-4/terravault/ordinis!135
2026-05-12 12:09:53 +00:00
Александр Зимин 8360c39a45 chore(theme): font audit — arbitrary px → semantic tokens (1/6 Stage 3.x) 2026-05-12 12:09:52 +00:00
semantic-release-bot 9fc2ed5b35 chore(release): v2.8.0 [skip ci]
## [2.8.0](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/compare/v2.7.0...v2.8.0) (2026-05-12)

###  Features

* **reviews:** tabs UX — Записи / Схемы (D) ([a49e01b](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/a49e01b6c965279cc6a6e534245f73285f7271ae))
* **schema-workflow:** PATCH /drafts/{id} — edit без recreate (A) ([b3a9104](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/b3a9104d5469bb2e9c57360ff9fbbee64f29a779))
* **webhooks:** event-type multi-select + schema draft events (E) ([27ffd36](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/27ffd36dcaf204424fb24fdddf2b6cd5c1d215ab))
* **workflow:** Monaco editor для proposed schema (C) ([ef5bd69](https://git.nstart.cloud/2-6/2-6-4/terravault/ordinis/commit/ef5bd69c40dc272f8d0910b5a277034e68e013ab))
2026-05-12 11:53:59 +00:00
Александр Зимин 9129bf08e7 Merge branch 'feat/webhook-schema-draft-events' into 'main'
feat(webhooks): event-type multi-select + schema draft events (E)

See merge request 2-6/2-6-4/terravault/ordinis!134
2026-05-12 11:48:34 +00:00
Александр Зимин 27ffd36dca feat(webhooks): event-type multi-select + schema draft events (E) 2026-05-12 11:48:34 +00:00
Александр Зимин 53ebfc3f9d Merge branch 'feat/reviews-tabs-records-schemas' into 'main'
feat(reviews): tabs UX — Записи / Схемы (D)

See merge request 2-6/2-6-4/terravault/ordinis!133
2026-05-12 11:44:46 +00:00