twine only allows --skip-existing for PyPI/TestPyPI, not custom repositories
like the Forgejo registry. Upload wheels individually and treat an
"already exists" (HTTP 409) response as a skip to keep re-runs idempotent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Allows triggering from the Actions tab; force_all=true builds & publishes
every addon regardless of the changed-files diff, to seed the registry on
the first run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Build a wheel per changed Odoo addon (whool backend, uv) on push to *.0
branches and publish to the Forgejo PyPI package registry. Versions use
whool's native ".N" post-version strategy so each push publishes without a
manual manifest bump. Adds README install instructions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>