diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c97bff..4bd4e07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,3 @@ ### Features * add dialog engine core library ([3f5c89a](https://github.com/k0te1ch/DialogEngine/commit/3f5c89aece8cd3a16d09618571c2f01ef5ddd98e)) -* dialog engine library with poetry, CI and release-please ([1e74a7a](https://github.com/k0te1ch/DialogEngine/commit/1e74a7a07fff484beeb299e7b76a4e2097845a77)) - - -### Documentation - -* add README, usage example and workflow guide ([0c630e7](https://github.com/k0te1ch/DialogEngine/commit/0c630e7cae1fde2125e594366daefab4bf811d51)) diff --git a/README.md b/README.md index 6043606..0c7fba1 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ Commits follow [Conventional Commits](https://www.conventionalcommits.org/); the format is enforced by the `commitizen` hook. Releases, tags, and `CHANGELOG.md` are fully automated via [release-please](https://github.com/googleapis/release-please). See the full -guide with diagrams in [docs/WORKFLOW.md](docs/WORKFLOW.md). +guide with diagrams: [English](docs/WORKFLOW.en.md) · [Русский](docs/WORKFLOW.md). ## Project layout diff --git a/docs/WORKFLOW.en.md b/docs/WORKFLOW.en.md new file mode 100644 index 0000000..947fdb5 --- /dev/null +++ b/docs/WORKFLOW.en.md @@ -0,0 +1,272 @@ +# Workflow: how it all works + +> 🌐 **Languages:** [Русский](WORKFLOW.md) · English (current) + +This document describes the full cycle — from the first `git commit` to a GitHub +Release — and how to organize work through feature branches. + +> All diagrams are written in [Mermaid](https://mermaid.js.org/). GitHub renders +> them automatically. + +--- + +## 1. The big picture + +```mermaid +flowchart TD + A[Local changes] --> B[git commit] + B --> C{pre-commit hooks} + C -- ruff / ruff-format --> C + C -- commit-msg
commitizen --> D{Conventional
Commits?} + D -- no --> X[Commit rejected
fix the message] + D -- yes --> E[Commit created locally] + E --> F[git push to feature branch] + F --> G[Pull Request on GitHub] + G --> H[CI: python-app.yml
pre-commit + pytest] + H -- green --> I[Squash-merge into main
PR title = commit] + I --> J[CI: release-please.yml] + J --> K[release-please opens/
updates the Release PR] + K -- merge Release PR --> L[Tag vX.Y.Z + GitHub Release
+ CHANGELOG.md] + + classDef bad fill:#fee,stroke:#c33; + class X bad; +``` + +The key idea: **commit messages are the "source" of the changelog**. That is why +their format is strictly checked at `git commit` time, before the code even +reaches the server, and release-please turns them into a version and a CHANGELOG. + +--- + +## 2. Conventional Commits — message format + +``` +()!: + + + +