Updated project overview, removed emojis, and introduced new CLI subcommands for managing .gitignore and license templates. Added architecture and custom template documentation.
New Features
- Added `devgen gitignore list` and `devgen gitignore add <name> …` commands.
- Added `devgen license list` and `devgen license add <spdx>` commands.
- Introduced support for custom commit templates via `.tpl` files.
Enhancements
- Rewrote README with clearer description and updated badges.
- Removed emojis and streamlined formatting throughout documentation.
- Added sections for custom templates, architecture overview, and contribution guide.
- Clarified dependency installation and CI workflow references.
Bug Fixes
- Fixed formatting issues in badge links and stray hyphens.
- Resolved truncated documentation sections and improved readability.
The project uses ruff for lint+format, and pyright was redundant and
slow. The previous pyright run surfaced ~30 false positives from running
outside the venv plus 5 real-but-minor typing issues that don't justify
the extra CI minutes on a 0.2.x CLI.
CI now runs only ruff check, ruff format --check, and the import/CLI
smoke matrix on 3.10/3.11/3.12/3.13.
The previous config required branch protection with required status checks,
but main has no protection rules configured, so auto-merge never fired and
PRs had to be merged manually.
Switch to direct squash merge in the action itself, which works regardless
of branch protection settings.
Abstract out generate validation and error handling into BaseProvider, eliminating duplicated logic across Anthropic, OpenRouter, and OpenAI providers.
Enhancements:
- Replaced verbose scanning of many manifest files with targeted parsing of key project manifests (pyproject.toml, package.json, requirements.txt).
- Generated a compact one‑line‑per‑file summary, reducing token usage.
- Improved clarity and readability of the AI‑provided context.
Clarify output format and remove redundant guidance.
New Features:
- Added explicit format and type list
Enhancements:
- Simplified instructions, removed unnecessary guidance
Bug Fixes:
- None
Add limits to prevent token‑limit errors during commit generation.
- New `--max-groups` option to cap the number of commit groups.
- New `--max-diff-size` option to set maximum diff size per group (default 8000 chars).
Update logging to reflect the new options and pass them to the engine.
Add token limit error detection and formatting across all provider modules to surface clear diagnostics when context windows are exceeded, improving error messages and preventing silent failures.
New Features
- Introduce `is_token_limit_error` checks in Anthropic, Gemini, Hugging Face, Ollama, OpenAI, and OpenRouter providers.
- Use `format_token_limit_error` to generate user‑friendly error messages for token limit overs.
Enhancements
- Centralize token limit error handling for consistent diagnostics across providers.
- Explicitly re‑raise `RuntimeError` in Hugging Face to preserve original behavior.
Bug Fixes
- None
- Add "ollama" to AI provider choices in config prompts
- Prompt user for Ollama server URL when selecting the Ollama provider
- Store the configured Ollama host in the config under the "ollama_host" key
- Update config saving logic in both edit_config and setup_config functions
- New Features
- Added Ollama as a supported AI model source.
- Updated README and project manifests to include Ollama.
- Enhancements
- Expanded AI model selection to handle local Ollama endpoints.
- Improved dependency resolution for Ollama packages.
- Bug Fixes
- None
Add a new provider that wraps the local Ollama server using an OpenAI‑compatible client, enabling generation via `ollama_host` configuration. This introduces the first provider for local LLM inference.
New Features
- Implement OllamaProvider with a `generate()` method, supporting custom host, model selection, and robust error handling.
Add support for the Ollama provider in the AI generation pipeline and expose a configurable host address.
New Features:
- Introduce `ollama` as a selectable provider.
- Add `ollama_host` configuration option with default `http://localhost:11434`.
Enhancements:
- Extend provider list in error message to include Ollama.
- Enhanced error messages when version cannot be determined, providing clearer guidance.
- Added explicit handling for missing pyproject.toml and TOML parsing errors.
- Improved user feedback for installation corruption issues.
Enhancements:
- Split ModuleNotFoundError and AttributeError handling to deliver clearer diagnostics
- Explicitly list available providers and flag missing provider classes as packaging bugs
Bug Fixes:
- Provide specific guidance when a provider module is not a built‑in module
- Clarify that a missing provider class indicates a packaging issue rather than user error
- New Features - Introduced distinct sections for Performance, Refactor, Tests, Style, and Chore in changelog generation.
- Added dedicated emojis for each new category.
- Updated section ordering to reflect the new categories.
- Enhancements
- Enhanced push logic to fetch upstream before push, avoiding non‑fast‑forward rejections.
- Refactored `is_ahead_of_remote` with a fetch flag to reduce network calls and TOCTOU windows.
- Improved error logging with full traceback for group processing failures.
- Bug Fixes
- Fixed emoji mappings for "Style" and "Other Changes".
- Corrected handling of empty upstream ref to prevent errors.
- Ensured proper exception handling when remote branch is missing.
Added a concise AI‑focused description and a centered badge section to the README, improving the project overview.
New Features- Introduced an AI‑centric tagline that highlights automation of commits, changelogs, and project management tasks.
Enhancements
- Centered and styled the title block for consistent visual presentation.
- Integrated project badges for PyPI version, Python compatibility, license, build status, and pre‑commit.
Bug Fixes
- None.
Add expanded project overview and formatting updates.
- New Features: Expanded overview and richer description of AI-powered commits and customizable templates.
- Enhancements: Added extra badge images and improved formatting across sections.
- Bug Fixes: None.
Add dependabot configuration to automate weekly updates of GitHub Actions and pip packages.
New Features
- Add Dependabot configuration for GitHub Actions and pip ecosystems with weekly schedule.
Enhancements
-
Bug Fixes
-
Enhancements:
- Extend error message parsing to capture additional throttling indicators such as "RESOURCE_EXHAUSTED", "QUOTA_EXCEEDED", and "THROTTLED".
- Refactor the conditional logic for better readability and maintainability.
- Keep existing retry behavior while increasing resilience to API rate‑limit errors.
The update changes the default model, refactors imports, and implements robust retry logic with exponential back‑off and clearer error messages. This improves resilience and clarifies usage.
New Features
- Exponential back‑off retry on 429/quota exhausted responses.
- Configurable max_retries and retry_delay parameters.
Enhancements
- Default model set to gemini-2.5-flash.
- Improved error output with actionable troubleshooting steps.
- New Features:
- Added `check` parameter to enable interactive commit message review
- Implemented user confirmation/editing/abort workflow using questionary
- Added smart file grouping with configurable max_groups limit
- Files are now merged into parent directories when group count exceeds limit
- Enhancements:
- Improved `group_files()` method with hierarchical merging logic
- Added graceful KeyboardInterrupt handling during user review
- Enhanced logging for group merging operations
```
- New Features:
- Added `_get_manifest_context()` to extract project metadata from manifest files (pyproject.toml, package.json, etc.) for richer commit message context.
- Added support for custom commit message templates via `custom_template` config.
- Added emoji instruction toggle based on global `use_emoji` setting.
- Enhancements:
- Improved error handling for git push failures with specific hints for "no upstream branch" scenarios.
- Optimized manifest context extraction by truncating large files to avoid token bloat.
- Refactored prompt generation to dynamically include manifest context and custom templates.
```
- New Features:
- Added `{{ context }}` variable to the commit message template to provide additional context.
- Enhancements:
- Removed the emoji usage line from the template to simplify the output.
```
- Add shell completion support for bash/zsh/fish via `devgen --install-completion`
- Introduce `devgen commit undo` to revert the last AI-generated commit while preserving staged changes
- Implement context-aware commit generation by analyzing project manifests (`package.json`, `pyproject.toml`, etc.) and lock files for accurate dependency updates
- Add support for custom Jinja2 templates in `~/.devgen.yaml` with `custom_template` configuration
- Update documentation to reflect new features and provide template variable reference
This release significantly improves commit accuracy by leveraging project context and offers greater customization through templates and shell integration.
```
- New Features:
- Introduced `render_custom_template()` function to render Jinja2 templates from strings.
- Enables dynamic template rendering without requiring file-based templates.
```
- Improve header detection by stripping bolding and cleaning labels like "1. Title:", "### Message:", etc.
- Stop processing lines when encountering a sponsor section
```
- Simplify and clarify the structure of commit message generation guidelines.
- Replace "Format" with "Guidelines" for better readability.
- Remove redundant section numbering.
- Streamline emoji usage instruction into a single line.
- Clarify that the output should exclude labels like "Title:" or "Format:".
**Enhancements:**
- Improved template structure for better maintainability.
- More concise and direct instructions for users.
The `sanitize_ai_commit_message` function in `devgen/utils.py` has been enhanced for better readability and maintainability. The changes include minor formatting improvements and a more consistent regex pattern definition.
**Enhancements & Refinements:**
- Improved code formatting by removing trailing whitespace and adding a comma after `re.IGNORECASE` in the regex pattern for better readability.
- Enhanced comment clarity by fixing a minor typo in the regex examples section.
```
This update introduces improvements to the changelog generator's file handling logic, including proper prepending of new entries and automatic header management. It also refines the license generator's template directory structure and cleans up minor formatting issues in the commit generator.
**New Features**
- Added intelligent changelog prepending logic that preserves existing headers and maintains proper formatting when updating files
- Implemented automatic `# CHANGELOG` header insertion for new changelog files
**Enhancements & Refinements**
- Changed changelog version headers from `#` to `##` for better markdown hierarchy
- Updated license generator to use `templates/licenses` directory instead of `prompt_templates/licenses`
- Removed unnecessary whitespace and improved code formatting in commit generator
- Enhanced changelog file writing logic to handle both new and existing files more robustly
```
The dependency `devgen-cli` has been upgraded from version 0.2.2 to 0.2.3 in the project's lockfile.
- **Enhancements & Refinements**
- Updated `devgen-cli` dependency to version 0.2.3 in `uv.lock`
```
The `sanitize_ai_commit_message` function has been significantly improved to better handle AI-generated commit messages, including support for bolded headers, more robust header detection, and a fallback mechanism for non-conventional messages.
**Enhancements & Refinements:**
- Added comprehensive docstring explaining the function's purpose and behavior
- Improved regex pattern to match conventional commit headers with optional bolding (e.g., **feat: ...**)
- Added case-insensitive matching for commit types
- Implemented a state-based approach with `found_header` flag for clearer logic
- Added automatic removal of bold markers (**) from headers
- Introduced fallback behavior to return the first non-empty line if no conventional header is found
- Improved code structure with better variable naming and comments
- Added early return for empty input strings
**Bug Fixes:**
- Fixed potential issue where the function could return empty strings for non-conventional messages
- Resolved edge case handling for messages without proper headers
```
The debug argument is used internally by devgen but is not accepted by the OpenAI API client. This change filters it out from kwargs before the API call to prevent TypeError.
The `README.md` has undergone a significant rewrite and restructuring to enhance readability, streamline the onboarding process, and better communicate the value proposition of DevGen. This includes a new introduction, a consolidated "Why DevGen?" section, simplified quick start guides, and a dedicated feature deep dive.
* **Enhancements & Refinements**
* **Improved Introduction**: Added a concise tagline and refined the introductory paragraph, positioning DevGen as an AI co-pilot for Git and project management.
* **Streamlined Feature Presentation**: Replaced the previous feature list with a "Why DevGen?" section, highlighting key benefits such as AI Brain (multi-provider support), battle-tested compliance (Conventional Commits, Semantic Versioning), lightning-fast performance, and zero-friction setup.
* **Simplified Quick Start**: Refined the initial setup and commit generation steps for a quicker onboarding experience.
* **Enhanced Feature Deep Dive**: Introduced a dedicated section to provide detailed usage examples for AI-powered commits, changelogs, release notes, gitignore, and license generation.
* **Improved Installation Instructions**: Emphasized `pipx` and `uv` as recommended installation methods for isolated and fast CLI management.
* **Concise Configuration Table**: Replaced verbose configuration details with a clear markdown table for easier reference.
* **Updated PyPI Link**: Corrected the PyPI link to `devgen-cli`.
* **Minor Visual Updates**: Refined badge presentation and added a centered footer with author attribution.
* **Refactoring**
* **Major Content Restructuring**: Completely reordered and rewrote large sections, removing redundant information and consolidating related content to improve overall flow and conciseness.
* **Removed Command Reference**: Integrated command examples directly into relevant usage sections, eliminating a separate, lengthy command reference.
* **Removed Redundant Sections**: Consolidated information previously found in "Use Cases" and "Requirements" into other sections, streamlining the document.
**Enhancements & Refinements**
* Dry run commit messages are now displayed directly on the console during execution.
* Utilizes rich `Panel` and `Markdown` to provide a structured and readable console output for dry run messages.
* Offers immediate visual feedback for generated commits when performing a dry run.
The `README.md` has undergone a significant rewrite and restructuring to enhance readability, streamline the onboarding process, and better communicate the value proposition of DevGen. This includes a new introduction, a consolidated "Why DevGen?" section, simplified quick start guides, and a dedicated feature deep dive.
* **Enhancements & Refinements**
* **Improved Introduction**: Added a concise tagline and refined the introductory paragraph, positioning DevGen as an AI co-pilot for Git and project management.
* **Streamlined Feature Presentation**: Replaced the previous feature list with a "Why DevGen?" section, highlighting key benefits such as AI Brain (multi-provider support), battle-tested compliance (Conventional Commits, Semantic Versioning), lightning-fast performance, and zero-friction setup.
* **Simplified Quick Start**: Refined the initial setup and commit generation steps for a quicker onboarding experience.
* **Enhanced Feature Deep Dive**: Introduced a dedicated section to provide detailed usage examples for AI-powered commits, changelogs, release notes, gitignore, and license generation.
* **Improved Installation Instructions**: Emphasized `pipx` and `uv` as recommended installation methods for isolated and fast CLI management.
* **Concise Configuration Table**: Replaced verbose configuration details with a clear markdown table for easier reference.
* **Updated PyPI Link**: Corrected the PyPI link to `devgen-cli`.
* **Minor Visual Updates**: Refined badge presentation and added a centered footer with author attribution.
* **Refactoring**
* **Major Content Restructuring**: Completely reordered and rewrote large sections, removing redundant information and consolidating related content to improve overall flow and conciseness.
* **Removed Command Reference**: Integrated command examples directly into relevant usage sections, eliminating a separate, lengthy command reference.
* **Removed Redundant Sections**: Consolidated information previously found in "Use Cases" and "Requirements" into other sections, streamlining the document.
This commit introduces a new `run_git_command` utility function within `devgen.utils` to centralize and standardize the execution of Git commands. This improves code reusability and error handling for Git-related operations.
* **New Features**
* Add `run_git_command` to `devgen/utils.py` to provide a standardized, robust way to execute Git commands, capture output, and handle errors.
* Expose `run_git_command` in `__all__` for public use.
* **Enhancements & Refinements**
* Refactor `get_git_staged_files` to utilize the new `run_git_command` utility, reducing code duplication and improving consistency.
This commit refactors the way git commands are executed across the `changelog_generator` and `commit_generator` modules, leveraging a shared utility function and enhancing error handling.
* **Enhancements & Refinements**
* Replaced the internal `_exec_git` method in both `ChangelogGenerator` and `CommitEngine` with the common `run_git_command` utility from `devgen.utils`.
* Standardized and improved error handling for git command failures by wrapping `run_git_command` calls in `try-except subprocess.CalledProcessError` blocks, providing more precise logging and raising `CommitEngineError` where applicable.
* Adjusted error handling for `git reset HEAD` operations to gracefully ignore potential failures, ensuring smoother execution for non-critical resets.
* Refined the `is_ahead_of_remote` check in `CommitEngine` to correctly handle scenarios with no upstream configured by using `check=False` for `run_git_command` and broadening error catch.
This commit clarifies the project's name on PyPI and ensures all external links in the README are accurate.
* **Enhancements & Refinements**
* Added a note to the README clarifying the project's name on PyPI as `devgen-cli`.
* Refined the project description for improved readability by adjusting punctuation.
* **Bug Fixes**
* Corrected the repository case in the license badge URL.
* Updated the PyPI project URL to `https://pypi.org/project/devgen0cli` for accuracy.
This commit removes the entire `devgen_cli.egg-info` directory and its contents from the repository. This cleanup is part of streamlining the project's packaging and build process, as `.egg-info` directories typically contain transient metadata generated during package installation or building, and are generally not intended to be version controlled.
* **Enhancements & Refinements**
* Deleted the `devgen_cli.egg-info` directory, which contained build-time metadata.
* Removed `PKG-INFO`, `SOURCES.txt`, `dependency_links.txt`, `entry_points.txt`, `requires.txt`, and `top_level.txt`.
* Improved project hygiene by no longer tracking generated packaging metadata in version control.
* Streamlined project build artifacts, potentially reflecting a modernization of the packaging setup.