ci / web (pull_request) Successful in 1m1s
ci / docs-site (pull_request) Successful in 1m18s
ci / bun-nix (pull_request) Successful in 1m37s
android / android (pull_request) Successful in 4m33s
ci / rust-arm64 (pull_request) Successful in 12m3s
ci / rust (pull_request) Canceled after 29m33s
Merging two PRs seconds apart can leave the older merge sha with no run at all - Gitea attributes the window's runs to the newer head.1e5dca4c(PR #235, the pad Select/KEYCODE_BACK fix) lost its run tob5cace3a12 s later and reached main having never been built, so no canary carries it. Re-running the PR run cannot recover that: a re-run replays the original pull_request event, and all four publish steps are gated on a push, so they stay skipped. Until now the only cure was inventing a filler push touching one of android.yml's paths. Add a workflow_dispatch 'publish' input, default false, and widen the four gates to accept a dispatch that opts in. A plain manual run stays build-only, so a stray click still cannot reach testers. String-typed and compared against 'true' to match apple.yml's testflight input, the form proven on this Gitea.