- Add PyPI
keywordsand Troveclassifierstocreate-awesome-python-appandcreate-python-app-corepyproject.tomlso the packages are discoverable on PyPI by scaffold/fastapi/django/celery/typer/uv/cli themes and filtered by Python version, license, and topic (#246).
- Do not treat
--template/-t/ other option values (e.g.file://…) as the project positional when expanding--addons/--extend. Fixes trailingproject_directorybeing swallowed as an addon slug after a template URL (#245).
- Validate non-empty target directory before the interactive wizard so a leftover default
my-project/does not waste a full prompt session. - Exit cleanly with a hint to use
--forceor pick a different directory name (no traceback).
- Stop treating a trailing
project_directoryafter--addons/--extendas another addon value (e.g.--addons a --addons b /tmp/app).
- Accept space-separated
--addons/--extendvalues (CNA Commander parity):--addons fastapi-docker github-setupexpands to repeated flags before Typer parses.
- Allow options after the project directory (
uvx create-awesome-python-app my-api --template …). Typer was registeringcacheas a nested command group, so Click treated--templateas a COMMAND name.
- Overhaul
create-awesome-python-appREADME to Create-Node-App package parity (install channels, recipes, CLI/cache reference, site links). - Refresh monorepo README as contributor-facing docs with a clear pointer to the package README.
- Git cache refresh now advances HEAD to the remote default tip when
?ref=is unset (CNA pull parity) - Force-refresh when a configured template/extension
subdiris missing from a warm cache (fixes post-renameManifestLoadErrorforall-github-setupand friends)
- Template select titles use FormattedText styles (no more literal
^[[1;94mANSI escapes)
- Template picker is now a browsable select with type-to-filter (↑↓ + search)
- High-contrast CPA blue/green prompt theme and bright category badges
- Template autocomplete no longer embeds ANSI category badges (questionary HTML parse error while typing to search)
- Interactive template autocomplete no longer passes unsupported
pointerto prompt_toolkit (TypeError: PromptSession.__init__() got an unexpected keyword argument 'pointer')
- Catalog slugs resolve to registry URLs (
--template fastapi-starterworks end-to-end) - Release prep automation (
prepare_release.py+Prepare release PRworkflow) - Hardened distribution smoke (PyPI/
uvx, Docker, Homebrew, AUR) with clearer version checks - AUR publish preflight + post-publish verification
- Cross-platform scaffold smoke (Ubuntu / macOS / Windows) against published
uvx
- Resolve
cpa-templatescatalog slugs for--template/--addonsbefore cloning --list-templates/--list-addonsreflect the live catalog (including new starters)
- Changelog-driven GitHub Release notes via
extract_release_notes.py - Docs:
VERSIONING.md,DISTRIBUTION_SETUP.md, cross-platform tracking
Paired catalog growth lives in cpa-templates (cli-starter, celery-worker, django-api, uv-workspace-starter, extension pack, typed FastAPI default, CNA-parity github-setup).
First public release of:
create-python-app-core— scaffolding engine (Jinja.template/.append,pyproject.tomlmerge, git cache,file:/// GitHub sources)create-awesome-python-app— Typer CLI
Default template catalog: Create-Python-App/cpa-templates (templates.json).
uvx create-awesome-python-app@0.1.0 my-api --template fastapi-starter --no-interactive