feat(unattended): handle whiptail menus and disabled scripts in silent mode
Add phs_whiptail() wrapper function to build.func that transparently
handles whiptail dialogs in unattended/silent mode (PHS_SILENT=1):
- radiolist: auto-selects the ON (default) option
- menu: auto-selects the first option (typically 'Update')
- yesno: auto-confirms (returns 0)
- msgbox: auto-acknowledges (returns 0)
- passwordbox/inputbox: signals skip (returns 1)
Replace all whiptail calls in update_script() functions across 19
ct scripts with phs_whiptail for unattended compatibility.
Affected scripts:
- alpine-docker, alpine-grafana, alpine-loki, alpine-nextcloud
- alpine-redis, alpine-valkey, alpine-vaultwarden, alpine-zigbee2mqtt
- alpine, cronicle, gitea-mirror, homeassistant
- loki, meilisearch, node-red, npmplus
- plex, podman-homeassistant, vaultwarden
Also improve update-apps.sh batch updater:
- Exit code 75 (EX_TEMPFAIL) = disabled/skipped, not a failure
- In unattended mode, failed containers are skipped instead of
aborting the entire update loop
- Update nginxproxymanager.sh to use exit 75 for disabled state
Closes #11620