Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.0.6] - 2026-05-26¶
Security¶
- Fix critical vulnerability: the
JWT_SECRET_KEYwas hardcoded as the literal string"SECRET_KEY"inside the FastAPI security template. Any generated API using authentication was signing/verifying tokens with a publicly known key. Now readsJWT_SECRET_KEYandJWT_ALGORITHMfrom the environment, matching the pattern already used byroutes.py.
Fixed¶
security.pywas being rendered twice for Flask and FastAPI projects (once by the generator, once by each strategy).- Flask projects generated
src/security.pyeven with--no-auth. - Django projects with
--authnever receivedsecurity.pynortest_security.py. tests/test_security.pywas generated even with--no-auth, importing from a non-existent module and breaking the test suite of generated projects.tests/test_security.pyimport path is now framework-aware (src/for Flask and FastAPI,{app_name}/for Django).TEST_TEMPLATESentries falsely pointed several combos atflask_restx/sqlalchemy/pytest.ini.j2andflask_restx/sqlalchemy/.env.test.example.j2. Most notably, FastAPI + TortoiseORM never receivedasyncio_mode = auto, silently breaking its async tests.- Django projects never wrote
tests/.env.test.exampleeven though the entry was declared inTEST_TEMPLATES. validate_ormaccepted combinations declared incompatible inCOMPATIBILITY_MATRIX(Flask + DjangoORM,FastAPI + DjangoORM, etc.). The validator now delegates to the matrix (single source of truth).- Generated FastAPI
main.pywrapped CORS middleware and Swagger / ReDoc / OpenAPI URLs inside{% if auth_enabled %}, making them disappear in projects without authentication. They are now always present. get_python_version()always returned"3.11"regardless of the active runtime. Now returns the actualsys.version_info(e.g."3.12"), so generatedDockerfile,pyproject.toml, and Black/Rufftarget-versionreflect reality.- Alembic's generated
env.pycontained a literal{project_name}placeholder that was never interpolated. _init_gitnever raisedGitError, making theexcept GitErrorbranch incli/commands.py:createunreachable. The dead branch and import were removed.vyte/strategies/__init.py(typo — missing underscore) renamed to__init__.py. The previously dead__all__is now applied.
Changed¶
- Project structure: Strategy pattern replaced with a declarative registry.
BaseStrategy,FlaskRestxStrategy,FastAPIStrategy,DjangoRestStrategywere eliminated in favor ofFrameworkSpec/FileSpecdataclasses invyte/strategies/registry.py. Net result: ~941 LOC → ~481 LOC for the generator subsystem, and adding a new (framework, ORM) combination now means appending one entry toFRAMEWORK_REGISTRYinstead of subclassing. ProjectConfig'svalidate_nameno longer checksPath.exists(). Filesystem checks belong to the generator; validators are now pure, serializable, and deterministic.model_dump_safe()now also exposesvyte_version(so generated headers reflect the actual installed version) andapp_name(snake_case form of the project name, used as the Django app module).- Alembic setup is fully template-driven. The
subprocess.run(["alembic", "init", ...])path was removed: vyte no longer depends on Alembic being installed on the generating machine, and the previousos.chdir()(process-global, not thread-safe) is gone. - Branding cleanup across 17 files: misspellings (
presto,vytesto,vytestosto,vytestostostostosto) were unified tovyte. Hardcodedvyte v2.0headers in 46 templates are nowvyte {{ vyte_version }}. - Trailing garbage at the end of
Makefile(5 duplicated echo lines and a stray"""from a stale copy-paste) removed.
Added¶
vyte/strategies/registry.py:FileSpecandFrameworkSpecdataclasses and aFRAMEWORK_REGISTRYmapping each(framework, ORM)to its spec (directories, files, optional post-generate hook).- Four new Django templates extracted from inline strings:
apps.py.j2,wsgi.py.j2,asgi.py.j2,manage.py.j2. - Django projects with
--authnow correctly render{app_name}/security.pyandtests/test_security.py. tests/.env.test.examplenow generated for Django projects.
Removed¶
vyte/strategies/base.py,flask_restx.py,fastapi.py,django_rest.py(folded into the declarative registry; were not part of the public API).AlembicConfiguratorclass and itssubprocess.run(["alembic", "init"])path — replaced by module-levelsetup_alembic(project_path, module_name).- Unreachable
except GitErrorbranch in CLI.
2.0.5 - 2025-11-17¶
Added¶
- Comprehensive MkDocs documentation website with Material theme
- 7 complete documentation pages: index, quickstart, cli, frameworks, databases, configuration, api-reference
- Professional Material theme with custom colors (cyan/deep purple)
- Integrated Vyte logos in header and favicon
- Search functionality
- Git revision date plugin for last modified timestamps
- mkdocstrings for automatic API documentation
- Full navigation structure with 6 main sections
- GitHub Actions workflow for automatic documentation deployment
- Automatic deployment to GitHub Pages on push to main
- Triggered by changes in docs/, mkdocs.yml, or source code
- Python dependency caching for faster builds
- Documentation dependencies in pyproject.toml
- mkdocs >= 1.5.0
- mkdocs-material >= 9.5.0
- mkdocstrings[python] >= 0.24.0
- mkdocs-git-revision-date-localized-plugin >= 1.2.0
- Branding assets
- 5 logo variants in docs/images/ folder
- BRANDING.md guide for logo usage
- Documentation badge in README.md
Fixed¶
- Logo visibility in documentation header (changed to B&W version for better contrast)
- Broken links in documentation files (README.md, docs/ paths)
- Logo path in index.md (corrected to relative images/ path)
- MkDocs build warnings and strict mode errors
Changed¶
- Added documentation link badge to README.md
- Copied SECURITY.md to docs/ folder for MkDocs access
- Added site/ folder to .gitignore
- Updated mkdocs.yml to use B&W logo for better header contrast
Documentation¶
- Quick Start Guide: Complete installation and first project tutorial
- CLI Reference: Full command documentation with examples and tips
- Frameworks Guide: Detailed comparison of FastAPI, Flask-Restx, Django-Rest
- Databases Guide: Comprehensive ORM and database documentation
- Configuration Guide: Environment variables and settings reference
- API Reference: Complete Python API documentation
- Home Page: Feature overview, philosophy, and use cases
2.0.4 - 2025-11-13¶
Added¶
- Custom exception hierarchy with 8 specific exception types (VyteError, ConfigurationError, GenerationError, TemplateError, DependencyError, ValidationError, FileSystemError, GitError)
- Comprehensive test suite for exceptions with 100% coverage
- 26 new unit tests for display functions and interactive mode
- Pre-commit hooks configuration with black, ruff, isort, bandit, and mypy
- EditorConfig file for consistent coding styles
- Pylint configuration file
- GitHub Actions workflow for automated testing and linting
- CHANGELOG.md, CONTRIBUTING.md, SECURITY.md, CONTRIBUTORS.md, DEVELOPMENT.md, and ROADMAP.md documentation
- Codecov configuration for code coverage tracking
- .gitattributes for consistent line endings
- Improved Makefile with 20+ development commands
Fixed¶
- Synchronized version numbers across all files (2.0.4)
- Fixed CLI help command displaying correct name 'vyte' instead of 'cli'
- Improved version management using single source of truth in
__version__.py - Better error handling with specific exception types instead of generic Exception
- PackageLoader exception handling in renderer module
Changed¶
- Version now imported dynamically from
__version__.pyacross all modules - Converted pyproject.toml to use setuptools with dynamic version attribute
- Improved code consistency and formatting (31 files reformatted with black)
- Enhanced error messages with custom exception types
- Updated README.md with badges and comprehensive project information
- Reorganized documentation files into dedicated docs/ folder
- Moved SECURITY.md to root for GitHub security tab integration
Improved¶
- Test coverage increased from 72% to 73% (65 tests total: 63 passed, 2 skipped)
- Code quality with automated linting and formatting tools
- Developer experience with pre-commit hooks and improved documentation
- Project structure and organization for better maintainability
2.0.3 - 2025-11-XX¶
Added¶
- Multiple framework support (Flask-Restx, FastAPI, Django-Rest)
- Multiple ORM support (SQLAlchemy, TortoiseORM, Peewee, Django ORM)
- Interactive CLI with beautiful Rich UI
- JWT authentication support
- Docker and docker-compose generation
- Complete testing suite with pytest
- Auto-generated API documentation
- Git repository initialization
Changed¶
- Migrated to Pydantic v2
- Updated to Python 3.11+ requirement
- Improved project structure and organization
2.0.0 - 2025-10-XX¶
Added¶
- Initial release of Vyte 2.0
- Complete rewrite with modern Python practices
- Support for async frameworks
- Comprehensive compatibility matrix
- Template-based generation system
[1.x.x] - Legacy¶
Previous versions (deprecated)
Version Comparison¶
[Unreleased]¶
- Features and fixes in development
Categories¶
- Added: New features
- Changed: Changes in existing functionality
- Deprecated: Soon-to-be removed features
- Removed: Removed features
- Fixed: Bug fixes
- Security: Security fixes