The runner's system CPython 3.12.3 satisfies the '3.12' request, so uv
kept using it and PyInstaller failed: system python is built without
libpython3.x.so. Set UV_PYTHON_PREFERENCE=only-managed and install the
managed interpreter explicitly.
The runner's system CPython is built without a shared libpython3.x.so,
which PyInstaller --onefile requires. setup-uv's python-version input
makes uv provision its managed CPython, which ships the shared library.
Gitea Actions workflow (.gitea/workflows/ci.yml):
- check job: ruff format --check, ruff check, ty check on pushes to main
- release job on v* tags: build a standalone Linux executable with
PyInstaller (--onefile), smoke-test it, create a Gitea release via
the API and upload the binary as an asset
Also add a pyinstaller build dependency group and bump to 0.3.0.