Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
# Changelog

## 0.2.0 - 2026-07-17

### Highlights

- Catalog slugs resolve to registry URLs (`--template fastapi-starter` works end-to-end)
- Release prep automation (`prepare_release.py` + `Prepare release PR` workflow)
- 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`

### CLI / core

- Resolve `cpa-templates` catalog slugs for `--template` / `--addons` before cloning
- `--list-templates` / `--list-addons` reflect the live catalog (including new starters)

### Tooling

- 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](https://github.com/Create-Python-App/cpa-templates) (`cli-starter`, `celery-worker`, `django-api`, `uv-workspace-starter`, extension pack, typed FastAPI default, CNA-parity `github-setup`).

## 0.1.0

First public release of:
Expand Down
4 changes: 2 additions & 2 deletions packages/create-awesome-python-app/pyproject.toml
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
[project]
name = "create-awesome-python-app"
version = "0.1.0"
version = "0.2.0"
description = "Composable scaffolding CLI for production-ready Python apps"
readme = "README.md"
requires-python = ">=3.12"
license = "MIT"
dependencies = [
"create-python-app-core>=0.1.0",
"create-python-app-core>=0.2.0",
"questionary>=2.1.1",
"rich>=15.0.0",
"typer>=0.27.0",
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
"""Create Awesome Python App CLI."""

__version__ = "0.1.0"
__version__ = "0.2.0"
3 changes: 2 additions & 1 deletion packages/create-awesome-python-app/tests/test_cli.py
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
from pathlib import Path

import pytest
from create_awesome_python_app import __version__
from create_awesome_python_app.cli import app
from typer.testing import CliRunner

Expand All@@ -21,7 +22,7 @@ def test_version() -> None:
result = runner.invoke(app, ["--version"])
assert result.exit_code == 0
combined = result.stdout + result.stderr
assert "0.1.0" in combined
assert __version__ in combined


def test_help() -> None:
Expand Down
2 changes: 1 addition & 1 deletion packages/create-python-app-core/pyproject.toml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
[project]
name = "create-python-app-core"
version = "0.1.0"
version = "0.2.0"
description = "Scaffolding engine for Create Awesome Python App"
readme = "README.md"
requires-python = ">=3.12"
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
__version__ = "0.1.0"
__version__ = "0.2.0"
6 changes: 5 additions & 1 deletion packages/create-python-app-core/tests/test_version.py
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
import re

from create_python_app_core import CPA_USER_AGENT, __version__

_SEMVER_RE = re.compile(r"^\d+\.\d+\.\d+(?:[.-][0-9A-Za-z.-]+)?$")


def test_version_is_semver() -> None:
assert __version__ == "0.1.0"
assert _SEMVER_RE.match(__version__), f"not semver: {__version__!r}"


def test_user_agent_contains_version() -> None:
Expand Down
50 changes: 25 additions & 25 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading