build-apk.sh always builds with --no-cache, which piles up images,
build cache and containers on the runner over time. Add a cleanup
step (if: always(), runs even on failure) that prunes everything via
'docker system prune -af --volumes' or the Podman equivalent, so
self-hosted runners don't fill up their disk.
Runs bun --cwd client run build (tsc -b) on push/PR, then builds the
APK via build-apk.sh and uploads it as a workflow artifact. Also
compatible with Gitea Actions, which reads .github/workflows/ in
addition to .gitea/workflows/.