v0.3.0 — simplify
Simplification release. v0.2 accreted defensive code through two review rounds — most of it protecting against hostile user input in a Makefile the user wrote themselves. The complexity was fighting the handbook's "confused beginner" reader. This cut pulls the file back toward something readable in one pass.
Removed
- `LOG_DIR` per-env log capture feature and its supporting machinery (SHELL conditional upgrade, dash detection, recipe branching, clean-side validation). Workaround is a shell pipe:
```console
$ make test-py3.12 2>&1 | tee py3.12.log
$ make -j4 test-all --output-sync=target
``` - `clean`'s allowlist validation (refused `/`, `.`, `..`, `.venv;rm`, etc.). Replaced by a single empty-prefix check — the only real accident Makefile.uv can sensibly catch. `UV_VENV_PREFIX=/` is self-sabotage; we shouldn't try to defend against it.
- `sq` shell-quote helper in `help`. Plain `@echo` is fine.
Kept (earning their lines)
- `FORCE` prereq on pattern rules — real Make correctness issue.
- `LINT` origin-check for the Make built-in — real collision.
- Quoted path interpolation (`"$(UV_VENV_PREFIX)$*"`) and `rm -rf --`.
- `DEP_MODE := group` for PEP 735 dependency groups.
- Both examples, dashed-variant handling (`cut -f2-`), Windows CI on tag.
Size
- Makefile.uv: 155 → 85 lines (−45%), fits on one screen.
- smoke.sh: 164 → 126 lines (−23%).
Breaking
- `LOG_DIR` is no longer recognized (silent no-op). Pipe through `tee` yourself for per-env capture.
Install
```bash
curl -sSL https://raw.githubusercontent.com/python-developer-tooling-handbook/makefile.uv/v0.3.0/Makefile.uv -o Makefile.uv
```
Tested on
Linux, macOS, Windows (via Git Bash). CI runs basic + with-matrix + with-groups on ubuntu-latest and macos-latest every push; full three-example suite on windows-latest on every tag.