bijux-cli 0.1.1__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -142,3 +142,7 @@ artifacts/
142
142
  artifacts
143
143
  .cache
144
144
  changelog.d/*.md
145
+ docs/reference
146
+ docs/reference/
147
+
148
+
@@ -23,7 +23,37 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
23
23
 
24
24
  <!-- towncrier start -->
25
25
 
26
+ <a id="v0-1-2"></a>
27
+ ## [0.1.2] – 2025-08-17
28
+
29
+ ### Added
30
+ * **New Documentation Engine:** Introduced a new modular documentation builder in `scripts/docs_builder/` that replaces the previous helper script.
31
+ * **CI Artifact Pages:** The documentation site now automatically generates detailed pages for all CI artifacts, including tests, linting, code quality, security, API tests, SBOMs, and citation files.
32
+ * **Release Evidence:** The `publish` workflow now downloads all artifacts from the `CI` run, packages them as `evidence/*.tar.gz` bundles, and attaches them to the GitHub Release for traceability.
33
+ * **Build Hygiene:** Makefiles now enforce a "hygienic" build process, ensuring all temporary files, caches, and build outputs are stored under the `artifacts/` directory to prevent root directory pollution.
34
+
35
+ ### Changed
36
+ * **CI/CD Overhaul:**
37
+ * The `ci.yml` workflow now uploads each category of artifact separately for better organization and downstream consumption.
38
+ * The `docs.yml` workflow now waits for the main `CI` run to complete, downloads all artifacts, and uses them to build a data-rich documentation site.
39
+ * The `publish.yml` workflow has been streamlined and made more robust, removing the optional "wait for docs" step and improving tag detection.
40
+ * **Documentation Content:** All top-level Markdown documents (`README.md`, `USAGE.md`, `TESTS.md`, `TOOLING.md`, `CONTRIBUTING.md`, etc.) have been significantly rewritten and expanded with tables of contents, `back-to-top` links, and cross-references to the new artifact pages.
41
+ * **Build System:**
42
+ * All `Makefile` modules have been refactored to use the new hygienic `artifacts/` directory structure for outputs and caches.
43
+ * `tox.ini` has been updated to align with the new Makefile targets and to run a comprehensive suite of checks for the `py311` environment, mirroring the full CI validation process.
44
+ * **API Schema:** The OpenAPI `schema.yaml` has been improved with stricter validation (`additionalProperties: false`), better descriptions, response links, and more detailed examples.
45
+ * **Source Code:** Refactored async handling in `src/bijux_cli/api.py` and improved type safety across multiple modules by removing `pyright: ignore` comments and adding explicit `cast` calls where necessary.
46
+
47
+ ### Fixed
48
+ * **Type Safety:** Resolved numerous previously ignored type errors throughout the codebase and test suite.
49
+ * **API Endpoint Logic:** Corrected the item update logic in `src/bijux_cli/httpapi.py` by removing a faulty check for duplicate names that was causing incorrect 409 Conflict errors.
50
+ * **Test Suite:** Improved the stability and correctness of E2E tests by enhancing golden file comparisons and fixing brittle assertions.
51
+
52
+ [Back to top](#top)
53
+
54
+
26
55
  <a id="v0-1-1"></a>
56
+
27
57
  ## [0.1.1] – 2025-08-14
28
58
 
29
59
  ### Added
@@ -62,6 +92,7 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
62
92
  ---
63
93
 
64
94
  <a id="v0-1-0"></a>
95
+
65
96
  ## [0.1.0] – 2025-08-12
66
97
 
67
98
  ### Added
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bijux-cli
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Lean, plug-in-driven CLI kernel
5
5
  Project-URL: Homepage, https://github.com/bijux/bijux-cli
6
6
  Project-URL: Repository, https://github.com/bijux/bijux-cli.git
7
7
  Project-URL: Bug Tracker, https://github.com/bijux/bijux-cli/issues
8
8
  Project-URL: Documentation, https://bijux.github.io/bijux-cli/
9
- Project-URL: Changelog, https://bijux.github.io/bijux-cli/changelog/
9
+ Project-URL: Changelog, https://bijux.github.io/bijux-cli/changelog
10
10
  Project-URL: Discussions, https://github.com/bijux/bijux-cli/discussions
11
11
  Author-email: Bijan Mousavi <mousavi.bijan@gmail.com>
12
12
  License: MIT License
@@ -72,7 +72,7 @@ Requires-Dist: anyio<5.0,>=4.4.0; extra == 'dev'
72
72
  Requires-Dist: bandit<2.0,>=1.7.10; extra == 'dev'
73
73
  Requires-Dist: build<2.0,>=1.0.3; extra == 'dev'
74
74
  Requires-Dist: codespell<3.0,>=2.3.0; extra == 'dev'
75
- Requires-Dist: commitizen<4.0,>=3.21.0; extra == 'dev'
75
+ Requires-Dist: commitizen<5.0,>=4.0.0; extra == 'dev'
76
76
  Requires-Dist: cosmic-ray>=4.0.0; extra == 'dev'
77
77
  Requires-Dist: deptry<1.0,>=0.10.0; extra == 'dev'
78
78
  Requires-Dist: hypothesis-jsonschema<1.0,>=0.23.0; extra == 'dev'
@@ -89,13 +89,13 @@ Requires-Dist: mkdocs-minify-plugin<1.0,>=0.7; extra == 'dev'
89
89
  Requires-Dist: mkdocs-redirects<2.0,>=1.2; extra == 'dev'
90
90
  Requires-Dist: mkdocs<2.0,>=1.6.1; extra == 'dev'
91
91
  Requires-Dist: mkdocstrings[python]<1.0,>=0.26.1; extra == 'dev'
92
- Requires-Dist: mutmut<3.0,>=2.1.0; extra == 'dev'
92
+ Requires-Dist: mutmut>=3.0; extra == 'dev'
93
93
  Requires-Dist: mypy<2.0,>=1.11.2; extra == 'dev'
94
94
  Requires-Dist: openapi-spec-validator<1.0,>=0.7.1; extra == 'dev'
95
95
  Requires-Dist: pexpect<5.0,>=4.8.0; extra == 'dev'
96
96
  Requires-Dist: pip-audit<3.0,>=2.7.3; extra == 'dev'
97
- Requires-Dist: prance<1.0,>=0.22.0; extra == 'dev'
98
- Requires-Dist: pre-commit<4.0,>=3.8.0; extra == 'dev'
97
+ Requires-Dist: prance>=25.4.0.0; extra == 'dev'
98
+ Requires-Dist: pre-commit>=4.0; extra == 'dev'
99
99
  Requires-Dist: pydocstyle<7.0,>=6.2.1; extra == 'dev'
100
100
  Requires-Dist: pyright<2.0,>=1.1.320; extra == 'dev'
101
101
  Requires-Dist: pytest-asyncio<2.0,>=1.0.0; extra == 'dev'
@@ -105,14 +105,15 @@ Requires-Dist: pytest-rerunfailures<14.0,>=13.0; extra == 'dev'
105
105
  Requires-Dist: pytest-timeout<3.0,>=2.4.0; extra == 'dev'
106
106
  Requires-Dist: pytest<9.0,>=8.4.1; extra == 'dev'
107
107
  Requires-Dist: pytype>=2024.10.11; extra == 'dev'
108
- Requires-Dist: radon<6.0,>=5.1.0; extra == 'dev'
108
+ Requires-Dist: radon>=6.0.0; extra == 'dev'
109
109
  Requires-Dist: reuse<6.0.0,>=4.0.0; extra == 'dev'
110
110
  Requires-Dist: ruff<1.0,>=0.6.8; extra == 'dev'
111
- Requires-Dist: schemathesis<4.0,>=3.16.0; extra == 'dev'
111
+ Requires-Dist: schemathesis<5.0,>=4.0; extra == 'dev'
112
112
  Requires-Dist: towncrier<25.0,>=23.0; extra == 'dev'
113
113
  Requires-Dist: twine<7.0,>=6.1.0; extra == 'dev'
114
114
  Requires-Dist: types-colorama<1.0,>=0.0.14; extra == 'dev'
115
115
  Requires-Dist: types-orjson<4.0,>=3.6.0; extra == 'dev'
116
+ Requires-Dist: types-pexpect<5.0,>4.9.0; extra == 'dev'
116
117
  Requires-Dist: types-psutil<7.0,>=6.0.0; extra == 'dev'
117
118
  Requires-Dist: types-pyyaml<7.0,>=6.0.12; extra == 'dev'
118
119
  Requires-Dist: typing-extensions<5.0,>=4.5.0; extra == 'dev'
@@ -132,8 +133,10 @@ Description-Content-Type: text/markdown
132
133
  [![CI Status](https://github.com/bijux/bijux-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/bijux/bijux-cli/actions)
133
134
 
134
135
  > **At a glance:** Plugin-driven • deterministic flags • DI for testability • REPL • structured JSON/YAML
135
- > **Quality:** **2,600+ tests** across layers with **98%+ coverage**. Multi-version CI. Docs build enforced. No telemetry.
136
-
136
+ > **Quality:** **2,600+ tests** across layers with **98%+ coverage** (see
137
+ > [Test Artifacts](artifacts/test.md) and
138
+ > <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage</a>).
139
+ > Multi-version CI. Docs build enforced. No telemetry.
137
140
  ---
138
141
 
139
142
  ## Table of Contents
@@ -430,6 +433,11 @@ make test-unit # unit tests only
430
433
  make test-e2e # end-to-end tests only
431
434
  ```
432
435
 
436
+ **Artifacts:** [Test Artifacts](artifacts/test.md) ·
437
+ [JUnit report](artifacts/test.md#junit-xml) ·
438
+ <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage report</a>
439
+
440
+
433
441
  [Back to top](#top)
434
442
 
435
443
  ---
@@ -482,6 +490,9 @@ Track progress and suggest features via [Issues](https://github.com/bijux/bijux-
482
490
  * **Security** (private reports): [https://github.com/bijux/bijux-cli/security/advisories/new](https://github.com/bijux/bijux-cli/security/advisories/new)
483
491
  * **Tests:** See **[TESTS.md](TESTS.md)**
484
492
  * **Project Tree:** See **[PROJECT\_TREE.md](PROJECT_TREE.md)**
493
+ * **Artifacts:** Browse all reports & logs — [index](artifacts/index.md)
494
+ · [Tests](artifacts/test.md) · [Lint](artifacts/lint.md) · [Quality](artifacts/quality.md)
495
+ · [Security](artifacts/security.md) · [SBOM](artifacts/sbom.md) · [API](artifacts/api.md) · [Citation](artifacts/citation.md)
485
496
 
486
497
  *When filing issues, include `--debug` output where possible.*
487
498
 
@@ -544,7 +555,37 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
544
555
 
545
556
  <!-- towncrier start -->
546
557
 
558
+ <a id="v0-1-2"></a>
559
+ ## [0.1.2] – 2025-08-17
560
+
561
+ ### Added
562
+ * **New Documentation Engine:** Introduced a new modular documentation builder in `scripts/docs_builder/` that replaces the previous helper script.
563
+ * **CI Artifact Pages:** The documentation site now automatically generates detailed pages for all CI artifacts, including tests, linting, code quality, security, API tests, SBOMs, and citation files.
564
+ * **Release Evidence:** The `publish` workflow now downloads all artifacts from the `CI` run, packages them as `evidence/*.tar.gz` bundles, and attaches them to the GitHub Release for traceability.
565
+ * **Build Hygiene:** Makefiles now enforce a "hygienic" build process, ensuring all temporary files, caches, and build outputs are stored under the `artifacts/` directory to prevent root directory pollution.
566
+
567
+ ### Changed
568
+ * **CI/CD Overhaul:**
569
+ * The `ci.yml` workflow now uploads each category of artifact separately for better organization and downstream consumption.
570
+ * The `docs.yml` workflow now waits for the main `CI` run to complete, downloads all artifacts, and uses them to build a data-rich documentation site.
571
+ * The `publish.yml` workflow has been streamlined and made more robust, removing the optional "wait for docs" step and improving tag detection.
572
+ * **Documentation Content:** All top-level Markdown documents (`README.md`, `USAGE.md`, `TESTS.md`, `TOOLING.md`, `CONTRIBUTING.md`, etc.) have been significantly rewritten and expanded with tables of contents, `back-to-top` links, and cross-references to the new artifact pages.
573
+ * **Build System:**
574
+ * All `Makefile` modules have been refactored to use the new hygienic `artifacts/` directory structure for outputs and caches.
575
+ * `tox.ini` has been updated to align with the new Makefile targets and to run a comprehensive suite of checks for the `py311` environment, mirroring the full CI validation process.
576
+ * **API Schema:** The OpenAPI `schema.yaml` has been improved with stricter validation (`additionalProperties: false`), better descriptions, response links, and more detailed examples.
577
+ * **Source Code:** Refactored async handling in `src/bijux_cli/api.py` and improved type safety across multiple modules by removing `pyright: ignore` comments and adding explicit `cast` calls where necessary.
578
+
579
+ ### Fixed
580
+ * **Type Safety:** Resolved numerous previously ignored type errors throughout the codebase and test suite.
581
+ * **API Endpoint Logic:** Corrected the item update logic in `src/bijux_cli/httpapi.py` by removing a faulty check for duplicate names that was causing incorrect 409 Conflict errors.
582
+ * **Test Suite:** Improved the stability and correctness of E2E tests by enhancing golden file comparisons and fixing brittle assertions.
583
+
584
+ [Back to top](#top)
585
+
586
+
547
587
  <a id="v0-1-1"></a>
588
+
548
589
  ## [0.1.1] – 2025-08-14
549
590
 
550
591
  ### Added
@@ -583,6 +624,7 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
583
624
  ---
584
625
 
585
626
  <a id="v0-1-0"></a>
627
+
586
628
  ## [0.1.0] – 2025-08-12
587
629
 
588
630
  ### Added
@@ -10,8 +10,10 @@
10
10
  [![CI Status](https://github.com/bijux/bijux-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/bijux/bijux-cli/actions)
11
11
 
12
12
  > **At a glance:** Plugin-driven • deterministic flags • DI for testability • REPL • structured JSON/YAML
13
- > **Quality:** **2,600+ tests** across layers with **98%+ coverage**. Multi-version CI. Docs build enforced. No telemetry.
14
-
13
+ > **Quality:** **2,600+ tests** across layers with **98%+ coverage** (see
14
+ > [Test Artifacts](artifacts/test.md) and
15
+ > <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage</a>).
16
+ > Multi-version CI. Docs build enforced. No telemetry.
15
17
  ---
16
18
 
17
19
  ## Table of Contents
@@ -308,6 +310,11 @@ make test-unit # unit tests only
308
310
  make test-e2e # end-to-end tests only
309
311
  ```
310
312
 
313
+ **Artifacts:** [Test Artifacts](artifacts/test.md) ·
314
+ [JUnit report](artifacts/test.md#junit-xml) ·
315
+ <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage report</a>
316
+
317
+
311
318
  [Back to top](#top)
312
319
 
313
320
  ---
@@ -360,6 +367,9 @@ Track progress and suggest features via [Issues](https://github.com/bijux/bijux-
360
367
  * **Security** (private reports): [https://github.com/bijux/bijux-cli/security/advisories/new](https://github.com/bijux/bijux-cli/security/advisories/new)
361
368
  * **Tests:** See **[TESTS.md](TESTS.md)**
362
369
  * **Project Tree:** See **[PROJECT\_TREE.md](PROJECT_TREE.md)**
370
+ * **Artifacts:** Browse all reports & logs — [index](artifacts/index.md)
371
+ · [Tests](artifacts/test.md) · [Lint](artifacts/lint.md) · [Quality](artifacts/quality.md)
372
+ · [Security](artifacts/security.md) · [SBOM](artifacts/sbom.md) · [API](artifacts/api.md) · [Citation](artifacts/citation.md)
363
373
 
364
374
  *When filing issues, include `--debug` output where possible.*
365
375
 
@@ -66,6 +66,7 @@ dev = [
66
66
  "types-colorama>=0.0.14,<1.0",
67
67
  "types-psutil>=6.0.0,<7.0",
68
68
  "typing-extensions>=4.5.0,<5.0",
69
+ "types-pexpect>4.9.0,<5.0",
69
70
 
70
71
  "pytest>=8.4.1,<9.0",
71
72
  "pytest-cov>=6.2.1,<7.0",
@@ -83,7 +84,7 @@ dev = [
83
84
  "codespell>=2.3.0,<3.0",
84
85
  "pyright>=1.1.320,<2.0",
85
86
  "pydocstyle>=6.2.1,<7.0",
86
- "radon>=5.1.0,<6.0",
87
+ "radon>=6.0.0",
87
88
 
88
89
  "vulture>=2.7,<3.0",
89
90
  "deptry>=0.10.0,<1.0",
@@ -92,7 +93,7 @@ dev = [
92
93
  "build>=1.0.3,<2.0",
93
94
  "bandit>=1.7.10,<2.0",
94
95
  "pip-audit>=2.7.3,<3.0",
95
- "commitizen>=3.21.0,<4.0",
96
+ "commitizen>=4.0.0,<5.0",
96
97
 
97
98
  "interrogate>=1.7.0,<2.0",
98
99
  "mkdocs>=1.6.1,<2.0",
@@ -107,17 +108,17 @@ dev = [
107
108
  "mkdocs-glightbox>=0.3,<1.0",
108
109
  "mkdocs-material[imaging]>=9.5.39,<10.0",
109
110
 
110
- "prance>=0.22.0,<1.0",
111
+ "prance>=25.4.0.0",
111
112
  "openapi-spec-validator>=0.7.1,<1.0",
112
- "schemathesis>=3.16.0,<4.0",
113
+ "schemathesis>=4.0,<5.0",
113
114
  "anyio>=4.4.0,<5.0",
114
115
  "uvicorn>=0.30.1,<1.0",
115
116
 
116
- "pre-commit>=3.8.0,<4.0",
117
+ "pre-commit>=4.0",
117
118
  "twine>=6.1.0,<7.0",
118
119
  "towncrier>=23.0,<25.0",
119
120
 
120
- "mutmut>=2.1.0,<3.0",
121
+ "mutmut>=3.0",
121
122
  "cosmic-ray>=4.0.0",
122
123
  ]
123
124
 
@@ -129,7 +130,7 @@ bijux = "bijux_cli.__main__:main"
129
130
  "Repository" = "https://github.com/bijux/bijux-cli.git"
130
131
  "Bug Tracker" = "https://github.com/bijux/bijux-cli/issues"
131
132
  "Documentation" = "https://bijux.github.io/bijux-cli/"
132
- "Changelog" = "https://bijux.github.io/bijux-cli/changelog/"
133
+ "Changelog" = "https://bijux.github.io/bijux-cli/changelog"
133
134
  "Discussions" = "https://github.com/bijux/bijux-cli/discussions"
134
135
 
135
136
  # --8<-- [start:bijux]
@@ -1,196 +0,0 @@
1
- # Scripts
2
- <a id="top"></a>
3
-
4
- A small collection of **purpose-built developer utilities** for code hygiene, documentation automation, and release workflow integration.
5
-
6
- ---
7
-
8
- ## Table of Contents
9
-
10
- - [Directory](#directory)
11
- - [Comment Harvester (`helper_comments.py`)](#comment-harvester)
12
- - [MkDocs API & Navigation Generator (`helper_mkdocs.py`)](#mkdocs-api--navigation-generator)
13
- - [Commit Hook – Changelog Fragment Generator (`git-hooks/prepare-commit-msg`)](#commit-hook--changelog-fragment-generator)
14
- - [Towncrier Guard (`check-towncrier-fragment.sh`)](#towncrier-guard)
15
- - [Workflow Philosophy](#workflow-philosophy)
16
-
17
- [Back to top](#top)
18
-
19
- ---
20
-
21
- <a id="directory"></a>
22
-
23
- ## Directory
24
-
25
- ```
26
-
27
- scripts/
28
- ├── README.md
29
- ├── check-towncrier-fragment.sh
30
- ├── git-hooks/
31
- │ └── prepare-commit-msg
32
- ├── helper\_comments.py
33
- └── helper\_mkdocs.py
34
-
35
- ````
36
-
37
- [Back to top](#top)
38
-
39
- ---
40
-
41
- <a id="comment-harvester"></a>
42
-
43
- ## Comment Harvester (`helper_comments.py`)
44
-
45
- Scans a codebase for **all lines containing `#`** (including `# noqa`, `# type: ignore`, and TODO/FIXME notes).
46
-
47
- **Why?**
48
- Build a **baseline** for linter/typing ignore rules and periodically triage technical debt.
49
-
50
- **Usage**
51
-
52
- ```bash
53
- python scripts/helper_comments.py src -o comments.txt -e .py .pyi
54
- ````
55
-
56
- **Sample output**
57
-
58
- ```
59
- src/example.py
60
- 12: def foo(): # noqa: E999
61
- 47: # TODO: refactor
62
- ```
63
-
64
- **Notes**
65
-
66
- * Any `#` is treated as a comment (includes shebangs and inline `#` inside strings).
67
- * Skips unreadable files.
68
- * Respects `--ext` filter.
69
- * Prints a summary path: `Violation lines written to <output>`.
70
-
71
- [Back to top](#top)
72
-
73
- ---
74
-
75
- <a id="mkdocs-api--navigation-generator"></a>
76
-
77
- ## MkDocs API & Navigation Generator (`helper_mkdocs.py`)
78
-
79
- Runs via **mkdocs-gen-files** during MkDocs builds to keep docs in sync.
80
-
81
- **What it does**
82
-
83
- 1. Copies root docs into the site with safe link rewrites:
84
-
85
- * `README.md` → `docs/index.md`
86
- * `USAGE.md` → `docs/usage.md`
87
- * `TESTS.md` → `docs/tests.md`
88
- * `PROJECT_TREE.md` → `docs/project_tree.md`
89
- 2. Ensures a hidden top anchor on copied pages.
90
- 3. Generates **API reference** pages for `src/bijux_cli/**.py` (mkdocstrings).
91
- 4. Creates per-package `reference/**/index.md`.
92
- 5. Builds `nav.md` with **Home / User Guide / Project Tree / Tests / API / Changelog / ADRs / Community**.
93
-
94
- **MkDocs config snippet**
95
-
96
- ```yaml
97
- plugins:
98
- - gen-files:
99
- scripts:
100
- - scripts/helper_mkdocs.py
101
- - literate-nav
102
- - mkdocstrings
103
- ```
104
-
105
- **Local preview**
106
-
107
- ```bash
108
- mkdocs serve # preview
109
- mkdocs build # static site
110
- ```
111
-
112
- [Back to top](#top)
113
-
114
- ---
115
-
116
- <a id="commit-hook--changelog-fragment-generator"></a>
117
-
118
- ## Commit Hook – Changelog Fragment Generator (`git-hooks/prepare-commit-msg`)
119
-
120
- A **Git `prepare-commit-msg` hook** that auto-creates a Towncrier fragment from a **Conventional Commit** subject.
121
-
122
- **Example**
123
-
124
- ```
125
- feat(api): add streaming support
126
- ```
127
-
128
- Produces (timestamped):
129
-
130
- ```
131
- changelog.d/1691940245.feature.md
132
- ```
133
-
134
- **Type mapping**
135
-
136
- * `feat` → `feature`
137
- * `fix` → `bugfix`
138
- * `refactor`/`docs`/`style`/`chore` → `misc`
139
- * others → `misc`
140
-
141
- **Install**
142
-
143
- ```bash
144
- # from repo root
145
- chmod +x scripts/git-hooks/prepare-commit-msg
146
- ln -sf ../../scripts/git-hooks/prepare-commit-msg .git/hooks/prepare-commit-msg
147
- make bootstrap # installs hooks idempotently
148
- ```
149
-
150
- [Back to top](#top)
151
-
152
- ---
153
-
154
- <a id="towncrier-guard"></a>
155
-
156
- ## Towncrier Guard (`check-towncrier-fragment.sh`)
157
-
158
- Blocks commits of types that **should** have a Towncrier fragment if none is staged.
159
-
160
- **Behavior**
161
-
162
- * Skips `Merge`, `Revert`, `fixup!`, `squash!`, and `chore: release` subjects.
163
- * Looks for staged `changelog.d/*.md`.
164
- * Enforces for common types: `feat`, `fix`, `refactor`, `perf`, `docs`.
165
- * Allow override with `TOWNCRIER_ALLOW_SKIP=1`.
166
-
167
- **Wire it up (pre-commit, commit-msg stage)**
168
-
169
- ```yaml
170
- # .pre-commit-config.yaml
171
- repos:
172
- - repo: local
173
- hooks:
174
- - id: towncrier-guard
175
- name: Towncrier fragment required
176
- entry: scripts/check-towncrier-fragment.sh
177
- language: system
178
- stages: [commit-msg]
179
- ```
180
-
181
- Alternatively, call it in CI before merge.
182
-
183
- [Back to top](#top)
184
-
185
- ---
186
-
187
- <a id="workflow-philosophy"></a>
188
-
189
- ## Workflow Philosophy
190
-
191
- * **Automation first** — anything repetitive belongs in a script or hook.
192
- * **Debt visibility** — helper comments are tracked, triaged, and expire.
193
- * **Docs in sync** — API/navigation are regenerated automatically at build time.
194
- * **Release-ready commits** — hooks ensure changelog accuracy.
195
-
196
- [Back to top](#top)
File without changes
File without changes
File without changes
File without changes