fix(ci): pin prettier 3.9.0 (codegen-check + pre-commit) + regenerate stale api-types.ts #1981

Merged
lekss361 merged 1 commit from fix/ci-prettier-codegen-pin into main 2026-06-27 11:25:38 +00:00
Collaborator

Repo-wide CI unblockopenapi-codegen-check сейчас RED на любом PR с codegen-регеном (не связано с конкретной фичей).

Причина (проверено эмпирически)

  • Коммитнутый frontend/src/lib/api-types.ts был устаревший — отформатирован старым prettier (3.3–3.6, multi-line union | X\n| null).
  • prettier 3.9.0 поменял перенос union-типов на single-line. И CI (npx prettier = latest = 3.9.0), и pre-commit (mirrors-prettier@v4.0.0-alpha.8 → обёртка над prettier 3.9.0) сейчас оба дают single-line.
  • CI-реген (3.9.0) всегда диффает против устаревшего multi-line коммита → гейт красный. Схема OpenAPI не менялась.
  • Bare npx prettier плавает на latest → будущий 3.10/4.x снова сломает гейт.

Фикс

  • frontend/package.json + lockfile: prettier@3.9.0 (точно) в devDependencies.
  • .forgejo/workflows/ci.yml (openapi-codegen-check): npx prettier./node_modules/.bin/prettier (локальный, запиннутый).
  • .pre-commit-config.yaml: prettier-хук additional_dependencies: ["prettier@3.9.0"] — тот же движок, что в CI.
  • frontend/src/lib/api-types.ts: перегенерён prettier 3.9.0 (6 union multi→single-line, без схемных изменений).

Proof

  • CI-реген byte-стабилен (двойной прогон → идентичные md5; свежий реген vs коммит = 0 diff).
  • pre-commit НЕ реверсит (md5 не меняется). Оба пути на одних байтах.

После merge — остальные открытые PR подтянут через merge main.

**Repo-wide CI unblock** — `openapi-codegen-check` сейчас RED на любом PR с codegen-регеном (не связано с конкретной фичей). ## Причина (проверено эмпирически) - Коммитнутый `frontend/src/lib/api-types.ts` был **устаревший** — отформатирован старым prettier (3.3–3.6, multi-line union `| X\n| null`). - prettier 3.9.0 поменял перенос union-типов на single-line. И CI (`npx prettier` = latest = 3.9.0), и pre-commit (`mirrors-prettier@v4.0.0-alpha.8` → обёртка над prettier 3.9.0) сейчас оба дают single-line. - CI-реген (3.9.0) всегда диффает против устаревшего multi-line коммита → гейт красный. Схема OpenAPI не менялась. - Bare `npx prettier` плавает на `latest` → будущий 3.10/4.x снова сломает гейт. ## Фикс - `frontend/package.json` + lockfile: `prettier@3.9.0` (точно) в devDependencies. - `.forgejo/workflows/ci.yml` (`openapi-codegen-check`): `npx prettier` → `./node_modules/.bin/prettier` (локальный, запиннутый). - `.pre-commit-config.yaml`: prettier-хук `additional_dependencies: ["prettier@3.9.0"]` — тот же движок, что в CI. - `frontend/src/lib/api-types.ts`: перегенерён prettier 3.9.0 (6 union multi→single-line, без схемных изменений). ## Proof - CI-реген byte-стабилен (двойной прогон → идентичные md5; свежий реген vs коммит = 0 diff). - pre-commit НЕ реверсит (md5 не меняется). Оба пути на одних байтах. После merge — остальные открытые PR подтянут через merge main.
bot-backend added 1 commit 2026-06-27 11:13:05 +00:00
fix(ci): pin prettier 3.9.0 for codegen check + pre-commit so api-types is byte-stable
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 1m13s
CI / backend-tests (pull_request) Successful in 12m25s
CI / openapi-codegen-check (pull_request) Successful in 2m10s
ce6e693ea7
openapi-codegen-check был RED на каждом PR: CI шаг гонял bare `npx prettier`
(резолвится в плавающий latest), а committed api-types.ts был отформатирован
старым prettier (≤3.6.2, union-типы multi-line). 3.9.0 переносит union-wrapping
на single-line → CI-регенерация всегда давала diff → gate падал.

Чиним детерминизмом одной версии на обоих путях:
- frontend/package.json: добавлен prettier@3.9.0 (exact) в devDependencies
  + обновлён package-lock.json.
- CI openapi-codegen-check: bare `npx prettier` → ./node_modules/.bin/prettier
  (project-local pinned, не плавает).
- .pre-commit-config.yaml: prettier hook additional_dependencies=["prettier@3.9.0"]
  — тот же движок, что в CI (alpha.8-обёртка байт-в-байт == prettier 3.9.0).
- api-types.ts перегенерирован prettier 3.9.0 (union-типы single-line).

Backend OpenAPI-схема не менялась — только формат. CI-регенерация теперь
байт-в-байт совпадает с committed-файлом и с выводом pre-commit hook.
lekss361 merged commit 11861e5dc0 into main 2026-06-27 11:25:38 +00:00
lekss361 deleted branch fix/ci-prettier-codegen-pin 2026-06-27 11:25:38 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1981
No description provided.