|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## v1.3.0 (Unreleased) |
| 3 | +## v1.3.0 (2026-05-06) |
| 4 | + |
| 5 | +### Features |
| 6 | + |
| 7 | +- **Architecture preset selection in interactive init** |
| 8 | + - `fastkit init --interactive` now includes an `Architecture Preset` step with `minimal`, `single-module`, `classic-layered`, and `domain-starter`. |
| 9 | + - The selected preset is saved in the interactive config and shown in the final summary. |
| 10 | + - CLI help and interactive docs were updated to match the new flow. |
| 11 | +- **Preset-aware project generation** |
| 12 | + - Interactive generation now selects a different base template for each preset. |
| 13 | + - `minimal` and `single-module` continue to use generated `main.py`, while `classic-layered` and `domain-starter` preserve the template-shipped entrypoint. |
| 14 | + - Database/auth config output paths, compatibility warnings, and app module resolution are now preset-aware. |
| 15 | + - `fastkit runserver` and generated Dockerfiles now resolve the correct app module for non-default layouts such as `src/app/main.py`. |
| 16 | + |
| 17 | +### Templates |
| 18 | + |
| 19 | +- **Add `fastapi-domain-starter` template** |
| 20 | + - New pyproject-first, domain-oriented starter for medium-sized FastAPI APIs. |
| 21 | + - Includes a built-in `/api/v1/health` endpoint and an example `items` domain. |
| 22 | + - Ships with FastAPI-fastkit identity markers in `pyproject.toml`. |
| 23 | +- Improve template metadata/path handling for the domain-oriented layout. |
| 24 | +- Update template README titles so `fastkit list-templates` shows readable descriptions. |
| 25 | + |
| 26 | +### Documentation |
| 27 | + |
| 28 | +- Add `Choosing a Starter` guide for template and preset selection. |
| 29 | +- Add `Preset Feature Matrix` reference docs for preset-specific generation behavior. |
| 30 | +- Add `fastapi-domain-starter` tutorial and generated project walkthrough. |
| 31 | +- Add translation status and source-of-truth policy docs, plus translation status notices on the English and Korean landing pages. |
| 32 | +- Refresh CLI examples and fix the Korean `init --interactive` walkthrough so docs match the current flow. |
| 33 | + |
| 34 | +### Tests |
| 35 | + |
| 36 | +- Add end-to-end coverage for architecture presets and `fastapi-domain-starter`. |
| 37 | +- Add regression tests for preset layout decisions, app module derivation, and interactive summary rendering. |
| 38 | +- Add package-manager compatibility coverage for `fastapi-domain-starter`, including the `pip` path. |
| 39 | +- Suite size: **612 tests passing** at the close of v1.3.0. |
4 | 40 |
|
5 | 41 | ### Maintenances |
6 | 42 |
|
7 | | -- **Modernize template contract to be pyproject-first** (#42) |
8 | | - - Template inspection now accepts `pyproject.toml-tpl` (PEP 621) as the primary metadata file. A template passes structural validation as long as `tests/`, `README.md-tpl`, and **at least one** of `pyproject.toml-tpl` / `setup.py-tpl` are present. `requirements.txt-tpl` is no longer strictly required when `pyproject.toml-tpl` declares `[project].dependencies`. |
9 | | - - `_check_dependencies` consults every available source (`requirements.txt-tpl`, `pyproject.toml-tpl` `[project].dependencies`, `setup.py-tpl` `install_requires`) independently and passes if **any** one declares `fastapi`. A template with a stale `requirements.txt-tpl` is no longer rejected when its `pyproject.toml-tpl` is authoritative. |
10 | | - - `read_template_stack` gained a pyproject fallback between the existing `requirements.txt-tpl` and `setup.py-tpl` paths; legacy templates resolve dependencies exactly as before. |
11 | | - - Template authoring docs (`src/fastapi_fastkit/fastapi_project_template/README.md`, `docs/en/contributing/template-creation-guide.md`, `docs/en/reference/template-quality-assurance.md`) now describe required vs optional files under the pyproject-first contract. |
12 | | - - Added focused tests for the new rules (pyproject-only structural and dependency validation, setup.py-only legacy validation, pyproject fallback in `read_template_stack`, and `requirements.txt-tpl`-over-pyproject precedence). |
13 | | -- **Pyproject-aware project identity detection** (follow-up to #42) |
14 | | - - `is_fastkit_project()` now recognises FastAPI-fastkit-managed projects from `pyproject.toml` in addition to legacy `setup.py`. Detection precedence: `[tool.fastapi-fastkit].managed = true` → `[project].description` contains the `[FastAPI-fastkit templated]` marker (case-insensitive) → `setup.py` contains `fastapi-fastkit` (case-insensitive). Keeps the pre-existing setup.py path working; the new pyproject paths prevent pyproject-only templates from being mistaken for unrelated FastAPI projects in the user's workspace. |
15 | | - - Canonical marker strings (`[FastAPI-fastkit templated]` and the `[tool.fastapi-fastkit]` table key `fastapi-fastkit`) are exported from `fastapi_fastkit.utils.main` as `FASTKIT_DESCRIPTION_MARKER` / `FASTKIT_TOOL_SECTION` so templates, metadata injection, and detection all reference the same strings. |
16 | | - - `_process_pyproject_file` idempotently ensures the description marker and `[tool.fastapi-fastkit]\nmanaged = true` section are present after placeholder replacement, providing a safety net when a template author forgets to include them. |
17 | | - - All 8 shipped `pyproject.toml-tpl` templates updated to carry `description = "[FastAPI-fastkit templated] <description>"` and a `[tool.fastapi-fastkit]` table with `managed = true`. |
| 43 | +- **Modernize template contract to be pyproject-first** |
| 44 | + - Template inspection now accepts `pyproject.toml-tpl` as a primary metadata source. |
| 45 | + - Dependency inspection and `read_template_stack` now support `pyproject.toml-tpl` alongside existing files. |
| 46 | + - Template authoring and QA docs were updated for the new contract. |
| 47 | +- **Add pyproject-aware project identity detection** |
| 48 | + - `is_fastkit_project()` now detects FastAPI-fastkit-managed projects from `pyproject.toml` as well as legacy `setup.py`. |
| 49 | + - Standardize the FastAPI-fastkit description marker and `[tool.fastapi-fastkit] managed = true` metadata across shipped pyproject templates. |
| 50 | +- Add `requirements.txt-tpl` to `fastapi-domain-starter` for full package-manager compatibility, including `pip`. |
18 | 51 |
|
19 | 52 | ## v1.2.1 (2026-04-17) |
20 | 53 |
|
|
0 commit comments