Commit Graph

589 Commits

Author SHA1 Message Date
Александр Зимин d5c2e27e27 Merge branch 'fix/version-channel-label' into 'main'
fix(version): channel-based label (dev/local), no stale package.json fallback

See merge request 2-6/2-6-4/terravault/ordinis!49
2026-05-11 11:45:18 +00:00
Zimin A.N. 3223a5ced7 fix(version): channel-based label, no semver fallback for branch builds
Stale package.json создавал ложное впечатление rollback'а: staging
показывал "v1.2.0" хотя последний tag — v1.2.2 (package.json не bump'ился
со времён v1.2.0 release).

Vote A — branch builds НЕ используют package.json как version label.
Vite определяет channel:

  serverTag != none → что прод/staging RUNS
  clientTag         → что build'ил CI tag pipeline (CI_COMMIT_TAG set)
  CI без tag        → 'dev' literal (staging / branch CI build)
  локально          → 'local' literal (pnpm dev)

Detection через новый __APP_CI__ define из process.env.CI (GitLab сетает
CI=true). Local pnpm dev: CI undefined → channel='local'.

package.json.version всё ещё инжектится как __APP_VERSION__ и видна в
tooltip badge'а как 'floor vX.Y.Z' — не как primary label.

Files:
  - vite.config.ts: + APP_CI from process.env.CI
  - src/vite-env.d.ts: + __APP_CI__ declare
  - src/components/version/useAppVersion.ts: + clientCI
  - src/components/version/VersionBadge.tsx: channel logic вместо fallback

Verify all three modes:
  local         → 'local · {commit}'
  CI branch     → 'dev · {commit}'
  CI tag v1.3.1 → 'v1.3.1 · {commit}'

Tests: 116 pass.
2026-05-11 14:45:04 +03:00
Александр Зимин 7f6ffd0d11 Merge branch 'feat/stage-3.5a-record-drawer' into 'main'
feat(record): Stage 3.5a RecordDrawer slide-over (Phase A)

See merge request 2-6/2-6-4/terravault/ordinis!48
2026-05-11 11:39:57 +00:00
Zimin A.N. 750395da09 feat(record): RecordDrawer slide-over per Stage 3.5 handoff (Phase A)
Заменяет Modal-based record create/edit на right slide-over drawer per
design_handoff_ordinis_mdm/README.md Screen 3.

What's в Phase A (drawer shell + sticky chrome):

- src/components/record/RecordDrawer.tsx (NEW)
  - Two widths: 520px default / 880px wide, toggle через ‹/› button.
    Persists в localStorage 'ord-drawer-wide'.
  - Sticky header: caption (cap style) + recordId mono + width-toggle +
    history button (edit mode) + ×.
  - Sticky footer: [Удалить] (danger, edit mode) · 'не сохранено · N полей'
    caption · [Отмена] · [Сохранить] (drives form submit через form attr).
  - Built на shadcn Sheet primitive + Radix Dialog. Override sheetVariants
    inline для transition-able max-width (variant size не toggle'ится
    smoothly без animate prop).
  - aria-labelledby wires DialogTitle к содержимому header.
  - Mobile <880px: w-full fullscreen (per handoff responsive table).

- src/components/form/SchemaDrivenForm.tsx
  - New optional props: formId, onDirtyChange.
  - Когда formId передан — внутренний FormActions footer прячется (drawer
    footer driving submit через <button form={formId} type=submit>).
  - Dirty-count считается из RHF formState.dirtyFields (top-level + data.*).
  - useEffect surfaces count к parent — drawer footer caption updates live.

- src/routes/dictionaries.$name.tsx
  - Modal create/edit -> RecordDrawer.
  - State: + recordDirtyCount (reset на close).
  - onDelete wires к existing close-confirm flow (kind: 'close-confirm').
  - onHistory wires к existing setHistoryKey RecordHistoryDrawer.

- src/i18n.ts
  - + form.delete, form.unsavedNFields_one/few/many/other (i18next plural rules).
  - + drawer.{collapse,expand,close,captionEdit,captionCreate}.

Phase B (TODO Stage 3.5b — separate MR):
- Section anchor chips (sticky strip)
- Wide-mode left ToC rail (180px)
- Sticky toolbar: search + 'только заполненные' toggle + counter
- Requires x-section schema metadata в backend properties (CEO open question #5 в handoff)

Tests: 8 files, 116 tests pass. TS strict clean.
2026-05-11 14:39:38 +03:00
Александр Зимин 2d3125f544 Merge branch 'fix/v1.3.1-fonts-semantic-audit' into 'main'
fix(fonts): semantic typography utilities per handoff (7 roles)

See merge request 2-6/2-6-4/terravault/ordinis!47
2026-05-11 11:31:55 +00:00
Zimin A.N. b94912789f fix(fonts): semantic typography utilities per handoff (7 roles)
Заменяет blanket override из MR !45 на типизированную type scale per
design_handoff_ordinis_mdm/README.md "Scale" section.

Семь semantic @utility в styles.css:
  text-title-xl  22/600   — modal title, section header
  text-title-lg  17/600   — page title в editor
  text-title-md  15/600   — dictionary card title
  text-body      13/400   — workhorse: body, buttons, tabs, inputs
  text-cell      12.5/500 — table cell text
  text-mono      11/500   — Mono: IDs, dates, FK refs (font-mono baked in)
  text-cap       10.5/600 — Tektur UPPERCASE caption (font/uppercase baked in)

Audit phases:
  P1: добавил 7 утилит, font/uppercase/tracking baked где надо
  P2: 43 deterministic codemods (font-mono+text-2xs/[11px] → text-mono,
      [15/17/22]px+font-semibold → text-title-*, [12.5]px → text-cell,
      [10.5]px+uppercase+tracking → text-cap)
  P3: 64 text-sm → text-body (handoff workhorse), 84 text-2xs context-aware
      (TableCell → text-cell, bare → text-cell, плюс cleanup caps в backticks
      template literals который Phase 2 пропустил), 25 text-xs (6 → text-mono
      когда с font-mono, 19 → text-cell), 8 titles text-base/lg → text-title-*
  P4: убрал --text-2xs override (no users), оставил --text-sm: 13px scoped
      к @nstart/ui passthrough (см. comment в styles.css — убирается в Stage 3.9)

Stats:
  text-body: 69 | text-cell: 99 | text-mono: 50 | text-cap: 42
  text-title-xl: 5 | text-title-lg: 5 | text-title-md: 7
  text-sm/text-2xs/text-xs в src/: 0 (только в styles.css комментариях)

Поведение всех 277 typography usages теперь явно соответствует handoff —
каждое место осознанно выбрано под роль, не плажирующий override.
2026-05-11 14:31:35 +03:00
Александр Зимин 715b009e00 Merge branch 'fix/v1.3.1-version-from-ci-tag' into 'main'
fix(version): CI_COMMIT_TAG as source of truth, no more manual bumps

See merge request 2-6/2-6-4/terravault/ordinis!46
2026-05-11 11:20:12 +00:00
Zimin A.N. e62633d903 fix(version): read CI_COMMIT_TAG as source of truth, package.json as fallback
Previously: vite read package.json.version only, requiring manual bump
before each tag pipeline (manual sync ломалось — MR !44 пример костыля).

Now: vite reads CI_COMMIT_TAG (passed via Dockerfile ARG GIT_TAG from
.gitlab-ci.yml .docker_base) → strips 'v' prefix → exposes как __APP_TAG__.
'none' sentinel filtered → empty string → fallback к package.json.

VersionBadge priority chain:
  1. serverTag (что прод RUNS, через /api/v1/version)
  2. clientTag (что build'илось на tag pipeline)
  3. v${clientVersion} (package.json fallback floor для local / branch)

Dockerfile: add ARG GIT_TAG=none, ENV CI_COMMIT_TAG=$GIT_TAG (mirrors
существующий pattern с GIT_COMMIT → CI_COMMIT_SHORT_SHA).

Revert package.json 1.3.1 → 1.2.0 (manual bump из MR !44). Версия теперь
follows tag, не наоборот.
2026-05-11 14:19:50 +03:00
Александр Зимин c11b00a81d Merge branch 'fix/v1.3.1-fonts-handoff' into 'main'
fix(fonts): align all text sizes to handoff spec via Tailwind theme

See merge request 2-6/2-6-4/terravault/ordinis!45
2026-05-11 11:13:25 +00:00
Zimin A.N. 71432e9ae7 fix(fonts): align all text sizes to handoff spec via Tailwind theme overrides
Глобальные правки через @theme в styles.css вместо 200+ точечных правок:

- text-sm: 14px -> 13px (handoff workhorse — body, buttons, tabs)
- text-2xs: undefined -> 11px (handoff IDs, mono meta — было невидимо)
- @utility text-cap: 10.5px Tektur uppercase 0.10em (handoff caps)

Codemod (30 sites): text-2xs + uppercase + tracking-[0.10em] -> text-cap.
Sidebar section labels consolidated с explicit text-[10.5px] на text-cap.

Покрывает 64 text-sm + 148 text-2xs автоматически. Table cells (12.5px)
и page/modal titles (17px/22px) остаются explicit text-[Npx] arbitrary
values по месту — нет slots в Tailwind scale.
2026-05-11 14:12:57 +03:00
Александр Зимин f2db543be4 Merge branch 'fix/v1.3.1-version-badge' into 'main'
fix(version): bump to 1.3.1 and show 8-char commit hash

See merge request 2-6/2-6-4/terravault/ordinis!44
2026-05-11 11:09:31 +00:00
Zimin A.N. 780de70fc5 fix(version): bump to 1.3.1 and show 8-char commit hash
VersionBadge показывал 1.2.0 (stale package.json) и truncate коммита на
7 символов. Пользователь ожидал v1.3.1 · 4c7fa8d7 (full 8-char short).

- package.json: 1.2.0 -> 1.3.1
- VersionBadge: substring(0, 7) -> substring(0, 8)
- vite.config: git rev-parse --short=8 для consistency с CI_COMMIT_SHORT_SHA
2026-05-11 14:09:03 +03:00
Александр Зимин 4c7fa8d724 Merge branch 'fix/v1.3.1-fonts-sidebar' into 'main'
fix(admin-ui): sidebar fonts per handoff

See merge request 2-6/2-6-4/terravault/ordinis!43
2026-05-11 10:56:46 +00:00
Александр Зимин 0297745d13 fix(admin-ui): sidebar fonts per handoff 2026-05-11 10:56:46 +00:00
Zimin A.N. f72aac6398 fix(admin-ui): sidebar font sizes per handoff spec
- Section labels (WORKFLOW / АДМИНИСТРИРОВАНИЕ): text-2xs (12px) → 10.5px
  Tektur per handoff caption spec. "Администрирование" не вылазит за
  220px sidebar.
- Nav items: text-sm (14px) → text-[13px] handoff body workhorse size.
- Badge counters: text-2xs (12px) → text-[11px] (mono IDs spec).

Partial — full font audit pending (Stage 3.x font sweep). См. nsi-hot.md.
2026-05-11 13:56:38 +03:00
Александр Зимин c2ce7a0afb Merge branch 'feat/v1.3.0-editor-tabs' into 'main'
feat(admin-ui): editor 6-tab layout (Stage 3.4)

See merge request 2-6/2-6-4/terravault/ordinis!42
2026-05-11 10:54:33 +00:00
Александр Зимин 640c890d0b feat(admin-ui): editor 6-tab layout (Stage 3.4) 2026-05-11 10:54:33 +00:00
Zimin A.N. 0ddba871f7 feat(admin-ui): editor 6-tab layout (Stage 3.4)
Dictionary editor route теперь имеет TabBar (handoff design Stage 3.4):
  Records | Relations | Fields | JSON | Events | History

URL-synced через ?tab= (default: records). Backward-compat: старый
?view=hub auto-remap'нется в ?tab=relations при mount'е.

Tab contents:
- records (default): существующий records table + filters + edit modal
  flow — без изменений, обёрнут в conditional render
- relations: DictionaryHubView (был раньше при view=hub)
- fields: schema properties summary — name/type/required/unique/i18n/FK/desc
- json: pretty-printed schemaJson read-only
- events: link к /audit с pre-filled dict filter
- history: placeholder (schema version timeline — backend endpoint pending)

EditorTabBar — inline component с handoff styling (border-b border-line +
active accent border + font-semibold), -mb-px overlap для clean look.

Hub view's neighbor cards теперь search={tab:'relations'} вместо
view='hub' (consistent с new param).

DictionaryDependentsPanel рендерится только в Records tab — auto Hub view
в Relations tab уже включает dependents через свой layout.

Tests: 116/116 PASS, build green, TS clean.
2026-05-11 13:54:26 +03:00
Александр Зимин 5ffa8d3c86 Merge branch 'fix/v1.2.3-banner-generic' into 'main'
fix(admin-ui): UpdateBanner generic message

See merge request 2-6/2-6-4/terravault/ordinis!41
2026-05-11 10:39:35 +00:00
Александр Зимин dc0002f379 fix(admin-ui): UpdateBanner generic message 2026-05-11 10:39:35 +00:00
Александр Зимин d7be927a7a Merge branch 'fix/v1.2.2-update-banner-none' into 'main'
fix(admin-ui): UpdateBanner none-version + tokens

See merge request 2-6/2-6-4/terravault/ordinis!40
2026-05-11 10:29:45 +00:00
Александр Зимин 4122aa1fc6 fix(admin-ui): UpdateBanner none-version + tokens 2026-05-11 10:29:45 +00:00
Александр Зимин 7566bd50a9 Merge branch 'fix/v1.2.1-version-display-search' into 'main'
fix(admin-ui): version display + global search submit

See merge request 2-6/2-6-4/terravault/ordinis!39
2026-05-11 10:18:22 +00:00
Александр Зимин 580529b977 fix(admin-ui): version display + global search submit 2026-05-11 10:18:22 +00:00
Александр Зимин 4959dcf30b Merge branch 'feat/v1.2.3-textarea-and-prep' into 'main'
feat(admin-ui): shadcn TextArea (Stage 3.8a)

See merge request 2-6/2-6-4/terravault/ordinis!38
2026-05-11 09:13:10 +00:00
Александр Зимин 649b7c4244 feat(admin-ui): shadcn TextArea (Stage 3.8a) 2026-05-11 09:13:10 +00:00
Александр Зимин 117136be84 Merge branch 'feat/v1.2.2-modals-toast-timetravel' into 'main'
feat(admin-ui): sonner Toast + TimeTravel polish (Stage 3.6+3.7)

See merge request 2-6/2-6-4/terravault/ordinis!37
2026-05-11 09:11:21 +00:00
Александр Зимин e2f1c3527b feat(admin-ui): sonner Toast + TimeTravel polish (Stage 3.6+3.7) 2026-05-11 09:11:21 +00:00
Александр Зимин 057fd09589 Merge branch 'feat/v1.2.1-catalog-refresh' into 'main'
feat(admin-ui): catalog refresh + token migration (Stage 3.2)

See merge request 2-6/2-6-4/terravault/ordinis!36
2026-05-11 09:08:38 +00:00
Александр Зимин 6db2a0c345 feat(admin-ui): catalog refresh + token migration (Stage 3.2) 2026-05-11 09:08:38 +00:00
Александр Зимин 3e19fd2cf9 Merge branch 'feat/v1.2.0-graph-and-catalog' into 'main'
feat(admin-ui): Graph view с d3-force (Stage 3.3)

See merge request 2-6/2-6-4/terravault/ordinis!35
2026-05-11 08:55:53 +00:00
Александр Зимин ec713f9704 feat(admin-ui): Graph view с d3-force (Stage 3.3) 2026-05-11 08:55:53 +00:00
Александр Зимин 098907a89b Merge branch 'feat/v1.1.9-sidebar-topbar' into 'main'
feat(admin-ui): Sidebar 220px + TopBar (Stage 3.1)

See merge request 2-6/2-6-4/terravault/ordinis!34
2026-05-11 08:51:37 +00:00
Александр Зимин b2228c2a29 feat(admin-ui): Sidebar 220px + TopBar (Stage 3.1) 2026-05-11 08:51:37 +00:00
Александр Зимин 6d506fed64 Merge branch 'feat/v1.1.8-ui-codemod' into 'main'
feat(admin-ui): codemod @nstart/ui → @/ui (Stage 2.2)

See merge request 2-6/2-6-4/terravault/ordinis!33
2026-05-10 22:17:06 +00:00
Александр Зимин b7d2fbd7ce feat(admin-ui): codemod @nstart/ui → @/ui (Stage 2.2) 2026-05-10 22:17:06 +00:00
Александр Зимин 0710efb8ce Merge branch 'chore/vite-dev-https-proxy' into 'main'
chore(admin-ui): vite proxy fix для HTTPS upstream

See merge request 2-6/2-6-4/terravault/ordinis!32
2026-05-10 22:07:45 +00:00
Александр Зимин be346349d4 chore(admin-ui): vite proxy fix для HTTPS upstream 2026-05-10 22:07:45 +00:00
Александр Зимин e24c2f6728 Merge branch 'ci/v1.1.x-faster-builds' into 'main'
ci: BuildKit cache в docker publish (-10 мин)

See merge request 2-6/2-6-4/terravault/ordinis!31
2026-05-10 21:56:35 +00:00
Александр Зимин 5a4f04a79b ci: BuildKit cache в docker publish (-10 мин) 2026-05-10 21:56:35 +00:00
Александр Зимин 0f83e99a46 Merge branch 'feat/v1.1.7-shadcn-primitives' into 'main'
feat(admin-ui): shadcn primitives + @/ui barrel (Stage 2.1)

See merge request 2-6/2-6-4/terravault/ordinis!30
2026-05-10 21:47:24 +00:00
Александр Зимин 5d12c89c4f feat(admin-ui): shadcn primitives + @/ui barrel (Stage 2.1) 2026-05-10 21:47:24 +00:00
Александр Зимин 1207259e31 Merge branch 'feat/v1.1.6-shadcn-foundation' into 'main'
feat(admin-ui): shadcn/ui + Tailwind v4 foundation + theme switch

See merge request 2-6/2-6-4/terravault/ordinis!29
2026-05-10 21:46:47 +00:00
Александр Зимин 3bfa7cae17 feat(admin-ui): shadcn/ui + Tailwind v4 foundation + theme switch 2026-05-10 21:46:47 +00:00
Александр Зимин c11a70128c Merge branch 'fix/v1.1.5-guest-nav-401' into 'main'
fix(admin-ui): guest nav filter + suppress drafts 401

See merge request 2-6/2-6-4/terravault/ordinis!28
2026-05-10 21:19:07 +00:00
Александр Зимин c57003cd73 fix(admin-ui): guest nav filter + suppress drafts 401 2026-05-10 21:19:07 +00:00
Александр Зимин 35c4974a2e Merge branch 'fix/v1.1.4-no-loading-gate' into 'main'
fix(admin-ui): RequireAuth не блокирует UI пока silent SSO loading

See merge request 2-6/2-6-4/terravault/ordinis!27
2026-05-10 21:15:14 +00:00
Александр Зимин 2902730b1e fix(admin-ui): RequireAuth не блокирует UI пока silent SSO loading 2026-05-10 21:15:14 +00:00
Александр Зимин 87d4d08b8f Merge branch 'fix/v1.1.3-nginx-search-routes' into 'main'
fix(admin-ui): nginx /api/v1/search и /api/v1/records/ → writer

See merge request 2-6/2-6-4/terravault/ordinis!26
2026-05-10 20:12:30 +00:00
Александр Зимин 09f066ba2b fix(admin-ui): nginx /api/v1/search и /api/v1/records/ → writer 2026-05-10 20:12:30 +00:00