appleboy/ssh-action's script parameter doesn't set
SSH_ORIGINAL_COMMAND, which deploy.sh needs. Using raw ssh
with the command as an argument works correctly.
Dispatch now validates the command format and routes to a single
deploy.sh that handles any app. This fixes first-deploy failures
for new apps (dispatch no longer needs a static case list) and
simplifies new-app.sh (no deploy script or dispatch update needed).
Also adds input validation to new-app.sh, set -euo pipefail to
deploy scripts, and dnf module reset before nodejs install.