From 0435608ef9b0aa792afb7d678856c60058a40659 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 12 May 2026 18:06:29 +0700 Subject: [PATCH] =?UTF-8?q?chore:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B8=D1=82=D1=8C=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=80=D0=B5=D0=BB=D0=B8=D0=B7=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Уточнены правила формирования сообщений коммитов, включая использование русского языка и уточнение типов изменений (fix/chore/feat). - Добавлена функция для форматирования заголовков коммитов в компоненте модалки релизов, улучшая читаемость. - Обновлены ссылки на правила коммитов в документации для большей ясности. --- .cursor/rules/commit-messages-ru.mdc | 33 ++++++++++++++++++++++++ .cursor/rules/ma-global.mdc | 2 +- .cursor/rules/ma-implementer.mdc | 2 +- .cursor/rules/next-shadcn-production.mdc | 2 +- .cursor/rules/release-versioning.mdc | 6 +++-- AGENTS.md | 10 +++---- components/release-notes-modal.tsx | 31 +++++++++++++++------- 7 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 .cursor/rules/commit-messages-ru.mdc diff --git a/.cursor/rules/commit-messages-ru.mdc b/.cursor/rules/commit-messages-ru.mdc new file mode 100644 index 0000000..e6fdf76 --- /dev/null +++ b/.cursor/rules/commit-messages-ru.mdc @@ -0,0 +1,33 @@ +--- +description: "Generate Commit Message: русский subject, fix vs feat, Conventional Commits" +alwaysApply: true +--- + +# Git commit message (Generate Commit Message) + +При **Generate Commit Message**, автогенерации subject и предложении `git commit`: + +## Язык + +- После `:` — **только русский**. Английский в subject/body запрещён. +- Префикс и scope — английский: `fix(ui):`, `chore(rules):`. + +## Тип: сначала не `feat` + +- **`fix`** — баг, регрессия, правка вёрстки/модалки, некорректное поведение, CI/CD, мелкий дефект. +- **`chore` / `docs` / `ci` / `build`** — правила Cursor, README, workflow, зависимости, рефакторинг без новой UX-фичи. +- **`feat`** — только **новая** пользовательская возможность (страница, API, сценарий), которой не было. + +Если сомневаешься между `feat` и `fix` — выбирай **`fix`** или **`chore`**, не `feat`. + +## Примеры + +- `fix(ui): выровнять модалку сводки релиза` +- `fix(ci): исправить сборку release manifest` +- `chore(rules): усилить правила русских commit message` +- `feat(releases): добавить страницу релизов` + +## Запрещено + +- `feat: update layout`, `fix: add modal`, `chore: update rules` — английский subject. +- `feat` для правки UI, правил, документации и багфиксов. diff --git a/.cursor/rules/ma-global.mdc b/.cursor/rules/ma-global.mdc index ff64d49..bdfd9c1 100644 --- a/.cursor/rules/ma-global.mdc +++ b/.cursor/rules/ma-global.mdc @@ -27,4 +27,4 @@ alwaysApply: false ## Связь с проектом - Полные стандарты проекта (формат ответа, чеклисты) — в правиле **`next-shadcn-production.mdc`** (обычно уже подключено). Эти правила **дополняют** его ролью в пайплайне, не отменяют. -- Сообщения коммитов и ожидаемый semver bump — в **`release-versioning.mdc`**. +- Сообщения коммитов: **`commit-messages-ru.mdc`** (язык и `fix` vs `feat`), semver bump — **`release-versioning.mdc`**. diff --git a/.cursor/rules/ma-implementer.mdc b/.cursor/rules/ma-implementer.mdc index da975ea..9aa434b 100644 --- a/.cursor/rules/ma-implementer.mdc +++ b/.cursor/rules/ma-implementer.mdc @@ -18,7 +18,7 @@ alwaysApply: false - Выравнивать UI/UX с **`/servers`** как с главным эталоном (layout, отступы, сетка, типографика, композиция). - Предпочитать **Server Components**; `'use client'` — только при необходимости интерактива (состояние, браузерные API, обработчики). - UI: по возможности **shadcn/ui**; не вводить новый визуальный/UX-паттерн, если на `/servers` уже есть эквивалент. -- При завершении задачи предлагать subject коммита по **`release-versioning.mdc`** (`fix:` для patch, `feat:` для minor), **описание на русском**. +- При завершении задачи предлагать subject по **`commit-messages-ru.mdc`**: правки UI/багов → `fix`, инфраструктура/правила → `chore`, новая фича → `feat`; описание **на русском**. ## Формат вывода (строго) diff --git a/.cursor/rules/next-shadcn-production.mdc b/.cursor/rules/next-shadcn-production.mdc index ed03aa4..79d7f58 100644 --- a/.cursor/rules/next-shadcn-production.mdc +++ b/.cursor/rules/next-shadcn-production.mdc @@ -9,7 +9,7 @@ alwaysApply: true **Язык:** все ответы пользователю — **только на русском**. -**Git / Generate Commit Message:** subject и body коммита — **на русском** (префикс `feat`/`fix`/scope — на английском). Подробности — **`release-versioning.mdc`**. +**Git / Generate Commit Message:** subject и body — **на русском**; `feat` только для новой UX-фичи, иначе `fix`/`chore`. См. **`commit-messages-ru.mdc`** и **`release-versioning.mdc`**. ## 1. Документация в первую очередь diff --git a/.cursor/rules/release-versioning.mdc b/.cursor/rules/release-versioning.mdc index 9335c2b..32a5906 100644 --- a/.cursor/rules/release-versioning.mdc +++ b/.cursor/rules/release-versioning.mdc @@ -11,8 +11,10 @@ alwaysApply: true - Формат: `тип(scope): описание на русском` — префикс Conventional Commits и scope **на английском**, текст после `:` **только на русском**. - Body и footer (если нужны) — **только на русском**. -- Не использовать английские глаголы в subject: `add`, `update`, `fix`, `implement`, `rename` и т.п. -- Примеры: `feat(releases): добавить модалку сводки релиза`; `fix(ci): исправить сборку release manifest`. +- В описании после `:` не использовать английские слова: `add`, `update`, `implement`, `rename` и т.п. +- **`feat` не по умолчанию.** Сначала проверь `fix` / `chore` / `ci` / `docs`; `feat` — только новая пользовательская возможность. +- Примеры: `fix(ui): выровнять модалку релиза`; `chore(rules): усилить правила commit message`; `feat(releases): добавить страницу релизов`. +- Детальный чеклист типов — **`commit-messages-ru.mdc`**. - Версию **не** править вручную в UI, `package.json` и git-тегах; bump делает CI через [`.ci/scripts/compute-release.mjs`](.ci/scripts/compute-release.mjs). - Базовая линия: `v1.0.0`. Формат отображения: `v1.2.3`. diff --git a/AGENTS.md b/AGENTS.md index 1fb06cb..63b163a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,10 +2,10 @@ ## Сообщения коммитов -При **Generate Commit Message**, предложении subject для `git commit` и любой автогенерации commit message: +При **Generate Commit Message** и любой автогенерации commit message: -- Формат: `feat(scope): описание на русском` (префикс и scope — английский Conventional Commits). -- Текст после двоеточия и body — **только на русском**. -- Плохо: `feat(ui): add release modal`. Хорошо: `feat(ui): добавить модалку сводки релиза`. +1. Subject после `:` — **только на русском**. +2. **`feat` не по умолчанию.** Правка UI/бага/CI → `fix`; правила/README/workflow → `chore`/`ci`; новая пользовательская фича → `feat`. +3. Формат: `fix(ui): выровнять модалку релиза`. -Полные правила semver и примеры — `.cursor/rules/release-versioning.mdc`. +Полные правила: `.cursor/rules/commit-messages-ru.mdc`, semver — `.cursor/rules/release-versioning.mdc`. diff --git a/components/release-notes-modal.tsx b/components/release-notes-modal.tsx index 693a2f1..11b9960 100644 --- a/components/release-notes-modal.tsx +++ b/components/release-notes-modal.tsx @@ -16,6 +16,13 @@ import { formatAppVersionLabel, getAppVersion } from "@/lib/app-version" import type { ReleaseManifest } from "@/lib/release-manifest" import { hasSeenReleaseModal, markReleaseModalSeen } from "@/lib/release-modal-storage" +function formatCommitSubject(subject: string): string { + return subject.replace( + /^(feat|fix|chore|docs|refactor|style|test|build|ci)(\([^)]+\))?!?:\s*/i, + "", + ) +} + export function ReleaseNotesModal() { const [open, setOpen] = React.useState(false) const [manifest, setManifest] = React.useState(null) @@ -56,37 +63,41 @@ export function ReleaseNotesModal() { return ( - - - Что нового в {versionLabel} - + + + + Что нового в {versionLabel} + + Краткая сводка изменений текущего релиза MikrotikManager. -
+
{manifest?.commits.length ? ( -
    +
      {manifest.commits.map((commit) => (
    • -
      +
      {commit.type} {commit.shortSha} {commit.author}
      -

      {commit.subject}

      +

      + {formatCommitSubject(commit.subject)} +

    • ))}
    ) : null}
- +