- .gitea/workflows/tests.yml: run `unittest discover` on push + pull_request.
`core` job (stdlib install, GUI tests skip) is bulletproof; `gui-smoke` job
installs the GUI extra + offscreen Qt libs and runs the suite headless.
- release.yml: add a `test` job and `release: needs: test` so a push to main
can't publish if the tests fail.
No version bump — CI config only; nothing in the shipped app changed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>