project-guide 1.4.0__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.
Files changed (66) hide show
  1. project_guide-1.4.0/.github/FUNDING.yml +2 -0
  2. project_guide-1.4.0/.github/dependabot.yml +19 -0
  3. project_guide-1.4.0/.github/workflows/ci.yml +73 -0
  4. project_guide-1.4.0/.github/workflows/deploy-docs.yml +54 -0
  5. project_guide-1.4.0/.github/workflows/publish.yml +51 -0
  6. project_guide-1.4.0/.github/workflows/test.yml +49 -0
  7. project_guide-1.4.0/.gitignore +21 -0
  8. project_guide-1.4.0/.project-guides.yml +3 -0
  9. project_guide-1.4.0/.pyve/config +6 -0
  10. project_guide-1.4.0/.tool-versions +1 -0
  11. project_guide-1.4.0/CHANGELOG.md +405 -0
  12. project_guide-1.4.0/LICENSE +201 -0
  13. project_guide-1.4.0/PKG-INFO +481 -0
  14. project_guide-1.4.0/README.md +446 -0
  15. project_guide-1.4.0/docs/guides/README.md +35 -0
  16. project_guide-1.4.0/docs/guides/best-practices-guide.md +277 -0
  17. project_guide-1.4.0/docs/guides/debug-guide.md +469 -0
  18. project_guide-1.4.0/docs/guides/descriptions-guide.md +461 -0
  19. project_guide-1.4.0/docs/guides/developer/codecov-setup-guide.md +181 -0
  20. project_guide-1.4.0/docs/guides/developer/production-mode.md +437 -0
  21. project_guide-1.4.0/docs/guides/documentation-setup-guide.md +808 -0
  22. project_guide-1.4.0/docs/guides/project-guide.md +442 -0
  23. project_guide-1.4.0/docs/site/.gitignore +2 -0
  24. project_guide-1.4.0/docs/site/about/changelog.md +131 -0
  25. project_guide-1.4.0/docs/site/about/license.md +68 -0
  26. project_guide-1.4.0/docs/site/developer-guide/contributing.md +201 -0
  27. project_guide-1.4.0/docs/site/developer-guide/development.md +340 -0
  28. project_guide-1.4.0/docs/site/developer-guide/testing.md +379 -0
  29. project_guide-1.4.0/docs/site/getting-started/configuration.md +94 -0
  30. project_guide-1.4.0/docs/site/getting-started/installation.md +72 -0
  31. project_guide-1.4.0/docs/site/getting-started/quick-start.md +97 -0
  32. project_guide-1.4.0/docs/site/images/project-guide-banner-landing.png +0 -0
  33. project_guide-1.4.0/docs/site/images/project-guide-header-readme.png +0 -0
  34. project_guide-1.4.0/docs/site/index.html +522 -0
  35. project_guide-1.4.0/docs/site/user-guide/commands.md +221 -0
  36. project_guide-1.4.0/docs/site/user-guide/overrides.md +297 -0
  37. project_guide-1.4.0/docs/site/user-guide/workflow.md +282 -0
  38. project_guide-1.4.0/docs/specs/.archive/stories-v1.3.1.md +698 -0
  39. project_guide-1.4.0/docs/specs/descriptions.md +119 -0
  40. project_guide-1.4.0/docs/specs/features.md +351 -0
  41. project_guide-1.4.0/docs/specs/stories.md +223 -0
  42. project_guide-1.4.0/docs/specs/tech-spec.md +577 -0
  43. project_guide-1.4.0/mkdocs.yml +78 -0
  44. project_guide-1.4.0/project_guides/__init__.py +17 -0
  45. project_guide-1.4.0/project_guides/__main__.py +18 -0
  46. project_guide-1.4.0/project_guides/cli.py +489 -0
  47. project_guide-1.4.0/project_guides/config.py +132 -0
  48. project_guide-1.4.0/project_guides/exceptions.py +42 -0
  49. project_guide-1.4.0/project_guides/sync.py +276 -0
  50. project_guide-1.4.0/project_guides/templates/.project-guides.yml.template +3 -0
  51. project_guide-1.4.0/project_guides/templates/guides/README.md +35 -0
  52. project_guide-1.4.0/project_guides/templates/guides/best-practices-guide.md +342 -0
  53. project_guide-1.4.0/project_guides/templates/guides/debug-guide.md +469 -0
  54. project_guide-1.4.0/project_guides/templates/guides/descriptions-guide.md +461 -0
  55. project_guide-1.4.0/project_guides/templates/guides/developer/codecov-setup-guide.md +181 -0
  56. project_guide-1.4.0/project_guides/templates/guides/developer/production-mode.md +437 -0
  57. project_guide-1.4.0/project_guides/templates/guides/documentation-setup-guide.md +808 -0
  58. project_guide-1.4.0/project_guides/templates/guides/project-guide.md +452 -0
  59. project_guide-1.4.0/project_guides/version.py +15 -0
  60. project_guide-1.4.0/pyproject.toml +113 -0
  61. project_guide-1.4.0/tests/__init__.py +13 -0
  62. project_guide-1.4.0/tests/test_cli.py +369 -0
  63. project_guide-1.4.0/tests/test_config.py +118 -0
  64. project_guide-1.4.0/tests/test_integration.py +245 -0
  65. project_guide-1.4.0/tests/test_purge.py +126 -0
  66. project_guide-1.4.0/tests/test_sync.py +409 -0
@@ -0,0 +1,2 @@
1
+ # GitHub Sponsors configuration
2
+ # github: [your-github-username]
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ # Maintain dependencies for GitHub Actions
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ labels:
9
+ - "dependencies"
10
+ - "github-actions"
11
+
12
+ # Maintain dependencies for pip
13
+ - package-ecosystem: "pip"
14
+ directory: "/"
15
+ schedule:
16
+ interval: "weekly"
17
+ labels:
18
+ - "dependencies"
19
+ - "python"
@@ -0,0 +1,73 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ python-version: ['3.11', '3.12', '3.13']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Python ${{ matrix.python-version }}
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python-version }}
24
+
25
+ - name: Install dependencies
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install -e ".[dev]"
29
+
30
+ - name: Run linting
31
+ run: |
32
+ ruff check project_guides/ tests/
33
+
34
+ - name: Run type checking
35
+ run: |
36
+ mypy project_guides/
37
+
38
+ - name: Run tests with coverage
39
+ run: |
40
+ pytest tests/ --cov=project_guides --cov-report=xml --cov-report=term
41
+
42
+ - name: Upload coverage to Codecov
43
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
44
+ uses: codecov/codecov-action@v4
45
+ with:
46
+ file: ./coverage.xml
47
+ fail_ci_if_error: false
48
+
49
+ build:
50
+ runs-on: ubuntu-latest
51
+ needs: test
52
+
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+
56
+ - name: Set up Python
57
+ uses: actions/setup-python@v5
58
+ with:
59
+ python-version: '3.11'
60
+
61
+ - name: Install build dependencies
62
+ run: |
63
+ python -m pip install --upgrade pip
64
+ pip install build
65
+
66
+ - name: Build package
67
+ run: python -m build
68
+
69
+ - name: Upload build artifacts
70
+ uses: actions/upload-artifact@v4
71
+ with:
72
+ name: dist
73
+ path: dist/
@@ -0,0 +1,54 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ pages: write
12
+ id-token: write
13
+
14
+ concurrency:
15
+ group: "pages"
16
+ cancel-in-progress: false
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: '3.11'
31
+
32
+ - name: Install dependencies
33
+ run: |
34
+ pip install -e ".[docs]"
35
+
36
+ - name: Build documentation
37
+ run: |
38
+ mkdocs build --strict
39
+
40
+ - name: Upload artifact
41
+ uses: actions/upload-pages-artifact@v4
42
+ with:
43
+ path: ./site
44
+
45
+ deploy:
46
+ environment:
47
+ name: github-pages
48
+ url: ${{ steps.deployment.outputs.page_url }}
49
+ runs-on: ubuntu-latest
50
+ needs: build
51
+ steps:
52
+ - name: Deploy to GitHub Pages
53
+ id: deployment
54
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,51 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ environment: pypi
11
+ permissions:
12
+ id-token: write # Required for trusted publishing
13
+ contents: read
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: '3.11'
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install -e ".[dev]"
27
+
28
+ - name: Run tests
29
+ run: |
30
+ pytest tests/ --cov=project_guides
31
+
32
+ - name: Run linting
33
+ run: |
34
+ ruff check project_guides/ tests/
35
+
36
+ - name: Run type checking
37
+ run: |
38
+ mypy project_guides/
39
+
40
+ - name: Install build dependencies
41
+ run: |
42
+ pip install build twine
43
+
44
+ - name: Build package
45
+ run: python -m build
46
+
47
+ - name: Check package
48
+ run: twine check dist/*
49
+
50
+ - name: Publish to PyPI
51
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,49 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ schedule:
9
+ # Run tests weekly on Monday at 00:00 UTC
10
+ - cron: '0 0 * * 1'
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ${{ matrix.os }}
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os: [ubuntu-latest, macos-latest, windows-latest]
19
+ python-version: ['3.11', '3.12', '3.13']
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install dependencies
30
+ run: |
31
+ python -m pip install --upgrade pip
32
+ pip install -e ".[dev]"
33
+
34
+ - name: Run tests
35
+ run: |
36
+ pytest tests/ -v --cov=project_guides --cov-report=term-missing
37
+
38
+ - name: Generate coverage report
39
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
40
+ run: |
41
+ pytest tests/ --cov=project_guides --cov-report=xml
42
+
43
+ - name: Upload coverage
44
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
45
+ uses: codecov/codecov-action@v4
46
+ with:
47
+ file: ./coverage.xml
48
+ flags: unittests
49
+ name: codecov-umbrella
@@ -0,0 +1,21 @@
1
+ # macOS only
2
+ .DS_Store
3
+
4
+ # Python build and test artifacts
5
+ __pycache__
6
+ *.egg-info
7
+ .coverage
8
+ coverage.xml
9
+ htmlcov/
10
+ .pytest_cache/
11
+
12
+ # Pyve virtual environment
13
+ .pyve/testenv
14
+ .envrc
15
+ .env
16
+ .venv
17
+ build/
18
+ dist/
19
+
20
+ # MkDocs build output
21
+ /site/
@@ -0,0 +1,3 @@
1
+ version: '1.0'
2
+ installed_version: 1.2.7
3
+ target_dir: docs/guides
@@ -0,0 +1,6 @@
1
+ pyve_version: "1.6.1"
2
+ backend: venv
3
+ venv:
4
+ directory: .venv
5
+ python:
6
+ version: 3.14.3
@@ -0,0 +1 @@
1
+ python 3.14.3
@@ -0,0 +1,405 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.4.0] - 2026-04-03
11
+
12
+ ### Added
13
+ - **Reserved `project-guide` package name on PyPI**
14
+ - Added `project-guide` as a second CLI entry point (maps to the same `project_guides.cli:main`)
15
+ - Both `project-guides` and `project-guide` commands work identically
16
+ - Existing users are unaffected; new users should install `project-guide`
17
+ - The old `project-guides` entry point will be removed in v1.5.0
18
+
19
+ ## [1.3.1] - 2026-03-25
20
+
21
+ ### Added
22
+ - **Prompt before overwriting user-modified guides**
23
+ - `update` command now prompts `Overwrite <guide>? [y/N]` for each modified file
24
+ - User can accept or decline per-file — declined files are reported as skipped
25
+ - `--force` flag skips the prompt, creates a `.bak` backup, and overwrites automatically
26
+ - `--dry-run` shows modified files with a note that they would be prompted
27
+
28
+ ### Changed
29
+ - `sync_guides()` now returns 5-tuple `(updated, skipped, current, missing, modified)`
30
+ - `modified`: files with user edits detected but not yet acted on (caller decides)
31
+ - `--force` moves modified files directly to `updated` list after creating backup
32
+ - `update` output now shows "Updated (backed up):" label when `--force` is used
33
+ - Test suite expanded to 59 tests with `test_sync_guides_force_overwrites_modified_with_backup`
34
+
35
+ ## [1.3.0] - 2026-03-25
36
+
37
+ ### Added
38
+ - **Content-based change detection** in `update` command
39
+ - New `file_matches_template()` function uses SHA-256 hash to compare file content with templates
40
+ - Detects user modifications even when version numbers match
41
+ - `status` command now shows "(modified)" for files with user edits
42
+ - **Missing file detection** in `update` command
43
+ - Missing files are now properly detected and reported separately
44
+ - `update` command displays missing files in cyan with "+" indicator
45
+ - Missing files are always created, even if version numbers match
46
+
47
+ ### Fixed
48
+ - **Critical bug**: `update` command incorrectly reported "all guides are up to date" when files were missing
49
+ - **Critical bug**: `update` command didn't detect user modifications to guide files
50
+ - `sync_guides()` now returns 4-tuple `(updated, skipped, current, missing)` instead of 3-tuple
51
+
52
+ ### Changed
53
+ - Enhanced `status` command output to differentiate between:
54
+ - Outdated version: "(update available)"
55
+ - User modifications: "(modified)"
56
+ - Missing files: "(missing)"
57
+ - Test suite expanded from 53 to 58 tests with 5 new comprehensive tests
58
+
59
+ ## [1.2.7] - 2026-03-10
60
+
61
+ ### Fixed
62
+ - **README banner image URL**
63
+ - Changed from relative path to absolute GitHub URL for PyPI compatibility
64
+ - Banner now displays correctly on https://pypi.org/project/project-guides/
65
+
66
+ ## [1.2.6] - 2026-03-10
67
+
68
+ ### Fixed
69
+ - **Version comparison bug in sync_guides**
70
+ - Fixed logic to properly mark guides as "current" when installed_version matches package_version
71
+ - Added check for non-existent files when versions match
72
+ - Updated test to use dynamic version import instead of hardcoded value
73
+
74
+ ## [1.2.5] - 2026-03-10
75
+
76
+ ### Changed
77
+ - **Updated README.md** with comprehensive documentation integration
78
+ - Added header banner image
79
+ - Updated description with Two-clause Technical Description
80
+ - Added Documentation badge linking to GitHub Pages
81
+ - Added dedicated Documentation section with links to full docs
82
+ - Updated "Why project-guides?" with Friendly Brief Description and HITLoop explanation
83
+ - Updated Key Features with content from Feature Cards
84
+ - **Updated pyproject.toml** metadata
85
+ - Added project.urls section (Homepage, Documentation, Repository, Issues, Changelog)
86
+ - Expanded keywords to 18 items matching descriptions.md
87
+
88
+ ## [1.2.4] - 2026-03-10
89
+
90
+ ### Added
91
+ - **GitHub Actions workflow** for automated documentation deployment
92
+ - `.github/workflows/deploy-docs.yml` for deploying to GitHub Pages
93
+ - Triggers on push to main branch and manual workflow_dispatch
94
+ - Builds with strict mode to fail on warnings
95
+ - Deploys to https://pointmatic.github.io/project-guides/
96
+
97
+ ## [1.2.3] - 2026-03-10
98
+
99
+ ### Added
100
+ - **Comprehensive documentation pages** in `docs/site/`
101
+ - Getting Started: installation.md, quick-start.md, configuration.md
102
+ - User Guide: commands.md, workflow.md, overrides.md
103
+ - Developer Guide: contributing.md, development.md, testing.md
104
+ - About: license.md, changelog.md
105
+ - All pages include cross-references and internal links
106
+ - Documentation verified with `mkdocs build --strict`
107
+
108
+ ## [1.2.2] - 2026-03-10
109
+
110
+ ### Added
111
+ - **Custom branded landing page** at `docs/site/index.html`
112
+ - Dark theme with teal accent colors
113
+ - Hero section with tagline and banner image
114
+ - Friendly Brief Description explaining HITLoop workflow
115
+ - Quick Start section with 7-step workflow
116
+ - 15 Feature Cards organized into 3 categories (Core, Operational, Philosophy)
117
+ - Responsive design with navigation and footer
118
+
119
+ ## [1.2.1] - 2026-03-10
120
+
121
+ ### Added
122
+ - **MkDocs documentation infrastructure**
123
+ - `mkdocs.yml` configuration with Material theme
124
+ - Dark/light mode toggle with teal accent
125
+ - Navigation structure for all documentation sections
126
+ - Markdown extensions (admonition, superfences, highlight, etc.)
127
+ - Plugins: search, git-revision-date-localized
128
+ - `docs/site/.gitignore` for MkDocs cache
129
+ - Updated root `.gitignore` to ignore `/site/` build output
130
+ - Added `[docs]` optional dependency group in pyproject.toml
131
+
132
+ ## [1.2.0] - 2026-03-10
133
+
134
+ ### Added
135
+ - **Canonical project descriptions** in `docs/specs/descriptions.md`
136
+ - Project name, taglines (short and long), one-liner
137
+ - Friendly Brief Description explaining HITLoop workflow
138
+ - Two-clause Technical Description
139
+ - Benefits list (10 items)
140
+ - Technical Description (3 paragraphs)
141
+ - Keywords (18 items including HITLoop)
142
+ - Quick Start section (7 essential steps)
143
+ - Feature Cards (15 cards in 3 categories)
144
+ - Usage Notes mapping descriptions to consumer files
145
+
146
+ ### Changed
147
+ - **Updated README.md** with canonical descriptions
148
+ - Line 8: Two-clause Technical Description
149
+ - Line 12: Friendly Brief Description (first sentence)
150
+ - **Updated pyproject.toml**
151
+ - Description field: Long Tagline
152
+ - **Updated docs/specs/features.md**
153
+ - Line 11: Two-clause Technical Description
154
+ - **Enhanced project-guide.md template**
155
+ - Added "How to Use This Guide" section
156
+ - Clarified "proceed" language for step-by-step workflow
157
+
158
+ ## [1.1.3] - 2026-03-09
159
+
160
+ ### Added
161
+ - **GitHub repository setup section** in `production-mode.md` guide
162
+ - Branch protection rules with UI-matching checklist format
163
+ - Security settings: Dependency graph, Dependabot alerts, security updates, grouped updates
164
+ - GitHub Actions permissions guidance (Read-only by default)
165
+ - Uses `default` branch for flexibility (works with `main` or `master`)
166
+
167
+ ### Changed
168
+ - **Updated `project-guide.md` prerequisites**
169
+ - Clarified developer must provide OR LLM must ask for requirements
170
+ - Documented that project idea is often in `docs/specs/concept.md`
171
+ - **Updated `templates/guides/README.md`**
172
+ - Added production mode workflow to developer guide list
173
+ - Clarified LLMs may reference developer guides for step-by-step instructions
174
+
175
+ ## [1.1.2] - 2026-03-09
176
+
177
+ ### Changed
178
+ - **Modernized Git commands** in `production-mode.md` guide template
179
+ - Updated `git checkout` to `git switch` for switching branches
180
+ - Updated `git checkout -b` to `git switch -c` for creating branches
181
+ - Updated `git branch -d` to `git branch --delete` for clarity
182
+ - Updated `git branch -D` to `git branch --delete --force` for explicit force deletion
183
+ - All workflow examples, quick references, and troubleshooting sections updated
184
+ - **Refactored test suite** to eliminate version number scatter
185
+ - Tests now use `__version__` import instead of hardcoded version strings
186
+ - Makes tests self-maintaining across version bumps
187
+ - Only `version.py` needs updating for future releases
188
+
189
+ ## [1.1.0] - 2026-03-03
190
+
191
+ ### Added
192
+ - **`purge` command** to remove all project-guides files from a project
193
+ - `--force` flag to skip confirmation prompt
194
+ - Removes `.project-guides.yml` and guides directory
195
+ - Handles missing files gracefully
196
+ - Comprehensive error handling
197
+ - 5 new tests for purge command (total: 53 tests)
198
+
199
+ ### Changed
200
+ - Updated README with purge command documentation
201
+ - Command count increased from 6 to 7
202
+
203
+ ## [1.0.0] - 2026-03-03
204
+
205
+ ### Added
206
+ - First stable release! 🎉
207
+ - Production-ready with 48 tests and 82% coverage
208
+ - Complete documentation and guides
209
+ - GitHub Actions CI/CD workflows
210
+ - Automated PyPI publishing on release
211
+
212
+ ### Changed
213
+ - Development status updated to Production/Stable
214
+ - All features complete and tested
215
+
216
+ ## [0.15.0] - 2026-03-03
217
+
218
+ ### Added
219
+ - Comprehensive README with badges, installation instructions, and full command reference
220
+ - Quick start guide with 4-step workflow
221
+ - Troubleshooting section with common issues and solutions
222
+ - Contributing guidelines and development setup instructions
223
+ - Support links for issues, discussions, and documentation
224
+
225
+ ### Changed
226
+ - Enhanced documentation throughout
227
+
228
+ ## [0.14.0] - 2026-03-03
229
+
230
+ ### Added
231
+ - Code quality tools: ruff linter and mypy type checker
232
+ - Comprehensive linting rules (E, W, F, I, N, UP, B, C4, SIM)
233
+ - Type hints throughout codebase
234
+ - `types-PyYAML` for type stubs
235
+ - GitHub Actions workflows (ci.yml, publish.yml, test.yml)
236
+ - Dependabot configuration for automated dependency updates
237
+ - GitHub Sponsors funding configuration placeholder
238
+ - Open Source Sustainability section in best-practices-guide.md
239
+
240
+ ### Changed
241
+ - All code passes ruff and mypy checks with zero errors
242
+ - Line length configured to 100 characters
243
+
244
+ ## [0.13.0] - 2026-03-03
245
+
246
+ ### Added
247
+ - Integration tests for end-to-end workflows
248
+ - Test for full init → override → update workflow
249
+ - Test for version upgrade scenarios
250
+ - Test for force update with backups
251
+ - Test for multiple projects in isolation
252
+ - Test for dry-run mode
253
+ - Test for specific guide updates
254
+
255
+ ### Changed
256
+ - Test coverage increased to 82% (48 tests total)
257
+
258
+ ## [0.12.0] - 2026-03-03
259
+
260
+ ### Added
261
+ - Colored CLI output using `click.secho()`
262
+ - Explicit exit codes for different error types:
263
+ - 0 for success
264
+ - 1 for general errors
265
+ - 2 for file I/O errors
266
+ - 3 for configuration errors
267
+ - Formatted tables with proper alignment in status output
268
+
269
+ ### Changed
270
+ - All CLI commands now use colored output for better UX
271
+ - Error messages are more visually distinct
272
+
273
+ ## [0.11.0] - 2026-03-03
274
+
275
+ ### Added
276
+ - Custom exception classes for structured error handling:
277
+ - `ProjectGuidesError` - Base exception
278
+ - `ConfigError` - Configuration-related errors
279
+ - `SyncError` - Sync operation failures
280
+ - `GuideNotFoundError` - Missing guide templates
281
+ - Helpful error messages with actionable suggestions
282
+ - Error handling for missing config files
283
+ - Error handling for invalid YAML
284
+ - Error handling for permission errors
285
+ - Error handling for invalid guide names
286
+
287
+ ### Changed
288
+ - All modules updated to use custom exceptions
289
+ - CLI commands catch and format errors appropriately
290
+
291
+ ## [0.10.0] - 2026-03-03
292
+
293
+ ### Added
294
+ - `overrides` command to list all overridden guides
295
+ - Display override reason, version, and last updated date
296
+
297
+ ## [0.9.0] - 2026-03-03
298
+
299
+ ### Added
300
+ - `override` command to mark guides as customized
301
+ - `unoverride` command to remove override status
302
+ - Override tracking in configuration with reason and metadata
303
+
304
+ ### Changed
305
+ - Update command now skips overridden guides by default
306
+ - Force flag creates backups when updating overridden guides
307
+
308
+ ## [0.8.0] - 2026-03-03
309
+
310
+ ### Added
311
+ - `update` command to sync guides to latest version
312
+ - `--guides` flag to update specific guides only
313
+ - `--force` flag to update even overridden guides (with backups)
314
+ - `--dry-run` flag to preview changes without applying
315
+
316
+ ## [0.7.0] - 2026-03-03
317
+
318
+ ### Added
319
+ - `status` command to show guide installation status
320
+ - Display current vs. installed version
321
+ - Show which guides are current, outdated, or overridden
322
+ - Color-coded status indicators
323
+
324
+ ## [0.6.0] - 2026-03-03
325
+
326
+ ### Added
327
+ - `sync_guides()` orchestration function
328
+ - Override checking during sync
329
+ - Version comparison logic
330
+ - Dry-run mode support
331
+ - Force update with automatic backups
332
+
333
+ ### Changed
334
+ - Sync module now handles complex update scenarios
335
+
336
+ ## [0.5.0] - 2026-03-03
337
+
338
+ ### Added
339
+ - `backup_guide()` function with timestamp-based naming
340
+ - `compare_versions()` function using `packaging.version`
341
+ - Version comparison for update detection
342
+
343
+ ## [0.4.0] - 2026-03-03
344
+
345
+ ### Added
346
+ - `copy_guide()` function to copy templates to target directory
347
+ - Force flag to overwrite existing files
348
+ - Subdirectory support for developer guides
349
+ - Permission error handling
350
+
351
+ ## [0.3.0] - 2026-03-03
352
+
353
+ ### Added
354
+ - Template bundling as package data
355
+ - `get_template_path()` function using `importlib.resources`
356
+ - `get_all_guide_names()` function to list available guides
357
+ - Support for developer subdirectory guides
358
+
359
+ ## [0.2.0] - 2026-03-03
360
+
361
+ ### Added
362
+ - Configuration model with dataclasses
363
+ - `Config.load()` and `Config.save()` methods
364
+ - YAML serialization/deserialization
365
+ - Override tracking in configuration
366
+ - `GuideOverride` dataclass for metadata
367
+
368
+ ## [0.1.0] - 2026-03-03
369
+
370
+ ### Added
371
+ - Initial package structure with Hatchling
372
+ - Basic CLI framework with Click
373
+ - `init` command to initialize project guides
374
+ - `--target-dir` and `--force` flags
375
+ - Apache 2.0 license
376
+ - Core guide templates:
377
+ - project-guide.md
378
+ - best-practices-guide.md
379
+ - debug-guide.md
380
+ - documentation-setup-guide.md
381
+ - developer/codecov-setup-guide.md
382
+ - developer/github-actions-guide.md
383
+
384
+ [Unreleased]: https://github.com/pointmatic/project-guides/compare/v1.4.0...HEAD
385
+ [1.4.0]: https://github.com/pointmatic/project-guides/compare/v1.3.1...v1.4.0
386
+ [1.3.1]: https://github.com/pointmatic/project-guides/compare/v1.3.0...v1.3.1
387
+ [1.1.3]: https://github.com/pointmatic/project-guides/compare/v1.1.2...v1.1.3
388
+ [1.1.2]: https://github.com/pointmatic/project-guides/compare/v1.1.0...v1.1.2
389
+ [1.1.0]: https://github.com/pointmatic/project-guides/compare/v1.0.0...v1.1.0
390
+ [1.0.0]: https://github.com/pointmatic/project-guides/compare/v0.15.0...v1.0.0
391
+ [0.15.0]: https://github.com/pointmatic/project-guides/compare/v0.14.0...v0.15.0
392
+ [0.14.0]: https://github.com/pointmatic/project-guides/compare/v0.13.0...v0.14.0
393
+ [0.13.0]: https://github.com/pointmatic/project-guides/compare/v0.12.0...v0.13.0
394
+ [0.12.0]: https://github.com/pointmatic/project-guides/compare/v0.11.0...v0.12.0
395
+ [0.11.0]: https://github.com/pointmatic/project-guides/compare/v0.10.0...v0.11.0
396
+ [0.10.0]: https://github.com/pointmatic/project-guides/compare/v0.9.0...v0.10.0
397
+ [0.9.0]: https://github.com/pointmatic/project-guides/compare/v0.8.0...v0.9.0
398
+ [0.8.0]: https://github.com/pointmatic/project-guides/compare/v0.7.0...v0.8.0
399
+ [0.7.0]: https://github.com/pointmatic/project-guides/compare/v0.6.0...v0.7.0
400
+ [0.6.0]: https://github.com/pointmatic/project-guides/compare/v0.5.0...v0.6.0
401
+ [0.5.0]: https://github.com/pointmatic/project-guides/compare/v0.4.0...v0.5.0
402
+ [0.4.0]: https://github.com/pointmatic/project-guides/compare/v0.3.0...v0.4.0
403
+ [0.3.0]: https://github.com/pointmatic/project-guides/compare/v0.2.0...v0.3.0
404
+ [0.2.0]: https://github.com/pointmatic/project-guides/compare/v0.1.0...v0.2.0
405
+ [0.1.0]: https://github.com/pointmatic/project-guides/releases/tag/v0.1.0